以具有可用 sudo 权限的不同用户身份运行命令

以具有可用 sudo 权限的不同用户身份运行命令

我想运行以下命令

echo 1000 > /sys/class/backlight/intel_backlight/brightness

我不能像下面那样这样做,因为 bash 是实际上将输出定向到根拥有的亮度文件的过程。

sudo echo 1000 > /sys/class/backlight/intel_backlight/brightness

那么我将如何运行这个命令但是我

  • 不想被提示输入 root 密码
  • 不想以 root 身份登录,执行命令并退出
  • 应使用当前用户可用的 sudo 权限来执行命令

答案1

你问的是不可能的。您当前的进程不是由 root 运行的,只有 root 用户可以发出setuid.因此,必须首先以 root 用户身份启动另一个进程(通过使用 setuid 可执行文件,在本例中为sudo)。

这是最接近您所要求的内容,并删除了不可能的内容:

echo 1000 | sudo tee /sys/class/backlight/intel_backlight/brightness

如果您不希望提示输入密码,请添加一行/etc/sudoers(使用visudo),如下所示(替换rag为您的用户名):

Cmnd_Alias BACKLIGHT = /usr/bin/tee /sys/class/backlight/intel_backlight/brightness, ! /usr/bin/tee /sys/class/backlight/intel_backlight/brightness *
rag ALL=(root) NOPASSWD: BACKLIGHT

答案2

这也有效。我不介意被提示输入我自己的密码

sudo bash -c "echo 1000 > /sys/class/backlight/intel_backlight/brightness"

相关内容