![如何将 sudo 命令添加到键盘快捷键?](https://linux22.com/image/1140223/%E5%A6%82%E4%BD%95%E5%B0%86%20sudo%20%E5%91%BD%E4%BB%A4%E6%B7%BB%E5%8A%A0%E5%88%B0%E9%94%AE%E7%9B%98%E5%BF%AB%E6%8D%B7%E9%94%AE%EF%BC%9F.png)
我在一台带有键盘背光的 Sony Vaio 笔记本电脑上运行 Ubuntu 16.04。我可以将此命令输入到终端中,输入“0”以*value*
关闭背光,输入“2”以打开背光。
sudo su -c "echo *value* > /sys/devices/platform/sony-laptop/kbd_backlight"
当我进入设置应用程序创建自定义键盘快捷键并将其绑定到简单的 ctrl 键绑定时,它不起作用。
答案1
您有三个选择。选择其中之一你最喜欢哪一个:
gksu
如果尚未完成,请安装该软件包,并使用gksudo
它来获取 GUI 密码输入对话框弹出,而不是像在终端控制台上那样被询问sudo
(当您将其作为键盘快捷键运行时不存在,因此不起作用)。sudo apt install gksu
您需要绑定到快捷方式的命令是这样的:
gksudo -- bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
使用
pkexec
而不是sudo
。它的工作原理类似于gksudo
并且应该预先安装,但它仅适用于终端命令,如果您想用它以 root 身份运行 GUI 应用程序,则需要特殊配置。但对于您的命令来说,它就足够了。您需要绑定到快捷方式的命令是这样的:
pkexec bash -c 'echo VALUE > /sys/devices/platform/sony-laptop/kbd_backlight'
编写一个简短的脚本来改变亮度,然后配置
sudo
选项NOPASSWD
,以便您可以以 root 身份运行它而无需输入密码。相关问题:如何在没有密码的情况下运行特定的 sudo 命令?
根据你的具体情况,你需要执行以下操作:
编写一个脚本文件,其中包含实现所需目标所需的所有命令,然后以 root 身份运行:
#!/bin/bash if test "$(id -u)" -ne 0 ; then sudo "$0" "$1" exit $? fi if test "$1" -gt 0 ; then echo "$1" > /sys/devices/platform/sony-laptop/kbd_backlight else echo "Invalid argument $1" exit 1 fi
上述脚本将大于零的整数作为命令行参数,并在执行基本健全性检查后将其写入背光控制文件。您也可以修改检查以仅允许值
0
,2
如果您愿意的话,但我将把这留给您决定。此外,它还会检查以哪个用户身份运行,并尝试通过执行自身(
sudo
如有必要)将其权限提升为 root。这意味着您甚至可以sudo
在运行它时省略。将此脚本另存为
/usr/local/bin/set-kbd-backlight
(您可以选择不同的文件名,但目录应保持不变;请注意,写入此位置需要sudo
)确保您的脚本文件具有正确的所有权和权限设置。您将能够以 root 身份运行此脚本而无需密码,因此我们必须确保每个人都可以执行它,但非 root 用户不能编辑它!
sudo chown root:root /usr/local/bin/set-kbd-backlight sudo chmod 755 /usr/local/bin/set-kbd-backlight
现在您可以配置
sudo
以允许以 root 身份运行此脚本而无需密码:通过运行以下命令来编辑您的
sudo
配置文件(而不是任何其他方式!):/etc/sudoers
sudo visudo
includedir /etc/sudoers.d
现在在文件末尾附近的行之前附加以下行,替换USERNAME
为您将以 root 身份授予无密码执行的正确用户名:USERNAME ALL=(root) NOPASSWD: /usr/local/bin/set-kbd-backlight
visudo
按Ctrl+ X,然后Y(或在您的语言环境中代表“是”的任何键)然后退出编辑器Enter。首先运行以
sudo -k
撤销缓存的密码,以防您在当前 shell 会话中的最后 15 分钟内输入了该密码,从而验证它是否正常工作。这对于脚本的工作来说不是必需的,它只是为了测试您是否配置NOPASSWD
正确。然后运行下面的命令来打开和关闭背光,无需
sudo
。您不应被要求输入密码。set-kbd-backlight 0 set-kbd-backlight 2
将命令(
set-kbd-backlight 0
关闭灯、set-kbd-backlight 2
打开灯)绑定到相应的键盘快捷键。