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


11

这是我第一次需要su的情况。

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

我首先注意到,我$ sudo echo 10 > brightness什么时候会被拒绝。

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

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

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


Answers:


17

重定向不能那样工作。附加>到命令将以调用用户(您)而不是以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"

像开球的技巧。在我15年的unix sysadmining期间,这不是我想到的:-)显而易见。
鲨鱼先生

8

这不是因为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

su = s witch u ser:以其他用户身份使用shell

须藤= 小号 UPER ü SER DO:执行如下命令根用户。

在您的情况下,以下命令只是echo 20,因此只有echo 20被作为root执行(如前所述)。重定向将再次执行。


2

您可能需要看一下/etc/sudoers文件。如果您的帐户未在此处列出,则您将无法sudo


是的,但是在这种情况下,您会收到一条特定的错误消息(“用户名不在sudoers文件中”)
Michael Mrozek
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.