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