drobnoziarnista konfiguracja sudoers (dozwolone argumenty wiersza poleceń)

20

czy istnieje prosty sposób, aby pozwolić użytkownikowi na uruchomienie (na przykład)

/usr/bin/pacman -S -u

jako root, nie pozwalając mu na bieganie

/usr/bin/pacman -S -u some_package

?

Linia

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

pozwala zarówno, jak i

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

wydaje się semantycznie równoważny.

nisc
źródło

Odpowiedzi:

27

W twoim przypadku spróbuj czegoś takiego:

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

Możesz użyć wzorców globu powłoki, takich jak [az], [0-9], * itd. W pliku sudoers, aby wykluczyć pakiety pasujące do określonego wzorca.

Matthias Krull
źródło
3

Napisz skrypt, który robi, co chcesz i daj sudo do niego dostęp.

Upewnij się także, że w jakimkolwiek środowisku, w którym jest uruchomiony, nie ma w ogóle dostępu do sieci, lub mogą po prostu użyć własnych dns, aby sfałszować kopię lustrzaną, a następnie uruchomić dowolny kod jako root, gdy zostanie zainstalowany przez Pacmana.

Daenyth
źródło
to nie jest elegancki sposób, sudo domyślnie obsługuje dokładnie podany przypadek
matthias krull
1
Nie najlepsze rozwiązanie, ale +1 za ostrzeżenie dotyczące bezpieczeństwa
Aaron J Lang