Jeśli dobrze rozumiem twoje komentarze, problem polega na tym, że polecenie zostanie wydane przez połączenie, które nie ma możliwości wprowadzenia hasła, którego domyślnie wymaga sudo. Ponadto w wielu dystrybucjach systemu operacyjnego sudo będzie domyślnie wymagało TTY - czego ten program może nie mieć.
Jednak sudo może mieć bardzo szczegółową strukturę uprawnień, dzięki czemu jeden lub więcej użytkowników może wydać jedno polecenie bez hasła i TTY. Poniżej przedstawię trzy sposoby skonfigurowania tego do własnych potrzeb. Niezależnie od tego, który wybierzesz, użytkownik będzie mógł wydać polecenie sudo rndc reload
bez konieczności wprowadzania hasła.
(Również, może to być konieczne, ale ... proszę pamiętać, aby zrobić kopię zapasową pliku sudoers przed jego edycję, aby utrzymać skorupę gdzie jesteś otwarty główny w przypadku trzeba przywrócić do kopii zapasowej, a do edycji używając go visudo
zamiast sudo vi /etc/sudoers
. Mam nadzieję, że te środki ostrożności będą niepotrzebne, ale ... lepiej je mieć i nie potrzebować ich niż na odwrót!)
1. Jeśli nie chcesz wymagać TTY dla jakichkolwiek żądań
Najłatwiejszym sposobem na pozbycie się wymagań TTY (jeśli taki istnieje) jest upewnienie się, że wiersz zaczynający się na Defaults
in /etc/sudoers
nie zawiera słowa requiretty
- zamiast tego powinien zawierać !requiretty
. Jednak jeśli to zrobisz, oznacza to, że żadne polecenie sudo nie będzie wymagać tty!
Będziesz także musiał dodać linię
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. Jeśli chcesz wymagać TTY dla wszystkich użytkowników oprócz tego
Można to zrobić, ustawiając wartość domyślną dla tego jednego użytkownika, na przykład:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. Jeśli chcesz zażądać TTY dla wszystkich poleceń oprócz tego jednego polecenia tego jednego użytkownika
Jest to nieco bardziej złożone, ze względu na składnię pliku sudoers. Musisz utworzyć alias polecenia dla polecenia, a następnie ustawić domyślny alias polecenia, na przykład:
Cmnd_Alias RNDC_CMD = /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
Defaults!RNDC_CMD !requiretty
rndcuser ALL = (root) NOPASSWD: RNDC_CMD
sudo
. Jakie są twoje obiekcje biznesowe wobec jego użyciasudo
w tym celu?