Archiv verlassen und diese Seite im Standarddesign anzeigen : shell script soll benutzer wechseln
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 ;)
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
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.
Die wohl beste und sicherste Lösung ist sudo.
Dazu gibt es auch eine menge an Dokumentationen..
visudo zum konfigurieren. :-)
Gruss
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
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 :(
Hallo,
Aber nach pw wird trotzdem gefragt.
hmm, wie sieht denn Deine "/etc/sudoers" aus?
Gruß
hp_tux
ich habs mal mit
BENUTZER ALL=(ALL) NOPASSWD: ALL
versucht, der BENUTZER sollte also alles ohne PW dürfen
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).
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...
Sorry für mein Halbwissen. Das wusste ich nicht.
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 !
Warum startest Du Dein Script nicht einfach mit sudo -u benutzer scriptname.sh ???
Dann sparst Du Dir doch ne Menge Aerger...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.