为什么 hd-idle 需要 sudo 才能在 rc.local 中运行?

Dom*_*icM 6 server sudo startup-applications 14.04

我添加了一个运行“hd-idle”的命令。它似乎需要以 root 身份运行,否则它不会按照指示降低驱动器的转速。手动或通过 rc.local 执行时,行为似乎相同。如果重要的话,hd-idle 是用 make install 编译的,而不是用 apt-get 安装的。

从这个站点上的另一个问题我知道 rc.local 以 root 身份运行,那么为什么我仍然需要为我的 hd-idle 添加 sudo 才能运行?

rc.local 的最后两行:

sudo hd-idle -i 300

exit 0;
Run Code Online (Sandbox Code Playgroud)

上述 rc.local 按预期工作,硬盘驱动器在 300 秒后进入待机模式。如果我删除“sudo”并重新启动硬盘驱动器永远不会停止。

j0h*_*j0h 1

hd-idle 需要 root 才能处理 /proc/diskstats 中的文件,因为 /proc/ 和 /dev/ 由 root 拥有。

我不建议更改所有权,但也许您可以将您的用户帐户添加到拨出组中。

$sudo usermod -a -G dialout <user-name>
Run Code Online (Sandbox Code Playgroud)

然后你可以尝试做一些事情,比如访问硬件

您还可以尝试将组权限更改为 /proc/diskstats 以包含 dialout 组。(我不建议这样做。但你可以尝试一下)

我认为一些日志记录功能会写入 /var/log/hd-idle ,它也由 root 用户拥有。

我认为您可以修改源代码,并将用户添加到 diaout 组,以使该软件作为非明确的 root 用户运行,但我建议谨慎行事。

答案取自 hd-idle 源代码。