![使用 Sudo 无密码访问 /sys/power/state](https://linux22.com/image/825752/%E4%BD%BF%E7%94%A8%20Sudo%20%E6%97%A0%E5%AF%86%E7%A0%81%E8%AE%BF%E9%97%AE%20%2Fsys%2Fpower%2Fstate.png)
在我的计算机上,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 disk
root 身份运行(毫无意义),然后以普通用户身份将其传输到 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 身份运行文件。因此请谨慎使用,并请阅读所有文档并了解这样做的安全隐患。