使用 sudo 在终端中运行启动程序

使用 sudo 在终端中运行启动程序

我需要在终端中运行一个 python 脚本,myscript.py在启动时(在 Lubunt 上)。此脚本需要 root 权限。

我已经设置了一个.desktop运行以下命令的文件:

lxterminal --command="python /home/d/Jarvis/alarm.py && /bin/bash"

终端窗口在启动时打开并运行脚本,但当 Python 脚本返回错误时会关闭(因为它不是以 root 身份运行)。当我将更改为此Exec=...

lxterminal --command="sudo python /home/d/Jarvis/alarm.py && /bin/bash"

... (在命令前加上sudo)这个命令是有效的。然而,终端在启动时打开并显示

[sudo] password for d: \

提示,要求我输入密码。我希望启动时 python 脚本的执行完全自动,无需用户交互。

我怎样才能做到这一点?

答案1

可以通过 运行以 root 身份启动时执行的自定义脚本rc.local

/etc/rc.local使用root权限编辑:

sudo nano /etc/rc.local

并把线

python /home/d/Jarvis/alarm.py

就在最后一行之前,应该写着exit 0。重新启动以查看它是否有效。

答案2

如果您希望在登录时而不是启动时使用它(因为我不知道如何在 X 服务器未启动的情况下打开 LXTerminal),您必须在 /etc/sudoers 文件中添加一个例外,这样就不会提示您输入密码。

为此,运行sudo visudo然后添加以下内容:

<your username> ALL = NOPASSWD: /home/d/Jarvis/alarm.py

确保将此添加到文件末尾以使其正常工作。我还会将权限设置alarm.py为可执行文件以使其正常工作。因此,请执行以下操作将其设置为可执行文件:

chmod +x /home/d/Jarvis/alarm.py

希望能帮助到你!

相关内容