使用 Sudo 无密码访问 /sys/power/state

使用 Sudo 无密码访问 /sys/power/state

在我的计算机上,pm-hibernate 似乎已损坏,但使用该命令echo disk > /sys/power/state似乎可以正常工作。现在我只需要使用 sudo 以普通用户身份访问它。我该怎么做?

该命令sudo echo disk > /sys/power/state只是返回bash: /sys/power/state: Permission denied

另外,我需要在经常使用的脚本中使用它,我怎样才能使它工作而不必输入密码???

答案1

请注意,重定向字符将执行和权限“分开”。在此命令中:

sudo echo disk > /sys/power/state

您所做的是以echo diskroot 身份运行(毫无意义),然后以普通用户身份将其传输到 root 拥有的文件中,这就是您被拒绝权限的原因。

这是一个非常常见的用例,您需要做的是使用 sudo 来实际写入文件的部分,如下所示:

echo disk | sudo tee /sys/power/state

你也可以使用以下命令创建 shell 脚本(文件):

  echo disk > /sys/power/state

例如,将其命名为 script.sh,然后chmod 755 script.sh使用 sudo 运行它:

sudo /wherever/you/put/this/script.sh

至于不需要密码运行命令,之前已经讨论过了:如何在不输入密码的情况下使用 sudo?。这可能有点不安全;你可以控制哪个用户可以以 root 身份执行哪个命令而无需密码,但在这种情况下,你需要允许执行命令,tee这可能会允许恶意用户覆盖任何以 root 身份运行文件。因此请谨慎使用,并请阅读所有文档并了解这样做的安全隐患。

相关内容