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。
另外,我需要在经常使用的脚本中使用它,我该如何制作它以便我不必输入密码即可运行???
注意重定向字符“分离”执行和权限。在这个命令上:
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身份覆盖任何文件。因此请谨慎使用并阅读所有文档并了解这样做的安全隐患。