SUID und SGID funktioniert nicht

Hallo,

ich möchte auf einem Linux-Rechner (DSL) ein Java-Programm laufen lassen.
Jetzt soll aber kein Benutzer Schreibrechte auf die Dateien des Programms haben! Das Programm selbst muss aber auf einige Dateien (die zum Programm selbst gehören) schreiben, da sonst Daten verloren gehen. Wie gesagt, der Benutzer selbst soll diese Dateien aber nicht editieren und nicht löschen können.

Ich dachte mir, ich mach das dann alles mit dem SUID Recht (-rwsr-xr-x). Hab auch dem gesamten Verzeichnis diese Rechte gegeben (Programm und Java).

Nach meinem Verständnis sollte jetzt der Benutzer, der keine schreibrechte hat das Programm starten dürfen (funktioniert auch) und das Programm sollte jetzt mit den Rechten des Besitzers (hat alle Rechte) ausgastattet sein, wegen dem SUID-Recht. Leider kann das Programm keine einzige Datei schreiben! Wenn ich die Dateien mit Schreibrechten für alle Benutzer versehe, dann klappt es natürlich.

Was mache ich falsch?
Wo ist der Denkfehler?

Vielen Dank für eure Hilfe!

MfG
Werner

Hallo Werner,

ich möchte auf einem Linux-Rechner (DSL) ein Java-Programm
laufen lassen.
Jetzt soll aber kein Benutzer Schreibrechte auf die Dateien
des Programms haben!

Ich dachte mir, ich mach das dann alles mit dem SUID Recht
(-rwsr-xr-x).

Bei suid werde ich eigentlich immer nervös, das sollte man nur verwenden, wenn es wirklich nicht anders geht. Aber gut, sei es drum.
Ich habe allerdings nur eine Vermutung: Set User ID funktioniert aus Sicherheitsgründen nur bei ausführbaren Binaries, nicht bei Skripten. Nun ist Java so ein Zwitter, daß ich nicht weiss, als was es für Linux zählt, aber wahrscheinlich eben doch nicht als ausführbares Binary.
Wie dem auch sei, das Problem kannst Du wahrscheinlich mit einem SUID wrapper umgehen, z.B.:
http://rpmseek.com/rpm/suid-wrap_0.01a_i386.html?hl=…

Viele Grüße
Marvin

Skript
Hallo Marvin

Bei suid werde ich eigentlich immer nervös, das sollte man nur
verwenden, wenn es wirklich nicht anders geht. Aber gut, sei
es drum.

–> ich weiß, mir fällt aber keine andere Lösung ein - wenn du eine kennst wäre ich dankbar!

Set User ID
funktioniert aus Sicherheitsgründen nur bei ausführbaren
Binaries, nicht bei Skripten. Nun ist Java so ein Zwitter, daß
ich nicht weiss, als was es für Linux zählt, aber
wahrscheinlich eben doch nicht als ausführbares Binary.

–> ist korrekt - wird als Skript gestartet! Das hab ich aber noch nie irgendwo gelesen, dass das nur bei ausführbaren Binaries geht - muss in Zukunft mehr lesen…

Wie dem auch sei, das Problem kannst Du wahrscheinlich mit
einem SUID wrapper umgehen, z.B.:
http://rpmseek.com/rpm/suid-wrap_0.01a_i386.html?hl=…

–> Danke! werd mir das am WE anschauen.

Gruß
Werner

Hallo Werner,

Set User ID
funktioniert aus Sicherheitsgründen nur bei ausführbaren
Binaries, nicht bei Skripten.

–> ist korrekt - wird als Skript gestartet! Das hab ich
aber noch nie irgendwo gelesen, dass das nur bei ausführbaren
Binaries geht - muss in Zukunft mehr lesen…

Ja, lesen bildet :wink: Da durch meine Leitung keine Handbücher durchpassen muss die Wikipedia genügen:
http://de.wikipedia.org/wiki/SUID

Viele Grüße
Marvin

Hallo,

ich möchte auf einem Linux-Rechner (DSL) ein Java-Programm
laufen lassen.

Okay.

Jetzt soll aber kein Benutzer Schreibrechte auf die Dateien
des Programms haben! Das Programm selbst muss aber auf einige
Dateien (die zum Programm selbst gehören) schreiben, da sonst
Daten verloren gehen. Wie gesagt, der Benutzer selbst soll
diese Dateien aber nicht editieren und nicht löschen können.

Dann solltest Du für das Programm einen eigenen Nutzeraccount erstellen. Unter dem sollte das dann laufen.

Ich dachte mir, ich mach das dann alles mit dem SUID Recht
(-rwsr-xr-x).

Wie Marvin bereits sagte: SUID ist extrem eklig und sollte gemieden werden.

Nach meinem Verständnis sollte jetzt der Benutzer, der keine
schreibrechte hat das Programm starten dürfen

Dafür brauchst Du nun ein Hilfsmittel, zum Beispiel sudo.

HTH,

Sebastian

Wie Marvin bereits sagte: SUID ist extrem eklig und sollte
gemieden werden.

[…]

Dafür brauchst Du nun ein Hilfsmittel, zum Beispiel sudo.

http://www.dcoul.de/infos/alle_macht_dem_user.html

HTH,

Sebastian