ubuntuusers.de

/bin/sh für Programm-Benutzer?

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Maysi2k

Anmeldungsdatum:
27. Dezember 2008

Beiträge: 362

Wohnort: Eppelheim

[Meine Frage bezieht sich auf einen Debianserver, aber ist ja quasi das gleiche wie Ubuntu...]

Hey Leute,

ich habe mal eine kleine Frage - über die ich leider nicht wirklich was im Internet incl. dem ubuntuuserswiki finde...

Und zwar: Man sollte ja Programme wie z.B. einen Minecraft-Server nicht über den root benutzer starten. Also legt man ja generell einen Benutzer an, damit das Minecraftprogramm unter diesem Benutzer läuft.

Nun habe ich schon sehr viele im Internet gesehen, die dem "Programm"-Benutzer die /bin/sh statt die /bin/bash -Shell zuweisen.

Hat das irgendeinen sicherheitstechnischen Grund? Die /bin/sh wird ja auch bei shellscripten verwendet.

Vielen Dank!

Bearbeitet von primus pilus:

Versionsangabe angepasst.

grumpy_grizzly

Avatar von grumpy_grizzly

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 263

Wohnort: Stockholm

Also eigentlich haben System-Benutzer, die sich nicht interaktiv anmelden sollen, /bin/false als shell gesetzt.

Maysi2k

(Themenstarter)

Anmeldungsdatum:
27. Dezember 2008

Beiträge: 362

Wohnort: Eppelheim

aber wenn die Benutzer die /bin/false haben und ich dann über den root bzw. über meinen Benutzer +sudo in den Benutzer wechsel, kann ich doch garnicht das Programm, wie z.B. minecraft-server, ausführen?!

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Maysi2k schrieb:

Nun habe ich schon sehr viele im Internet gesehen, die dem "Programm"-Benutzer die /bin/sh statt die /bin/bash -Shell zuweisen.

Der Unterschied ist im wesentlichen Geschmackssache: /bin/dash (als Verkörperung der /bin/sh ) ist etwas leichter und schneller, /bin/bash hat dagegen diverse Erweiterungen und ist dadurch etwas vielseitiger. Zudem gibt es ja noch weitere Shell-Arten ...

Hat das irgendeinen sicherheitstechnischen Grund?

Ich sehe absolut keinen.

Die /bin/sh wird ja auch bei shellscripten verwendet.

Bei Ubuntu benutzen die Systemskripte standardmäßig die dash, weil sie schneller ist, und das Terminal die bash, weil sie mehr kann.

C'est tout.

track

Maysi2k

(Themenstarter)

Anmeldungsdatum:
27. Dezember 2008

Beiträge: 362

Wohnort: Eppelheim

Ah ok, also wird es wohl ein nichtspürbarer Preformanceunterschied sein ?! 😀 Naja, eigendlich langt die /bin/sh ja dann auch, sie muss ja meist (zumindest bei mir) nur einen Befehel ausführen und nicht damit arbeiten.

Vielen Dank euch beiden =)

mickydoutza

Avatar von mickydoutza

Anmeldungsdatum:
31. Dezember 2010

Beiträge: 2185

Maysi2k schrieb:

Hat das irgendeinen sicherheitstechnischen Grund? Die /bin/sh wird ja auch bei shellscripten verwendet.

Comparison of command shells: https://en.wikipedia.org/wiki/Comparison_of_command_shells

grumpy_grizzly

Avatar von grumpy_grizzly

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 263

Wohnort: Stockholm

Maysi2k schrieb:

aber wenn die Benutzer die /bin/false haben und ich dann über den root bzw. über meinen Benutzer +sudo in den Benutzer wechsel, kann ich doch garnicht das Programm, wie z.B. minecraft-server, ausführen?!

Doch Programme ausführen ist keine Problem, sonst könnten das andere System-Benutzer ja auch nicht. Das ist die login-shell, die dort festgelegt wird. Also die shell, die nach erfolgreicher Anmeldung ausgeführt wird. Daher die Konvention System-Benutzern /bin/false zuzuordnen, denn die sollen sich ja nicht über login am System anmelden. Schau doch einfach mal in die Datei /etc/passwd.

Hat das irgendeinen sicherheitstechnischen Grund?

Ob /bin/sh oder /bin/bash ist vollkommen gleich, denn nach erfolgreicher Anmeldung kann ein Benutzer eh starten was er will (bzw. was der admin erlaubt/nicht verbietet). ☺

Maysi2k

(Themenstarter)

Anmeldungsdatum:
27. Dezember 2008

Beiträge: 362

Wohnort: Eppelheim

