PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : shell script soll benutzer wechseln



fakespace
01.06.04, 00:46
Moin

hab folgendes kleines Prob:

hab ein kleines Shell script geschrieben. Das öffnet nen screen und startet ein Programm. Allerdings läuft dann das Programm unter dem User, unter dem der webserver läuft. Is ja auch klar ;)

Aber ich hätte gern, dass das Programm (und der screen) unter nem anderen benutzer läuft.


su BENUTZER

geht aber natürlich nich, weil nach dem pw des Benutzer gefragt wird. Kann ich irgendwie das pw auch per script übergeben ? Oder wie kann ich es sonst anstellen, dass der screen, und damit das programm, unter nem anderen benutzer gestartet wird ?


Vielen Dank schonmal für Eure Hilfe ;)

hp_tux
01.06.04, 01:35
Hallo,


Aber ich hätte gern, dass das Programm (und der screen) unter nem anderen benutzer läuft.
nun, das kannst Du wohl durch Setzen des SUID-Bit erreichen, was allerdings immer nur für einen einzigen Benutzer durchführbar ist, denn eine Datei kann ja immer nur einem Benutzer gehören. Nein, die Verwendung des SUID-Bits ist nicht auf den Benutzer "root" beschränkt, auch wenn es meist für "root" verwendet wird!

Gruß

hp_tux

lordsen
01.06.04, 01:42
Oder wenn du es umständlich magst, dann suchst du expect:

#!/usr/bin/expect -f
set passwort "geheim"
spawn su BENUTZER -c DEINSCRIPT
expect "Password:"
send "$passwort\r"
expect eof

was den Vorteil hat, dass du dein Script unter jeden beliebigen User ausführen kannst.

core
01.06.04, 06:57
Die wohl beste und sicherste Lösung ist sudo.
Dazu gibt es auch eine menge an Dokumentationen..

visudo zum konfigurieren. :-)

Gruss

fakespace
01.06.04, 12:38
ok, ich hab mir sudo mal angesehen. Wenn ich das richtig verstehe, kann mit sudo ein user (oder eine Gruppe) bestimmte befehle als root ausführen. Als root soll der screen (das Programm) aber natürlich nich laufen, das heisst ich müsste dem webserver erlauben, su BENUTZER auszuführen, um das pw zu "umgehen" .

hab ich das so richtig verstanden ?


lordsen hat ne interesannte Idee, muss nur mal sehen ob ich das auch versteh ;)
Und expect müsste ich dann auch erst installieren ?!

Aber danke auf jeden Fall schonmal

fakespace
01.06.04, 13:31
hmmm, bitter

ich hab es jetzt mit sudo versucht. Der wwwrun hat die erlaubnis, su zu machen. Aber nach pw wird trotzdem gefragt. Man kann es zwar einfach mit ENTER wegdrücken, man muss also keines eingeben, aber das hilft mir nicht, weil die Abfrage immer noch kommt :(

hp_tux
01.06.04, 13:34
Hallo,


Aber nach pw wird trotzdem gefragt.
hmm, wie sieht denn Deine "/etc/sudoers" aus?

Gruß

hp_tux

fakespace
01.06.04, 14:23
ich habs mal mit


BENUTZER ALL=(ALL) NOPASSWD: ALL

versucht, der BENUTZER sollte also alles ohne PW dürfen

lordsen
01.06.04, 14:35
Ich glaube du bringst da was durcheinander.

So wie du geschrieben hast, versuchst du mit sudo su das Passwort zu umgehen. Das klappt natürlich nicht, da sudo nun su mit rootrechten ausführt, aber su trotztdem nach einem Passwort fragt. Sudo ist dafür geeignet 0815 Programme, wie shutdown, die keinen interaktiven Dialog haben, als root laufen zu lassen.

Da du aber geschrieben hast, dass du screen nicht als root laufen lassen willst, ist sudo eh das falsche Programm für dich. Also bleibt noch die Lösung von hp_tux (suid bit), oder mein Ansatz (wofür du wahrscheinlich expect erst installieren musst).

Blackhawk
01.06.04, 16:24
Ich glaube du bringst da was durcheinander.

So wie du geschrieben hast, versuchst du mit sudo su das Passwort zu umgehen. Das klappt natürlich nicht, da sudo nun su mit rootrechten ausführt, aber su trotztdem nach einem Passwort fragt. Sudo ist dafür geeignet 0815 Programme, wie shutdown, die keinen interaktiven Dialog haben, als root laufen zu lassen.

Da du aber geschrieben hast, dass du screen nicht als root laufen lassen willst, ist sudo eh das falsche Programm für dich. ...

So ein Quatsch (sorry), natuerlich kann man mit sudo nicht nur root nehmen, genausowenig wie man mit su nur nach root wechseln kann.

mach also einfach

sudo -u wwwadm /usr/bin/webserver
und der Keks ist gegesssen...

lordsen
01.06.04, 17:50
Sorry für mein Halbwissen. Das wusste ich nicht.

fakespace
01.06.04, 19:06
Also, danke nochmal ;)

Was mir aufgefallen ist:

wenn ich als root

su BENUTZER

eingebe, werde ich nicht nach einem passwort gefragt. Also eigentlich müsste mein Versuch klappen


aber ich hab es so wie lordsen beschrieben hat versucht. expect installiert, und dann eben das von ihm gepostete als script abgespeichert, das ausgeführt und geht.


ABER:

ich hab es auf nem 2. Server auch versucht. Da geht es aber nicht :(



fakespace@server:~/public_html> ./php_start
spawn su BENUTZER -c ./MEINSCRIPT
Password: Passwort


dann bleibt er kurz stehen, und nach etwa 10sek is die shell wieder da, das script wird aber nicht gesatret. Wie gesagt, auf nem anderen server geht es ohne Probs .. auf dem 2. sieht es aus, als würde Return nicht gedrückt werden. Das pw wird ja korrekt eingefügt, nur eben nicht bestätigt. Wäre nett wenn da noch was wissen würdest lordsen ;)


Auf jeden Fall vielen Dans für alles !

Blackhawk
02.06.04, 08:49
Warum startest Du Dein Script nicht einfach mit sudo -u benutzer scriptname.sh ???

Dann sparst Du Dir doch ne Menge Aerger...