детальная конфигурация sudoers (допустимые аргументы командной строки)


20

Есть ли прямой способ, чтобы позволить пользователю работать (например)

/usr/bin/pacman -S -u

как корень, не позволяя ему бежать

/usr/bin/pacman -S -u some_package

?

Линия

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u

позволяет как, так и

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u ""

кажется семантически эквивалентным.

Ответы:


27

Для вашего случая попробуйте что-то вроде этого:

Cmnd_Alias PACMAN = /usr/bin/pacman -S -u, ! /usr/bin/pacman -S -u some_package
user ALL=(root) NOPASSWD: PACMAN

Вы можете использовать шаблоны глобуса оболочки, такие как [az], [0-9], * и т. Д. В файле sudoers, чтобы исключить пакеты, которые соответствуют определенному шаблону.


3

Напишите скрипт, который делает то, что вы хотите, и предоставьте sudo доступ к нему.

Также убедитесь, что в какой бы среде он не работал, он вообще не имеет доступа к сети, или они могут просто использовать свои собственные dns для подмены зеркала, а затем запускать произвольный код от имени root, когда он устанавливается pacman.


это не элегантный способ, sudo поддерживает по умолчанию точный заданный случай
Matthias Krull

1
Не лучшее решение, но +1 за предупреждение безопасности
Aaron J Lang
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.