ja die datei /etc/passwd kenne ich.

Aber bei mir war es so, dass sobald ein Benutzer die /bin/false zugewiesen hat und ich dann in den Benutzer mit su "Benutzername" gewechselt habe, dann wurde ich direkt wieder gekickt. Ich möchste ja das Programm selbst starten, nur soll es unter den Benutzer laufen...

oder mache ich das generell Falsch?


jetzt mal als Beispiel Minecraft...

Ich wechsel in den eigens angelegten Benutzer, starte den Befehl:

> "nohup java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui &" (nohup darum, damit das Programm nach Logout weiterläuft)

und logge mich dann wieder mit exit aus dem Benutzer aus.

grumpy_grizzly

Avatar von grumpy_grizzly

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 263

Wohnort: Stockholm

sudo ist was du suchst: sudo - execute a command as another user

sudo -u USER COMMAND 

Damit kannst du sogar wenn /bin/false als shell gesetzt ist trotzdem eine interaktive shell starten.

sudo -u USER /bin/bash 

Nur zur Verdeutlichung, dass das Setzen der shell wirklich nur für die Anmeldung am System relevant ist.

Maysi2k

(Themenstarter)

Anmeldungsdatum:
27. Dezember 2008

Beiträge: 362

Wohnort: Eppelheim

Ok, vielen Dank für die Hilfe & Befehle, nun bin ich schlauer =)

edit: wenn ich als root auf dem system angemeldet bin, sollte doch ein "-u COMMAND" reichen, oder ist -u ein Parameter alleine für sudo?

edit2: Also -u geht bei root nicht und der Minecfraftbefehlt auch nicht über sudo -u username befehl ^^

jakon Team-Icon

Lokalisierungsteam

Anmeldungsdatum:
16. November 2009

Beiträge: 419

Maysi2k schrieb:

Ok, vielen Dank für die Hilfe & Befehle, nun bin ich schlauer =)

edit: wenn ich als root auf dem system angemeldet bin, sollte doch ein "-u COMMAND" reichen, oder ist -u ein Parameter alleine für sudo?

edit2: Also -u geht bei root nicht und der Minecfraftbefehlt auch nicht über sudo -u username befehl ^^

Warum willst du das Programm jetzt wieder über root laufen lassen? Das ist doch viel zu unsicher. Und ja, -u ist ein Parameter für sudo.

sudo -u MINECRAFT java etc.  

sollte funktionieren. Wobei „MINECRAFT“ durch den entsprechenden Nutzer ersetzt werden muss, mit dem du den Minecraft-Server laufen lassen möchtest.

Maysi2k

(Themenstarter)

Anmeldungsdatum:
27. Dezember 2008

Beiträge: 362

Wohnort: Eppelheim

will ich doch garnicht,

also über den sudo -u benutzer "befehl" kann ich es nicht starten, aber vllt liegt das auch an nohup. Habe dem benutzer nun die /bin/sh gegeben und swichte halt in den User und starte das Programm dann.

jakon Team-Icon

Lokalisierungsteam

Anmeldungsdatum:
16. November 2009

Beiträge: 419

Maysi2k schrieb:

will ich doch garnicht

Achso, habe ich falsch verstanden.

also über den sudo -u benutzer "befehl" kann ich es nicht starten, aber vllt liegt das auch an nohup. Habe dem benutzer nun die /bin/sh gegeben und swichte halt in den User und starte das Programm dann.

Was heißt, du kannst es nicht starten? Fehlermeldungen?

grumpy_grizzly

Avatar von grumpy_grizzly

Anmeldungsdatum:
26. Dezember 2011

Beiträge: 263

Wohnort: Stockholm

Also mal so als Beispiel:

# sudo -u gdm sleep 60 &
[1] 24107
# exit
$ ps -u gdm
  PID TTY          TIME CMD
24107 ?        00:00:00 sleep 

Funktioniert wunderbar, sogar ohne nohup.

Maysi2k schrieb:

nohup java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui &

Vielleicht mal die Datei minecraft_server.jar mit vollem Pfad angeben? Oder den Befehl in eine Datei schreiben und dann die Datei mit sudo ausführen?

jakon schrieb:

Was heißt, du kannst es nicht starten? Fehlermeldungen?

Das würde mich auch interessieren. ☺

Maysi2k

(Themenstarter)

Anmeldungsdatum:
27. Dezember 2008

Beiträge: 362

Wohnort: Eppelheim

Hey Leute, ich war gestern schon im Bett =) Ich melde mich heute abend incl. Fehlermeldung wieder, erstmal schaffe gehen 😀

LG

Antworten |