На этот вопрос уже есть ответ здесь:
Я запускаю несколько скриптов для проверки статуса UFW и хотел бы для запуска sudo ufw status
без необходимости выполнять sudo
. Я надеялся найти группу firewall или ufw , в которую можно было бы добавить себя, но не нашел.
Как я могу разрешить любому пользователю X выполнять статус ufw
, не будучи суперпользователем и не запрашивая пароль sudo ?
ОБНОВЛЕНИЕ :
Я хотел попробую добавить мой собственный файл в /etc/sudoers.d/
, но поленился, поэтому решил скопировать уже существующий, например:
sudo cp /etc/sudoers.d/mintupdate /etc/sudoers.d/firewall_status
Не делайте этого! Вы не сможете выполнить sudo или снова войти в систему. Пришлось делать восстановление загрузки. Вместо этого используйте:
sudo visudo -f /etc/sudoers.d/ufwstatus
Теперь просто следуйте принятому ответу ниже.
Вот /etc/sudoers.d/
файл, который работает на меня:
$ sudo cat /etc/sudoers.d/ufwstatus
Cmnd_Alias UFWSTATUS = /usr/sbin/ufw status
%ufwstatus ALL=NOPASSWD: UFWSTATUS
Затем добавьте новую "ufwstatus" группу (здесь добавленный как системная группа):
sudo groupadd -r ufwstatus
Ваш в других отношениях непривилегированный пользователь должен быть добавлен к ufwstatus
группа, например.
sudo gpasswd --add testuser ufwstatus
Для изменения для вступления в силу пользователь должен войти в систему снова:
su - testuser
Затем
testuser@xenial-vm:~$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 192.168.1.0/24
3389/tcp ALLOW 192.168.1.0/24
111 ALLOW 192.168.1.0/24
2049 ALLOW 192.168.1.0/24
но другой ufw
команды запрещены (даже небольшие варианты, такой как status --verbose
):
testuser@xenial-vm:~$ sudo ufw status --verbose
Sorry, user testuser is not allowed to execute '/usr/sbin/ufw status --verbose' as root on xenial-vm.
testuser@xenial-vm:~$ sudo ufw disable
Sorry, user testuser is not allowed to execute '/usr/sbin/ufw disable' as root on xenial-vm.