Chcę wyłączyć Requtty, aby móc sudo w skryptach, ale wolę wyłączyć go tylko dla jednego polecenia, a nie dla wszystkich. Czy jest to możliwe w konfiguracji sudoers?
Możesz zastąpić domyślne ustawienie opcji, takich jak requiretty
dla konkretnego użytkownika lub określonego polecenia (lub określonego użytkownika uruchamianego jako użytkownik lub host), ale nie dla określonego polecenia, gdy jest wykonywane jako określony użytkownik.
Na przykład, zakładając, że requiretty
jest ustawiony w opcjach kompilacji domyślnie następujące sudoers
plików umożliwia zarówno artbristol
i bob
wykonać /path/to/program
jako root ze skryptu. artbristol
nie potrzebuje hasła, ale bob
musi wprowadzić hasło (prawdopodobnie tty_tickets
jest wyłączone i bob
ostatnio wprowadziło swoje hasło w niektórych terminalach).
artbristol ALL = (root) NOPASSWD: /path/to/program
bob ALL = (root) /path/to/program
Defaults!/path/to/program !requiretty
Jeśli chcesz zmienić ustawienie polecenia z określonymi argumentami, musisz użyć aliasu polecenia (jest to ograniczenie składniowe). Na przykład poniższy fragment pozwala artbristol
na uruchomienie /path/to/program --option
w skrypcie, ale nie /path/to/program
z innymi argumentami.
Cmnd_Alias MYPROGRAM = /path/to/program --option
artbristol ALL = (root) /path/to/program
artbristol ALL = (root) NOPASSWD: MYPROGRAM
Defaults!MYPROGRAM !requiretty
Coś takiego:
myuser ALL=(ALL) NOPASSWD:/usr/local/bin/mycmd
Defaults:myuser !requiretty
/etc/sudoers
ale wydaje się, że nie działa w/etc/sudoers.d/
pliku/etc/sudoers.d/
pliku. CentOS 7.1/etc/sudoers.d/
. CentOS 7.5 :(Odkryłem, że działa dobrze dla mnie przy użyciu pliku w
/etc/sudoers.d
. Jest to dość proste do zweryfikowania.Najpierw stworzyłem
/etc/sudoers.d/01build
z zawartością:Następnie przetestowałem, że to działa:
Następnie zmodyfikowałem
/etc/sudoers.d/01build
i usunąłemDefaults:
linię, a następnie otrzymuję:źródło