Ich muss /etc/sudoers
ein Skript bearbeiten , um Inhalte zu weißen Listen hinzuzufügen oder daraus zu entfernen.
Angenommen, ich habe einen Befehl, der für eine normale Datei funktioniert, wie könnte ich ihn anwenden /etc/sudoers
?
Kann ich es kopieren und ändern und dann visudo
das Original durch die geänderte Kopie ersetzen lassen? Durch die Bereitstellung meines eigenen Skripts in $EDITOR
?
Oder kann ich einfach die gleichen Schlösser verwenden und cp
?
Bei der Frage geht es mehr um potenzielle Probleme als nur darum, etwas zu finden, das funktioniert.
echo "$USER ALL=NOPASSWD:/usr/bin/rsync" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/rsync')
.echo "$CONFIGLINE" | (EDITOR="tee -a" visudo)
-a
Flag anEDITOR="tee"
: Es wird eine Zeile an die Datei anhängen und nicht nur die erste Zeile überschreiben. Ich habe den Unterschied zuerst nicht verstanden und konnte mir nicht vorstellen, wie ich ihn anhängen soll. Ich hoffe, ich kann einige Leute einige Zeit finden, indem ich das direkt zeige ;-)Verwenden Sie dazu visudo mit einem benutzerdefinierten Editor. Dies löst alle Rennbedingungen und "Hack" -Probleme mit Brians Lösung.
Dieses Skript fügt die Zeile "# Dummy change to sudoers" am Ende von sudoers hinzu. Keine Hacks und keine Rennbedingungen.
Kommentierte Version, die erklärt, wie dies tatsächlich funktioniert:
quelle
--enable-env-editor
wurde. Andernfalls wird die Editorvariable nur dann verwendet, wenn es sich um einen kleinen Satz bekannter Werte handelt.sudo -E
aus dem ersten Befehl entfernt habe.Sie sollten Ihre Änderungen an einer temporären Datei vornehmen und dann visudo -c -f sudoers.temp verwenden, um zu bestätigen, dass die Änderungen gültig sind, und sie dann über / etc / sudoers kopieren
quelle
Unter Debian und seinen Derivaten können Sie ein benutzerdefiniertes Skript
/etc/sudoers.d/
mit Rechten in ein Verzeichnis einfügen .0440
Weitere Informationen finden Sie unter /etc/sudoers.d/README .Es könnte helfen.
quelle
visudo soll die menschliche Schnittstelle für die Bearbeitung sein
/etc/sudoers
. Sie können dasselbe erreichen, indem Sie die Datei direkt ersetzen. Sie müssen sich jedoch um die gleichzeitige Bearbeitung und Syntaxüberprüfung kümmern. Beachten Sie dier--r-----
Berechtigungen.quelle
Wenn Sie das
sudo
Hinzufügen von Einträgen/etc/sudoers.d
zulassen, können Sie diese Antwort von @ dragon788 verwenden:https://superuser.com/a/1027257/26022
Grundsätzlich
visudo
überprüfen Sie die Datei, bevor Sie sie kopieren/etc/sudoers.d
, damit Sie sicher sein können, dass Siesudo
für niemanden kaputt gehen .Dies überprüft es und gibt Erfolg (0) zurück, wenn es gültig ist, so dass Sie es mit verwenden können
if
,&&
und andere Script Boolesche Operationen. Sobald Sie validiert haben, kopieren Sie/etc/sudoers.d
es einfach in und es sollte funktionieren. Stellen Sie sicher, dass es Root gehört und nicht von anderen beschreibbar ist.quelle
Richten Sie einen benutzerdefinierten Editor ein. Grundsätzlich handelt es sich um ein Skript, das den Dateinamen (in diesem Fall /etc/sudoers.tmp) akzeptiert und diesen ändert und an Ort und Stelle speichert. Sie können also einfach in diese Datei schreiben. Wenn Sie fertig sind, beenden Sie das Skript, und visudo kümmert sich darum, die eigentliche sudoers-Datei für Sie zu ändern.
quelle
#!/bin/sh; echo "# my changes to sudoers" >> $1; exit 0
Es scheint für mich zu funktionieren.Viele Antworten, habe mit sudo for yonks gearbeitet, musste aber bis jetzt die Setup-Konfiguration nicht automatisieren. Ich habe eine Mischung aus einigen der obigen Antworten verwendet und meine Konfigurationszeile in den Include-Speicherort /etc/sudoers.d geschrieben, damit ich die Haupt-Sudoers-Datei nicht ändern muss. Dann habe ich diese Datei auf Syntax überprüft. Ein einfaches Beispiel unten:
Schreiben Sie Ihre Zeile in eine Sudoers-Include-Datei:
Überprüfen Sie, ob Ihre Sudoer-Include-Datei die Visudo-Syntaxprüfungen bestanden hat:
quelle
Nur um den obigen Antworten eine weitere Option hinzuzufügen: Wenn die Rennbedingung kein großes Problem darstellt, kann der folgende Befehl verwendet werden, um das manuelle Kopieren einer geänderten Datei in zu vermeiden
/etc/sudoers
Dadurch wird sichergestellt, dass die neue Datei mit dem Berechtigungsupdate überprüft und korrekt installiert wird.
Beachten Sie, dass bei einem Fehler in der
/tmp/sudoers.new
Dateivisudo
eine Benutzereingabe erforderlich ist. Es ist daher ratsam, diesevisudo -c -f /tmp/sudoers.new
zuerst zu überprüfen .quelle
Ich denke, die einfachste Lösung ist:
Erstellen Sie ein Skript addsudoers.sh
und rufen Sie es mit den Benutzern auf, die Sie hinzufügen möchten, als:
Die vollständige Erklärung finden Sie in dieser Antwort: Hinzufügen von Benutzern zu Sudoern über ein Shell-Skript
Grüße!
quelle
Versuchen Sie es zu wiederholen. Sie müssen es jedoch in einer Subshell ausführen. Beispiel:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
quelle
Dies funktionierte für mich basierend auf dem, was andere hier gepostet haben. Wenn ich das Skript anderer Leute verwendete, öffnete es visudo für mich, machte aber keine Bearbeitung. Dies machte die Bearbeitung, die ich brauchte, um allen Benutzern, einschließlich Standardbenutzern, die Installation von Java 7u17 für Safari / Firefox zu ermöglichen.
Dies fügte die% every bla bla bla am Ende der Sudoers-Datei hinzu. Ich musste das Skript so ausführen.
Viel Glück: D.
quelle