我想运行以下命令
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"
。