sudo 权限被拒绝,但 su 授予权限

sudo 权限被拒绝,但 su 授予权限

这是我第一次需要 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

相关内容