这是我第一次需要 su 。
我读了一篇关于更改 /sys/devices/virtual/backlight/acpi_video0/brightness 中的值以改变笔记本电脑屏幕亮度的文章。
我第一次注意到,当我愿意时,$ sudo echo 10 > brightness
我会被拒绝。
我使用 su 切换到 root 并# echo 10 > brightness
几乎立即改变了我的亮度。
最后一件奇怪的事情发生在我尝试时# echo 20 > brightness
(maxbrightness 文件的值为 15)并且出现写入错误
有人可以向我解释 sudo 和 su 之间的区别吗?了解写入错误将是一个额外的好处。任何帮助、指示和/或链接将不胜感激。
答案1
重定向不是这样工作的。附加>
到命令将以调用用户(您)而不是 root 身份运行该重定向。这样做与tee
:
echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness
或者通过在单独的特权 shell 中调用该命令:
sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"
答案2
这不是因为sudo
,而是因为命令的处理方式;我实际上解释过这个问题。当你这样做时
$ sudo echo 10 > brightness
shell 运行命令sudo echo 10
,该命令echo 10
以 root 身份运行。然后 shell 尝试打开brightness
,以便将输出重定向到echo 10
其中,但它不能——您的 shell 正在以您的权限运行,而不是 root。有一些解决方法作为我链接到的问题的答案发布;好的一个是:
$ echo 10 | sudo tee brightness
现在tee
是要打开的brightness
,因为它以 root 身份运行,所以成功了
答案3
苏=s巫婆你ser:以不同用户身份使用 shell
须藤=s上层你塞尔做:以root用户执行以下命令。
在您的情况下,以下命令是 only echo 20
,因此只有 echo 20 作为 root 执行(如前所述)。重定向将再次按照您的方式执行。
答案4
您可能想查看/etc/sudoers
文件。如果您的空调未在那里列出,那么您将无法sudo
。