-
17. 04. 2012, 08:05 #1
Frage zum Umgang mit Systembenutzern
Kurz und knapp:
Ein Shellscript soll unter einem bestimmten Nutzer gestartet werden. Also:
adduser --system --group userxyz
In das nun vorhandene homeverzeichnis habe ich nun das Script gelegt, den Systembenutzer zum Besitzer gemacht, Die Rechte auf 775 gesetzt und anschließend versucht das Script mit dem Befehl
su testuserxyz -c ./test.sh
zu starten...
Geht nicht aber nicht
Warum? 
Wie starte ich denn nun das Script als Benutzer testuserxyz?
Ich habe mich echt tot gegooglet aber finde nix :/
Danke für die Hilfe
Gruß
$upreme
-
17. 04. 2012, 08:13 #2Mitglied
- Registriert seit
- Aug 2007
- Beiträge
- 221
- Danksagungen
- 0
Re: Frage zum Umgang mit Systembenutzern
Was genau bedeutet _geht aber nicht_? Irgendwelche Fehlermeldungen?
Ansonsten probiers mal mit dem richtigen Environment für den User:
Code:su - testuserxyz -c ./test.sh
-
17. 04. 2012, 09:03 #3
Re: Frage zum Umgang mit Systembenutzern
/etc/passwd:
Code:... testuser:x:121:126::/home/testuser:/bin/false ...
Home Verzeichnis des Systembenutzers
Aufruf als rootCode:root@bcdev-server:/home/testuser# ls -l insgesamt 4 -rwxr-xr-x 1 testuser testuser 36 2012-04-17 09:53 test.sh
Jetzt mit bereits genanntem AufrufCode:root@bcdev-server:/home/testuser# ./test.sh Hallo Welt root@bcdev-server:/home/testuser#
Wie man sieht, sieht man nixCode:root@bcdev-server:/home/testuser# su - testuser -c ./test.sh root@bcdev-server:/home/testuser#
-
17. 04. 2012, 09:16 #4gulli v1.0
Moderator
- Registriert seit
- May 2008
- Beiträge
- 1.642
- Danksagungen
- 1
Re: Frage zum Umgang mit Systembenutzern
Und was soll test.sh genau machen?
-
17. 04. 2012, 09:26 #5
Re: Frage zum Umgang mit Systembenutzern
Im Moment einfach nur "Hallo Welt" ausgeben
sieht man im Aufruf als root
test.sh sieht so aus:Code:root@bcdev-server:/home/testuser# ./test.sh Hallo Welt root@bcdev-server:/home/testuser#
Hab schon überlegt ob es in der Root shell einfach nur nicht ausgegeben wird, aber wenn ich die test.sh wie folgt abändere:Code:#!/bin/sh echo "Hallo Welt"
erzeugt der Aufruf mitCode:#!/bin/sh echo "Hallo Welt" > test.txt
su - testuser -c ./test.sh
auch keine Datei!
-
17. 04. 2012, 09:32 #6gulli v1.0
Moderator
- Registriert seit
- May 2008
- Beiträge
- 1.642
- Danksagungen
- 1
Re: Frage zum Umgang mit Systembenutzern
Wem gehört denn das Home Verzeichnis des Users? Dem User selbst, oder root?
Was passiert, wenn du folgendes ausführst:
In zwei getrennten Schritten.Code:su - testuser ./test.sh
-
17. 04. 2012, 09:38 #7
Re: Frage zum Umgang mit Systembenutzern
Dein neuer User hat keine Shell (/bin/false)
sprich du kannst kein su [-] auf ihn machen.testuser:x:121:126::/home/testuser:/bin/false
Trag da eine ein und es klappt.
-
17. 04. 2012, 09:38 #8
Re: Frage zum Umgang mit Systembenutzern
ls -l im Home Verzeichnis
Ergebnis bei Trennung der beiden SchritteCode:drwxr-xr-x 2 testuser testuser 4096 2012-04-17 10:26 testuser
Der Wechsel zu diesem Nutzer klappt ja schon nicht so wie ich das seheCode:root@bcdev-server:/home/testuser# su - testuser root@bcdev-server:/home/testuser# ./test.sh Hallo Welt root@bcdev-server:/home/testuser# id uid=0(root) gid=0(root) Gruppen=0(root) root@bcdev-server:/home/testuser#
-
17. 04. 2012, 09:47 #9
Re: Frage zum Umgang mit Systembenutzern
Wie klappt das denn dann bei anderen systembenutzern mit dem Starten von Diensten? mysql z.B. hat auch keine Shell und trotzdem läuft der dienst ja unter dem Benutzer mysql.
Irgendwie ist mir das zu hoch
der Parameter --system erzeugt doch nicht ohne Grund einen Nutzer ohne Shell oder seh ich das falsch
-
17. 04. 2012, 09:57 #10
Re: Frage zum Umgang mit Systembenutzern
Diese User haben genau deshalb keine Shell damit du eben nicht ein su [-] drauf machen kannst.
Da bei solchen Useren gerne weak Passwords vergeben werden ("Ach, ist ja nur der Mysql Daemon, geb ich ihm mal das Passwort 'mysql') wurden solche Accounts früher gerne gehackt.
Je nach Distribution forkt ein kleiner Helfer (start-stop-daemon meistens) die Prozesse beim Init.
-
17. 04. 2012, 10:12 #11Mitglied
- Registriert seit
- Aug 2007
- Beiträge
- 221
- Danksagungen
- 0
Re: Frage zum Umgang mit Systembenutzern
Weil dein User eben keine Loginshell hat - denn /bin/false - kannst nur mit su - user -c bzw. su user -c keine Kommandos auf dieser absetzen.
Entweder gibts du dem User eine Loginshell oder alternativ:
Code:su testuser - -s /bin/bash -c ./test.sh
-
17. 04. 2012, 10:23 #12Mitglied
- Registriert seit
- Aug 2007
- Beiträge
- 221
- Danksagungen
- 0
Re: Frage zum Umgang mit Systembenutzern
Nachtrag:
Dein su - testuser funktioniert, weil su in dem Fall eine interaktive Shell startet (afaik shell, kann mich aber irren).
Zu deinem MySQL Beispiel:
Wie Finntastisch sagt, läuft der Elternprozess unter root. Alles andere sind forks, die dann als mysql-User laufen.
Siehe Output von z.B. http://unixhelp.ed.ac.uk/CGI/man-cgi?pstree+1
-
17. 04. 2012, 11:00 #13
-
17. 04. 2012, 11:07 #14
Re: Frage zum Umgang mit Systembenutzern
Steht doch alle gut erklärt in der man-page von su (man su).
-
17. 04. 2012, 11:11 #15Mitglied
- Registriert seit
- Aug 2007
- Beiträge
- 221
- Danksagungen
- 0
Re: Frage zum Umgang mit Systembenutzern
Userwechsel zu deinem TestuserCode:su testuser
Environment von testuser laden (Wobei ich gerade sehe, dass das - am Ende der Befehlszeile stehen muss, sorry).Code:-
Äquivalent zu -l und --login
Die aufzurufende Shell. Ohne das -s wird die Shell aus der /etc/passwd gelesen (was in deinem Fall /bin/false ist).Code:-s /bin/bash
Aufzurufendes KommandoCode:-c ./test.sh
Weitere Infos kannst du unter
oderCode:man su
finden.Code:info su
-
17. 04. 2012, 11:20 #16
Re: Frage zum Umgang mit Systembenutzern
Verstanden und klappt

Vielen Dank für die Hilfe und Erklärung
-


Zitieren

mehr lesen...







#drosselkom: Online-Petition...
Heute, 15:25 in gulli:news