eigenes shell-script zum erstellen von benutzern

bernie

bernie

Jungspund
hallo zusammen,

Ich möchte ein eigenes Script erstellen, welches einen Benutzer anlegt und für diesen noch zusätzlich in dessen Home-Verzeichnis ein Mail-Verzeichnis erstellt, damit seine Mails vom Mailserver gelesen werden können.

Sämtliche Home-Verzeichnisse befinden sich im Ordner siismails und die Benutzer werden der Gruppe siismailer zugewiesen.

Wenn ich die ganzen Befehle händisch hintereinaner eingebe, sieht das Ganze so aus:

"username" und "passwort" solltem dem script per parameter mitgegeben werden

Code:
useradd -d /siismails/username -m -G siismailer username
passwd username 
passwort
su username
passwort
cd ~
maildirmake Maildir

ich habe das ganze schon als textdatei ausprobiert
funktioniert, bis auf die befehle, passwd und su, vermutlich weil danach nicht gleich der nächste befehl kommt

und aus den man-pages werd ich auch nicht wirklich schlau. :hilfe2:

schöne grüße. bernie
 
Ich will mal nicht so sein :)

Code:
#!/bin/bash
read -p "Username: " USERNAME
read -p "Passwort: " PASSWORT
useradd -d /siismails/$USERNAME -m -G siismailer $USERNAME
echo $USERNAME:$PASSWORT |chpasswd
cd /siismails/$USERNAME
su -c $USERNAME `maildirmake Maildir`

kp obs so funzt, is ausser hand geschrieben, nicht getestet :)


//edit:
das ganze natuerlich in ne datei packen, chmod u+x <dateiname>, schon kannste das script ausführen
 
Ich bin mir sehr sicher, dass die letzte Zeile so lauten muss:

Code:
su $USERNAME -c 'maildirmake Maildir'

Also die Reihenfolge der Parameter leicht anders und normale Anfuehrungszeichen statt Backticks.
 
danke erstmals

das ganze funktionier bis zum ändern des passworts
da es deiner angabe nach nicht funktioniert hab ich es mal so probiert:
Code:
echo $PASSWORT & echo $PASSWORT | passwd $USERNAME
nur das funktioniert auch nicht.
falls es dir weiterhilft verwende ich suse 9.1
man muss beim befehl passwd das passwort ja 2mal angeben, die erste eingabe schein er anzunehmen, nur die 2te nicht

lg bernie
 
bernie schrieb:
da es deiner angabe nach nicht funktioniert

Sein Beispiel mit chpasswd funktioniert bei mir prima (auch SUSE 9.1)...


Du kannst die eine Zeile aber auch so abaendern und dann das Setzen des Passworts durch ein separates Kommando weglassen:

Code:
useradd -d /siismails/$USERNAME -m -G siismailer -p `mkpasswd $PASSWORT` $USERNAME
 
Was kommt denn bei dir für eine Fehlermeldung mit dem PW?

Bei mir funktioniert das schon ewigkeiten und immer ohne Probleme, fehlt dir vielleicht chpasswd [1]?


[1] http://chpasswd.sourceforge.net/ (auf gut glück :D)
 
jetzt funktionierts, danke

ich depp, chpasswd geht doch

ich hab das ganze jetzt mit parametern gelöst
als wenn ich in der shell ". scriptname.sh username passwort" eingebe, dann haut das ganze hin

Code:
useradd -d /siismails/$1 -m -G siismailer $1
echo $1:$2 |chpasswd
cd /siismails/$1
su $1 -c 'maildirmake Maildir'

das skript soll im endeffekt vom apache aufgerufen werden, besser gesagt im php mittels
PHP:
shell_exec(". scriptname.sh username passwort");

nur der apache-benutzer wwwrun darf natürlich keine benutzer hinzufügen, muss ich jetzt im skript mittels "su" zum root welchsen?

lg bernie
 
sudo bringt fehler bei "cd"-befehl

danke, sudo bringt aber noch einen fehler
Code:
sudo: cd: command not found

wenn ich es richtig verstanden habe ist der "cd"-befehl ein bash-builtin, deshalb habe ich in der sudoers-datei bei den befehlen "/bin/bash" eingetragen. funktioniert aber scheinbar nicht

schöne grüße,
bernie
 
was willst du mit cd bei sudo?

auf bald
oenone
 
das ganze script sieht derzeit folgendermaßen aus:
Code:
sudo useradd -d /siismails/$1 -m -G siismailer $1
echo $1:$2 | sudo chpasswd
cd /siismails/$1
su $1 -c 'maildirmake Maildir'
wie bereits gesagt, wird das ganze vom wwwrund ausgeführt,
das problem ist meiner meinung nach bei der zeile "cd /siismails/$1", denn der wwwrun kommt nicht in das benutzerverzeichnis eines anderen benutzers rein.

lg bernie
 
Hallo

