konfigurasi sudoer berbutir halus (argumen baris perintah diizinkan)

20

apakah ada cara langsung untuk memungkinkan pengguna menjalankan (misalnya)

/usr/bin/pacman -S -u

sebagai root, tanpa membiarkannya berlari

/usr/bin/pacman -S -u some_package

?

Garis

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

memungkinkan keduanya, dan

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

tampaknya setara secara semantik.

nisc
sumber

Jawaban:

27

Untuk kasus Anda, coba sesuatu seperti ini:

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

Anda dapat menggunakan pola glob shell seperti [az], [0-9], * dll di file sudoers Anda untuk mengecualikan paket yang cocok dengan pola tertentu.

matthias krull
sumber
3

Tulis skrip yang melakukan apa yang Anda inginkan dan berikan sudo akses ke sana.

Juga pastikan bahwa lingkungan apa pun yang dijalankan tidak memiliki akses ke jaringan sama sekali, atau mereka hanya dapat menggunakan dns mereka sendiri untuk menipu cermin dan kemudian menjalankan kode arbitrer sebagai root ketika diinstal oleh pacman.

Daenyth
sumber
itu bukan cara yang elegan, sudo mendukung secara default kasus yang diberikan tepat
matthias krull
1
Bukan solusi terbaik, tetapi +1 untuk peringatan keamanan
Aaron J Lang