Discussion:
visudo
(zu alt für eine Antwort)
Günther Zander
2006-04-28 06:06:44 UTC
Permalink
Hallo zusammen,
ich habe hier ein kleines Problem (SuSE 9.3).

Ich habe in einem Script die Datei /etc/sudoers geändert. Um diese
Änderungen zu übernehmen muß ich anschließend das Programm visudo händisch
aufrufen und mit "ESC :wq Enter" wieder schließen.

Versuche dieses zu automatisieren durch eine Eingabeumlenkung "<"
scheiterten. Es kam immer die Meldung, das diese Eingabe nicht von einem
Terminal kommt und visudo deswegen beendet wird ohne die Datei neu zu
speichern.

Wer hat eine Idee wie ich dieses in einem Script einbauen kann? Meine
bisherige Internetrecherche brachte mich hier nicht weiter.

Gruß
Adalbert Michelic
2006-04-28 06:25:49 UTC
Permalink
Post by Günther Zander
ich habe hier ein kleines Problem (SuSE 9.3).
Ich habe in einem Script die Datei /etc/sudoers geändert. Um diese
Änderungen zu übernehmen muß ich anschließend das Programm visudo händisch
aufrufen und mit "ESC :wq Enter" wieder schließen.
Wie bitte? Was gibts da zu übernehmen? Reinschreiben, geht. Wenns
Dir um die Syntaxprüfung geht - visudo -c. Und aufpassen, daß da
Mist drinnen landet.


Adalbert
Günther Zander
2006-04-28 06:42:08 UTC
Permalink
Adalbert Michelic wrote:

Wenn mittels eines Scripts die Datei /etc/visudoers geändert wird, so stehen
die Änderungen zwar in der Datei, werden aber nicht vom System übernommen,
da das Programm visudo nicht ausgeführt wurde. Auch ein Neustart hilft hier
nicht.

Diese Änderungen werden erst übernommen, wenn das Programm visudo einmal
aufgerufen und wieder beendet wird. Und genau diesen Aufruf des Programms
visudo und dessen Beendigung möchte ich auch in das Script programmieren.

Gruß Günther
Wolfgang Karall
2006-04-28 06:55:49 UTC
Permalink
Post by Günther Zander
Wenn mittels eines Scripts die Datei /etc/visudoers geändert wird, so
stehen die Änderungen zwar in der Datei, werden aber nicht vom System
übernommen, da das Programm visudo nicht ausgeführt wurde. Auch ein
Neustart hilft hier nicht.
Diese Änderungen werden erst übernommen, wenn das Programm visudo
einmal aufgerufen und wieder beendet wird. Und genau diesen Aufruf des
Programms visudo und dessen Beendigung möchte ich auch in das Script
programmieren.
Sprechen wir hier vom gleichen sudo? Steht obiges irgendwo dokumentiert?
Warum funktioniert hier das Editieren von /etc/sudoers mit sed und die
Wirkung tritt sofort ein?

lg
WK
--
______________________________________________________________________
Wolfgang Karall mailto: ***@spiney.org GPG: 0x172CC057
GPGKey fingerprint: F11F 50F8 96B7 C8B5 6D25 AEDE BA1C 0955 172C C057
- Student of Computer Science at the Vienna University of Technology -
Adalbert Michelic
2006-04-28 07:30:41 UTC
Permalink
Post by Günther Zander
Wenn mittels eines Scripts die Datei /etc/visudoers geändert wird, so stehen
die Änderungen zwar in der Datei,
Von welcher Datei reden wir jetzt? Vorhin wars noch die
/etc/sudoers.
Post by Günther Zander
werden aber nicht vom System übernommen,
da das Programm visudo nicht ausgeführt wurde. Auch ein Neustart hilft hier
nicht.
Änderungen werden nicht vom System übernommen? visudo ändert eine
Kopie der /etc/sudoers, tritt Dir bei Syntaxfehlern ggf. auf die
Zehen und wenn Du fertig bist, überschreibts die /etc/sudoers damit.
Mehr macht das Vieh nicht, da gibts nichts zu übernehmen.

Schau ihm halt mal per strace visudo 2>/tmp/strace-visudo auf die
Fingern, was es so alles angreift, wenn Du Dir sicher bist, daß es
irgendwas anderes auch angreifen würde.


Adalbert
Günther Zander
2006-04-28 09:08:19 UTC
Permalink
Adalbert Michelic wrote:

Danke für den Tipp. Ich habe damit herausfinden können, das die
Datei /etc/sudoers, wenn diese durch ein Script bearbeitet wurde, die
Rechte 644 hat. Ändert man nun diese Rechte wieder auf 640 so sind alle
Probleme behoben. Sudo arbeitet nur mit der Datei wenn diese die Rechte 640
besitzt.

Gruß Günther
Wolfgang Karall
2006-04-28 10:10:00 UTC
Permalink
Danke für den Tipp. Ich habe damit herausfinden können, das die Datei
/etc/sudoers, wenn diese durch ein Script bearbeitet wurde, die Rechte
644 hat.
Dann ist dein Skript kaputt. Aber Hauptsache, du hast den Fehler
gefunden. Bei Debian zumindest wird einem der uebrigens eh bei
Verwendung von sudo ziemlich deutlich gezeigt:

***@t43p:~$ sudo /sbin/ifconfig
sudo: /etc/sudoers is mode 0640, should be 0440

Und 640 duerfte auch nicht ueberall passen. Vielleicht also doch das
Skript reparieren, das sollte die Berechtigung nicht veraendern.

lg
WK
--
______________________________________________________________________
Wolfgang Karall mailto: ***@spiney.org GPG: 0x172CC057
GPGKey fingerprint: F11F 50F8 96B7 C8B5 6D25 AEDE BA1C 0955 172C C057
- Student of Computer Science at the Vienna University of Technology -
Wolfgang Karall
2006-04-28 06:43:51 UTC
Permalink
Post by Günther Zander
Ich habe in einem Script die Datei /etc/sudoers geändert. Um diese
Änderungen zu übernehmen muß ich anschließend das Programm visudo
händisch aufrufen und mit "ESC :wq Enter" wieder schließen.
Warum musst du das? visudo ist nicht verpflichtend, sondern nur eine
gute Idee. Aus man sudoers:

The sudoers file should always be edited by the visudo command which
locks the file and does grammatical checking. It is imperative that
sudoers be free of syntax errors since sudo will not run with a
syntactically incorrect sudoers file.

D.h. du kannst /etc/sudoers auch sonst irgendwie aendern (vi direkt
drauf ansetzen, via sed oder aus sonstigem Skript), die Datei muss nur
syntaktisch korrekt sein.

lg
WK
--
______________________________________________________________________
Wolfgang Karall mailto: ***@spiney.org GPG: 0x172CC057
GPGKey fingerprint: F11F 50F8 96B7 C8B5 6D25 AEDE BA1C 0955 172C C057
- Student of Computer Science at the Vienna University of Technology -
Loading...