детальная конфигурация 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 ""

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

NISC
источник

Ответы:

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.

Daenyth
источник
это не элегантный способ, sudo поддерживает по умолчанию точный заданный случай
Matthias Krull
1
Не лучшее решение, но +1 за предупреждение безопасности
Aaron J Lang