sudo exposed - Wie starte ich java als ein bestimmter user

05/11/2010 - 08:02 von Thomas Jung | Report spam
Hallo,

wie kann ich ein sudo von java als ein bestimmter
user ausfueheren?

Wenn ich mit meinem root account (z.B. in einem
Sckript, aber auch mit gksudo) eine Zeile in der Form:

sudo -u user DISPLAY:0; java -jar /opt/myapp/myjar.jar

habe, so startet mir zwar die Applikation, aber diese (bzw.
der java Prozess) laeuft dennoch als root.

Wie kann ich sowas umsetzen, das auch java wirklich in dem
user Kontext laeuft?


Thomas
 

Lesen sie die antworten

#1 Josef Moellers
05/11/2010 - 09:08 | Warnen spam
Am 5.11.2010 schrub Thomas Jung:

Hallo,

wie kann ich ein sudo von java als ein bestimmter
user ausfueheren?

Wenn ich mit meinem root account (z.B. in einem
Sckript, aber auch mit gksudo) eine Zeile in der Form:

sudo -u user DISPLAY:0; java -jar /opt/myapp/myjar.jar



Das Semikolon führt dazu, daß erst das "sudo" Kommando ausgeführt wird
und dir eine neue Shell als "user" gibt. Wenn diese Shell wieder beendet
wird, bist Du wieder "root" und:

habe, so startet mir zwar die Applikation, aber diese (bzw.
der java Prozess) laeuft dennoch als root.



Zusàtzlich ist dieses "DISPLAY:0 falsch, s.u.

Wie kann ich sowas umsetzen, das auch java wirklich in dem
user Kontext laeuft?



Linux (wie andere *ix) bietet die Möglichkeit, mittels "man
<Kommandoname>" wichtige Informationen zu bekommen:

man sudo
...
sudo [-AbEHnPS] [-a auth_type] [-C fd] [-c class|-] [-g
groupname|#gid] [-p prompt] [-r role] [-t type] [-u username|#uid]
[VAR=value] [-i | -s] [command]
...

D.h. Du darfst zwischen dem "sudo"-Kommando und dem "java"-Kommando
*kein* Semikolon angeben und die DISPLAY-Variable muß mit einem
Gleichheitszeichen gesetzt werden:

<untested>
sudo -u user DISPLAY=:0 java -jar /opt/myapp/myjar.jar
</untested>

HTH,

Josef
These are my personal views and not those of Fujitsu Technology Solutions!
Josef Möllers (Pinguinpfleger bei FTS)
If failure had no penalty success would not be a prize (T. Pratchett)
Company Details: http://de.ts.fujitsu.com/imprint.html

Ähnliche fragen