Wenn ich Ihre Kommentare richtig verstehe, besteht das Problem darin, dass der Befehl über eine Verbindung ausgegeben wird, die nicht in der Lage ist, das Kennwort einzugeben, das sudo standardmäßig anfordert. Außerdem benötigt sudo in vielen Betriebssystemdistributionen standardmäßig ein TTY, über das dieses Programm möglicherweise nicht verfügt.
Sudo verfügt jedoch über eine sehr fein abgestimmte Berechtigungsstruktur, die es einem oder mehreren Benutzern ermöglicht, einen bestimmten Befehl ohne Kennwort und TTY auszugeben. Im Folgenden werden drei Möglichkeiten gezeigt, wie Sie dies für Ihre Anforderungen konfigurieren können. Welchen Sie auch wählen, der Benutzer kann den Befehl jetzt ausführen, sudo rndc reload
ohne ein Kennwort eingeben zu müssen.
(Dies kann auch unnötig sein, aber ... Bitte denken Sie daran, vor dem Bearbeiten eine Sicherungskopie Ihrer sudoers-Datei zu erstellen, um eine Shell zu erhalten, in der Sie als Root angemeldet sind, falls Sie zur Sicherung zurückkehren und diese bearbeiten müssen es verwendet visudo
statt sudo vi /etc/sudoers
. Hoffentlich werden diese Vorsichtsmaßnahmen wird nicht notwendig sein, aber ... besser , sie zu haben und müssen sie nicht als umgekehrt!)
1. Wenn Sie kein TTY für Anfragen benötigen möchten
Der einfachste Weg, die TTY-Anforderungen (sofern vorhanden) zu beseitigen, besteht darin, sicherzustellen, dass die mit Defaults
in beginnende Zeile /etc/sudoers
nicht das Wort enthält, requiretty
sondern es enthalten sollte !requiretty
. Wenn Sie dies jedoch tun, bedeutet dies, dass für keinen sudo-Befehl ein tty erforderlich ist!
Sie müssen auch die Zeile hinzufügen
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
2. Wenn Sie ein TTY für alle Benutzer mit Ausnahme dieses Benutzers benötigen möchten
Dies kann durch Festlegen eines Standardwerts für diesen einen Benutzer wie folgt erfolgen:
Defaults:rndcuser !requiretty
rndcuser ALL = (root) NOPASSWD: /path/to/rndc reload, /path/to/dnssec-keygen, /path/to/other/program
3. Wenn Sie ein TTY für alle Befehle außer diesem einen Befehl von diesem einen Benutzer anfordern möchten
Dies ist aufgrund der Syntax der sudoers-Datei etwas komplexer. Sie müssen einen Befehlsalias für den Befehl erstellen und dann einen Standard für diesen Befehlsalias festlegen, wie folgt:
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
ist. Was sind Ihre geschäftlichen Einwände gegen seine Verwendungsudo
dafür?