我需要能够/usr/bin/evrouter
以 root 身份运行该命令,而无需输入密码。
我的sudoeurs
文件如下所示:
lucian@lucian-P35-DS3:~$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
lucian ALL=(root) NOPASSWD: /usr/bin/evrouter
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.d
在更改 sudeurs 文件后运行 evrouter 时,我得到了这个
/usr/bin/evrouter -d /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-*
/usr/bin/evrouter: error opening device /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-event-ir: Permission denied
编辑:输出应该是:
lucian@lucian-P35-DS3:~$ sudo /usr/bin/evrouter -d /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-*
[sudo] password for lucian:
device 0: /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-event-ir: TopSeed Tech Corp. USB IR Combo Device
device 1: /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-if01-event-ir: TopSeed Tech Corp. USB IR Combo Device
/usr/bin/evrouter: error querying device /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-if01-ir: Inappropriate ioctl for device
/usr/bin/evrouter: error querying device /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-ir: Inappropriate ioctl for device
Display name: :0
答案1
你可以通过从非常宽泛的 sudoers 权限开始,然后逐步缩小范围来缩小范围。首先在你的 中尝试此操作/etc/sudoers
:
lucian ALL = NOPASSWD: ALL
如果可行,请尝试使其更具限制性:
lucian ALL = NOPASSWD: /usr/bin/evrouter
进而
lucian ALL = (root) NOPASSWD: /usr/bin/evrouter
还可以尝试使用 将 lucian 放入 sudo 组中vigr
。这应该可行,通过 sudoers 文件中的最后一个规范(尽管权限会比您想要的更广泛)。
另外,sudo 应该记录到 /var/log/messages 或 /var/log/sudo.log 或类似文件。检查日志。
答案2
我认为您忘记在 sudoers 文件中添加行尾:
lucian ALL=(root) NOPASSWD: /usr/bin/evrouter -d /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-*
实际上,您只能启动不带参数的命令/usr/bin/evrouter
。
答案3
我已经通过设置suid
所需的应用程序解决了这个问题,即使它不是很安全,但它是我的本地桌面,所以我相信它是安全的:)