使用nohup在后台运行程序时sudo错误

使用nohup在后台运行程序时sudo错误

我的终端中运行一个简单的 exec,program.py使用nohup.这是脚本:

cd "$(dirname "$0")"
sudo -v
nohup sudo python3 program.py &
killall Terminal

它提示我输入密码,我这样做了,它接受密码会终止终端,但程序失败,并且此错误被附加到nohup.outsudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper

我尝试做

sudo -v
nohup sudo -S python3 program.py &

但这给出了错误

sudo: no password was provided

即使我输入了密码

提前致谢!

答案1

也许改变命令顺序:

sudo nohup python3 program.py &

这种方式是 sudo,在获取密码后,启动带有参数的 nohup 命令并断开 python3 与终端的连接,但再仔细想想,这意味着除了必须在/usr/bin/nohup python3 program.pysudoers 文件中授权外,进入后台的是 sudo 命令,而不是 nohup 命令。

因此,要将后台操作与权限提升分开,请创建一个/root/mypylauncher.sh包含该nohup python3 program.py & 命令的脚本,并使用sudo /root/mypylauncher.sh. (如果该脚本位于世界可读的目录中,chown root:rootchmod go-w该脚本可以保证系统安全,免受恶意之手)。

相关内容