因此,我正在开发一个程序,为了使用其全部预期功能,我需要它以 root 权限运行 - 否则它无法访问 /dev/spidev0.0。我必须让它在系统启动时以 root 权限运行。
我创建了一个脚本,它会进入包含我的可执行文件的目录,并运行一个终端实例,并将运行可执行文件的命令作为参数传递,如下所示
#!/bin/bash
cd /home/username/app/build
gnome-terminal -- "sudo ./app"
并将其放置在启动应用程序中。重新启动主板后,我收到一个终端实例,其中显示错误消息“没有这样的文件或目录”。一切都运行顺利,但是我应该删除“sudo”部分。问题是,我需要“sudo”。
sudo ./app
如果在系统已启动时在终端中使用,效果很好。我还尝试将可执行文件的副本放在 /usr/bin 和 /sbin 中,然后通过带有 的脚本启动它们gnome-terminal -- "sudo app"
,但无济于事。
如果可能的话,如何在启动时以 root 权限正确运行可执行文件?我的 Ubuntu 版本是 18.04 LTS,如果有任何实质性内容的话。
答案1
对我的具体情况有效的解决方案是删除命令中的引号,如问题评论中指出的那样。在脚本中输入
gnome-terminal -- sudo ./app
它运行得很好。还可以通过添加一行来让它启动而不提示输入密码
ALL ALL=(root) NOPASSWD: /home/username/app/build/app
至/etc/sudoers
,这样关于这个问题的最终目的就达到了。