所以我正在开发一个程序,为了使用它的全部预期功能,我需要它以 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,如果这有任何实质意义的话。
正如问题的评论中所指出的,适用于我的确切情况的解决方案是删除命令中的引号。把脚本作为
gnome-terminal -- sudo ./app
它工作得很好。还通过添加一行使其在不提示密码的情况下启动
ALL ALL=(root) NOPASSWD: /home/username/app/build/app
到/etc/sudoers
,所以达到了这个问题的最终目的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句