Мне нужно запустить команду /usr/bin/evrouter
как root, без запроса пароля.
Видеть http://wiki.xbmc.org/index.php?title=HOW-TO:Gyration_USB_remote_in_Ubuntu_for_XBMC_using_evrouter#Set_Up_Sudo для следующего примера.
мой 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
При запуске evrouter после изменения файла sudeurs я получаю это
/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
Вы можете сузить его, начав с очень широких разрешений 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 или аналогичных. Проверить журналы.
Я думаю, вы забыли добавить конец строки в свой файл sudoers: lucian ALL=(root) NOPASSWD: /usr/bin/evrouter -d /dev/input/by-id/usb-TopSeed_Tech_Corp._USB_IR_Combo_Device-*
Собственно, можно только запустить команду /usr/bin/evrouter
без параметра.
Я исправил это, установив suid
в нужном приложении, даже если оно не очень безопасно, это мой локальный рабочий стол, поэтому я доверяю его безопасности :)