• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Script als anderer User ausführen

André:-)

Member
Hi,

Fehlermeldung beim Ausführen eines Scriptes aus /usr/local/bin:
cannot connect to X server

Ich habe gegooglet und gelesen, dass der X server als Benutzer gestartet ist und ihn root deshalb nicht ausführen kann. Wie kann ich in einem Script anordnen, dass ein Befehl als bestimmter user ausgeführt wird?
 

TeXpert

Guru
automagisch schon mal gar nicth (und das ist gut so)

scripte kannst Du per sudo -u USER unter einem anderen Kontext starten, Programme könnte Root auch mit dem suid-Bit versehen (muss dafür aber wissen was er tut...)

Sudo muss natürlich über die 7etc/sudoers richtig konfiguriert sein, zum Editiere bitte visudo nutzen, das macht einen Syntax-check. Konfiganleitungen in der manpage
 

panamajo

Guru
André:-) schrieb:
Fehlermeldung beim Ausführen eines Scriptes aus /usr/local/bin:
cannot connect to X server
Wenn X11 schon läuft: X11 lässt als Default nur Clients vom startenden User zu. Dieser kann aber mit z.B.
Code:
$ xhost localhost
alle lokalen User zulassen, also auch root.
 
OP
A

André:-)

Member
Wenn X11 schon läuft: X11 lässt als Default nur Clients vom startenden User zu. Dieser kann aber mit z.B.
Code:
$ xhost localhost
alle lokalen User zulassen, also auch root.

Ich habe mal gegooglet. Dann ist mir doch xauth lieber, bekomme es aber nicht damit hin.

Code:
andre@pentium13:~> xhost
access control enabled, only authorized clients can connect
andre@pentium13:~> xauth extract Xkey $DISPLAY
andre@pentium13:~> ls -l Xkey
-rw-------  1 andre users 54 2006-03-01 14:47 Xkey
andre@pentium13:~> su -l
Password:
pentium13:~ # xauth merge /home/andre/Xkey
pentium13:~ # export DISPLAY=:0.0
pentium13:~ # nedit
-bash: nedit: command not found
 

TeXpert

Guru
das Problem liegt aber nicht an dem xauth (BTW: gute Entscheidung :) xhost muss nicht sein ..)

sondern daran, dass Du nicht das programm findest.

hast Du woher? eine loginshell für Root bekommt man mit
Code:
su -
... und dann hab ich da keine Probleme mit
 
OP
A

André:-)

Member
Das ganze habe ich hier her:
http://www.fibel.org/linux/lfo-0.6.0/node511.html

Code:
pentium13:~ # su --help
Usage: su [OPTION]... [-] [USER [ARG]...]
Change the effective user id and group id to that of USER.

  -, -l, --login               make the shell a login shell
 

TeXpert

Guru
ah, cool :)

ich ignoriere -help immer ... in meiner manpage steht nur

Code:
OPTIONS
       -      make this a login shell
aber vom Prinzip müsste das funktionieren
 
OP
A

André:-)

Member
Das Problem liegt hier:

Code:
andre@pentium13:~> xauth extract Xkey $DISPLAY
andre@pentium13:~> su -
Password:
pentium13:~ # xauth merge /home/andre/Xkey

Der Schlüssel wird nicht in die /root/.Xauthority eingefügt. Weiß jemand warum?

Und vielleicht liegt das daran, dass bei mir die zweite Zeile aus dem Zitat fehlt:

linux/unix:0 MIT-MAGIC-COOKIE-1 69607fef5c39d9bce7ec1840e3fea7b6
linux/unix:0 XDM-Authorization-1 8660788b83f67361000733b542b667ea
http://www.easylinux.de/Artikel/ausgabe/2003/07/048-kdesu/
 
OP
A

André:-)

Member
Ich glaube, ich bin wieder ein Stückchen weiter.

Bislang sind mehrere Eingaben in einer Shell notwendig, um ein grafisches Programm mit Rootrechten auf dem Userdesktop zu platzieren - zu viel fuer einen Menueeintrag. Aber auch hier kann man sich leicht helfen: Man kann einen kleinen Wrapper schreiben, in dem vor dem eigentlichen Programmstart sowohl $XAUTHORITY als auch $DISPLAY gesetzt werden - gibt man dieses Skript nun ueber "super" (oder "sudo") zur Verwendung ohne Passwortabfrage frei, so geht das mit einem einfachen Befehl. Beispiel fuer einen solchen Wrapper:

#!/bin/sh
XAUTHORITY=/home/username/.Xauthority; export XAUTHORITY
DISPLAY=:0.0; export DISPLAY
programm

Ein solches Skript abgespeichert unter

-rwxr-x--- root root /usr/local/sbin/dateiname

und aufgerufen ueber "sudo /usr/local/sbin/dateiname" startet das gewuenschte Programm mit Rootrechten und ohne Passwortabfrage auf dem Userdesktop. Und da spaetestens jetzt hinsichtlich Bedienung und Komfort kein Unterschied mehr zwischen User und "root" besteht - warum weiterhin noch die Risiken des Rootaccounts in Kauf nehmen?
http://www.linuxforen.de/forums/showthread.php?t=22951

Mein Script /etc/ppp/ip-up.d/lwp:
Code:
#!/bin/sh
export PATH=$PATH:/opt/kde3/bin
XAUTHORITY=/home/andre/.Xauthority; export XAUTHORITY
DISPLAY=:0.0; export DISPLAY
DesktopTuning/LiquidWeather++/lwp-9.2.1.skz
superkaramba /home/andre/download/Software/DesktopTuning/LiquidWeather++/lwp-9.2.1.skz
exit 0

Meine /var/log/messages-Fehlermeldung
Code:
Mar  1 19:47:03 pentium13 pppd[9667]: Script /etc/ppp/ip-up finished (pid 9670), status = 0x0
Mar  1 19:47:04 pentium13 ip-up: Aborting. $HOME is not set.

Hat noch jemand eine Idee?
 
Oben