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

flu*_*mpb 12 permissions su sudo

这是我第一次需要 su 。

我阅读了一篇关于更改 /sys/devices/virtual/backlight/acpi_video0/brightness 中的值以更改笔记本电脑屏幕亮度的文章。

我第一次注意到,我$ sudo echo 10 > brightness什么时候会被拒绝许可。

我使用 su 切换到 root 并# echo 10 > brightness几乎立即改变了我的亮度。

对我来说最后一件奇怪的事情发生在我尝试时# echo 20 > brightness(maxbrightness 文件的值为 15)并且我收到了一个写错误

有人可以向我解释 sudo 和 su 之间的区别吗?了解写入错误将是一个额外的好处。任何帮助、指针和/或链接将不胜感激。

wag*_*wag 18

重定向不能那样工作。附加>到命令后将以调用用户(您)而不是 root 身份运行该重定向。这样做tee

echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness
Run Code Online (Sandbox Code Playgroud)

或者通过在单独的特权 shell 中调用命令:

sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"
Run Code Online (Sandbox Code Playgroud)


Mic*_*zek 9

这不是因为sudo,而是因为您的命令的处理方式;我实际上在这个问题中解释了它。当你做

$ sudo echo 10 > brightness
Run Code Online (Sandbox Code Playgroud)

shell 运行命令sudo echo 10,该命令echo 10以 root 身份运行。然后 shell 尝试打开,brightness以便它可以将输出重定向echo 10到其中,但它不能——您的 shell 正在以您的权限运行,而不是 root。有一些解决方法作为我链接到的问题的答案发布;一个好的是:

$ echo 10 | sudo tee brightness
Run Code Online (Sandbox Code Playgroud)

现在tee是 open brightness,因为它以 root 身份运行,所以它成功了