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 ""

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

2 ответа2

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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .