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

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

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

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

rc.local 的最后两行:

sudo hd-idle -i 300

exit 0;

上述 rc.local 工作正常,硬盘在 300 秒后进入待机模式。如果我删除“sudo”并重新启动,硬盘就不会停止旋转。

答案1

hd-idle 需要 root 来处理 /proc/diskstats 中的文件,因为 /proc/ 和 /dev/ 归 root 所有。

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

$sudo usermod -a -G dialout <user-name>

然后你可以尝试访问硬件

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

我认为一些日志记录功能会写入 /var/log/hd-idle,它也属于 root 。

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

答案取自 hd-idle 源代码。

相关内容