Sudo 非密码访问 /sys/power/state

cod*_*ith 3 permissions bash root sudo

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

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

另外,我需要在经常使用的脚本中使用它,我该如何制作它以便我不必输入密码即可运行???

roa*_*dmr 6

注意重定向字符“分离”执行和权限。在这个命令上:

sudo echo disk > /sys/power/state
Run Code Online (Sandbox Code Playgroud)

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

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

echo disk | sudo tee /sys/power/state
Run Code Online (Sandbox Code Playgroud)

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

  echo disk > /sys/power/state
Run Code Online (Sandbox Code Playgroud)

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

sudo /wherever/you/put/this/script.sh
Run Code Online (Sandbox Code Playgroud)

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