Die Zugriffsrechte werden nicht mit cd gesteuert.
Siehe auch man chmod.
Was du brauchst ist eventuell einen ganz anderen Lösungsansatz, oder die Auseinandersetzung mit chmod resp. s-Bit.
Normalerweise sollten solche Dinge nicht vom Apache selbst ausgeführt werden.
Du kannst ein normales Shellscript/Perlscript schreiben, welches dann vom Apache aus aufgerufen wird, und mit Rootrechten (siehe chmod) seine Aufgaben erledigt.
Das Ergebnis kannst du ja dann im Apache ausgeben oder was auch immer.

Gruß Wolfgang
 
Moment! Das ganze Skript muesste doch eher per sudo gestartet werden, oder?

Und das s-Bit wird fuer Skripte IIRC eh ignoriert, da zu grosses Sicherheitsrisiko.
 
Brack schrieb:
Moment! Das ganze Skript muesste doch eher per sudo gestartet werden, oder?

Und das s-Bit wird fuer Skripte IIRC eh ignoriert, da zu grosses Sicherheitsrisiko.

die idee hat ich auch mal kurz, zum das skript
einfach so aufzurufen:
PHP:
shell_exec("sudo . scriptname.sh username passwort");
was muss ich denn da in die sudoers-datei reinschreiben?

lg bernie
 
Wozu ist eigentlich der Punkt in dem Kommando? Der macht in meinen Augen gar keinen Sinn. Ich wuerde das eher so machen:

Code:
shell_exec("sudo  /voller/pfad/zu/scriptname.sh username passwort");

In die sudoers muesste dann sowas rein wie

Code:
wwwrun    localhost=NOPASSWD:/voller/pfad/zu/scriptname.sh

Statt wwwrun halt der Benutzername, unter dem der Apache laeuft. Und den richtigen Pfad zu Deinem Skript natuerlich anpassen.
 
Brack schrieb:
Moment! Das ganze Skript muesste doch eher per sudo gestartet werden, oder?

Und das s-Bit wird fuer Skripte IIRC eh ignoriert, da zu grosses Sicherheitsrisiko.

Es ist allemal sicherer, als dem www-data - oder wie der USER des Apache bei dir lauten mag - per sudo signifikannte Rechte, die eigentlich dem root vorbehalten sein sollten zuzuweisen.

Wenn das Script jenseits des Documentroot des Apache liegt, und es nur von root verändert werden kann, dann ist das kein Sicherheitsloch.

www-data root-Rechte einzuräumen, - das auch noch ohne Passwort - halte ich für ein größeres Risiko.
Ein manipuliertes Script (was das ausnutzt), ist über den Apache schneller untergejubelt als du denken kannst.

Gruß Wolfgang

Gruß Wolfgang
 
ich bin leider ein totaler neuling auf dem gebiet.
hat jemand eine url für ein gutes howto, oder könnte mir jemand an meinem problem erklären, wie ich das ganze mit s-bit löse?

schöne grüße, bernie
 
Das sagte ich bereits, das s-Bit geht fuer Skripte grundsaetzlich nicht. Das ist per Design so. Dafuer gibt es sudo.
 
die lösung! + weiter probleme

hallo allerseits, ich habe eine lösung gefunden
allerdings ist sie ein bisschen unsicher

allerdings bin ich noch ganz fertig, zuerst einmal die lösung, und am ende des beitrags meine weitern probleme:

ich hatte ja das problem, den wwwrun den maildirmake-befehl für des eben erstellten user ausführen zu lassen, weil nur so der eben erstellte user auch auf den imap-server zugreifen kann.

jetzt hab ich in der in /etc/sudoers eingestellt, dass der wwwrun die befehle für alle anderen benutzer ausführen kann.

Code:
MAILUSER        ALL =(ALL) NOPASSWD: MAILCMND

somit sieht das funktionieren script jetzt so aus:

Code:
sudo useradd -d /siismails/$1 -m -G siismailer $1
echo $1:$2 | sudo chpasswd
cd /siismails/$1
sudo -u $1 maildirmake Maildir


und nun meine weiteren probleme:
wie ersichtlich befinden sich alle benutzer in der gruppe "siismailer"
weiß jemand wie ich in der sudoers-datei festlegen kann, dass der wwwrun (oder auch der alias MAILUSER) nicht für alle, sondern nur für root und die mitglieder der gruppe siismailer befehle ausführen kann.

weiters wäre es vorteilhaft, wenn sich die mitglieder dieser gruppe am linux system selbst nicht, jedoch auf jeden fall am mail-server anmelden können. nur wie leg ich das fest?

für weitere hilfe wäre ich sehr dankbar

lg bernie
 

Ähnliche Themen

Samba PDC (Ubuntu Feisty) lässt keine Logins zu und zeigt Netbios Namen nicht an

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Samba als PDC [Short-HOWTO]

Zurück
Oben