PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : chown auf einen ordner



malburg
22-04-2002, 15:44
Hallo

Ich habe folgendes Szenario.

Ich habe alle meine User auf einen LDAP Server liegen und die können sich an meinem System anmelden.

Jetzt kann sich ein User registrieren lassen und dann wird er auf meinem LDAP server eingetragen und kann sich danach auch per ftp und ssh einloggen aber....

damit er seine mails abholen kann, braucht er ein home verzeichnis mit seinen eigenen rechten.



meine frage ist jetzt wie kann ich die rechte mit php4 auf einen ordner ändern, wenn mein apache auf nobody.nogroup läuft.

vielen dank im vorraus

marcel a.

elrond
23-04-2002, 12:42
um nicht allzugosse sicherheitslöcher zu reissen, könntest du parallel zum ldap-eintrag eine datei mit den notwendigen user-daten schreiben, bzw. einen eintrag in deine db machen(eigentlich braucht ja nur der username drinzustehen). dann kannst du in die crontab eines ausreichend priviligierten users einen job schreiben, der zyklisch in die db o. datei schaut und ggf das chown macht.

malburg
23-04-2002, 15:00
das hatte ich schon mal, aber das hat immer zu lange gedauert und ich wollte nicht alle minute ein script starten.

es sollte schon alles nach dem klick auf einen button erledigt sein.

ich habe da mal was von sudo gehört -> würde das denn gehen.


für tipps und codezeilen wäre ich sehr dankbar.


mfg marcel a

msi
24-04-2002, 21:04
du könntest ein c-programm schreiben, das chown macht. Dem Programm könnte
user und verzeichnis übergeben werden. Im Programm kannst du dann das Verzeichnis checken (damit es nur ein verzeichnis sein kann, das geändert werden soll).
Wenn du dann dem Programm das suid bit setzt und eigentümer root ist
kannst du es von deinem php skript aus starten.

du musst halt im c-prgramm ziemlich viele verzeichnisse ausschliesen, damit
es nicht von anderen users misbraucht werden kann. Am besten tust du das
programm dann nicht zur Gruppe root sondern zu der Gruppe unter der auch
apache läuft und setzt dann nur so die rechte: "rwsr-s--- root apachegruppe"

Harry
26-04-2002, 18:56
Hallo malburg,

mit sudo sollte es am einfachsten funktionieren.

Dazu mußt Du zunächst als root das Kommando "visudo" ausführen (es dient zum editieren der Datei /etc/sudoers mittels vi und anschließender Reinitialisierung des sudo-Systems).

Dann trägst Du folgende Zeile in diese Datei ein:


nobody <hostname>= NOPASSWD: /bin/mkdir /home/*, /bin/chmod 700 /home/*, /bin/chown * /home/*


Der Eintrag in dieser Zeile verhilft dem Benutzer nobody nun zur Ausführung der angegebenen Kommandos unter der root-Kennung. Als <hostname> mußt Du den Host eintragen, auf dem diese Kommandos durch den User nobody ausgeführt werden dürfen; alternativ kann hier auch das Schlüsselwort ALL eingetragen werden.

In Deinem PHP-Skript rufst Du dann beispielsweise diese Kommandos wie folgt auf:


$user="irgendwer";
system("/usr/bin/sudo /bin/mkdir /home/$user");
system("/usr/bin/sudo /bin/chown $user /home/$user");
system("/usr/bin/sudo /bin/chmod 700 /home/$user");


Viel Spaß
Harry