我写了一个python脚本来访问需要root特权的系统功能。通过使用exec
运行另一个Python脚本文件“ config.py”来配置此“主”脚本,该脚本文件将由我的脚本用户编写并在我的脚本中配置一些状态变量。
主脚本文件是root拥有的,而配置文件是用户拥有的(因为我的脚本用户希望修改此文件)。
显然这是不理想的,因为我的脚本的用户可以在配置脚本中运行根级别的命令。即使主文件是在根目录下运行的,也可以在用户级别运行配置文件吗?
您可以创建一个特殊用户来执行脚本用户提供给您的命令。确保此用户已锁定到您的安全要求所指示的位置。
假设您希望此用户名是scriptkiddie
(出于笑),那么您可以通过以下方式创建该用户。
$ useradd scriptkiddie
然后,包装将要在nmap -Pn -p22 10.0.0.0/8
命令中代表脚本用户执行的脚本的所有系统命令(这里将使用root
,该命令需要runuser
。)>
runuser
将在您指定的任何用户的上下文中运行您提供的任何内容。
$ runuser -l scriptkiddie -c 'nmap -Pn -p22 10.0.0.0/8'
在Python中,您可以使用
format(...)
注入提供给您的任何命令。
"runuser -l scriptkiddie -c {}".format(user_cmd)
此方法将阻止任何用户在
root
上下文中运行命令,因为所有命令都将在新用户scriptkiddie
的上下文中运行。