我有一个执行某些nagios
配置的 python 脚本。该脚本以具有完全 sudo 权限的用户身份运行(用户可以使用 sudo 运行任何命令,无需密码提示)。配置的最后一步是这样的:
open(NAGIOS_COMMAND_FILE, 'a').write(cmdline)
只能由 root 写入,因此该NAGIOS_COMMAND_FILE
命令应由 root 运行。我可以想到两种方法来实现这一点(都不能令人满意):
- 以 root 身份运行整个脚本。我不喜欢这样做,因为我的脚本中的任何错误都将以完全的 root 权限执行。
- 将
open(NAGIOS_COMMAND_FILE, 'a').write(cmdline)
命令放在单独的脚本中,并使用subprocess
库调用该脚本,使用 sudo。我不喜欢仅仅为了运行一个命令而创建一个额外的脚本。
我想在我当前的脚本中,没有办法只为单个命令更改正在运行的用户,还是我错了?