ubuntuusers.de

Mit PHP(Apache) auf Ubuntu Ordner-/Dateibesitzer ändern

Status: Ungelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

halloICKEbins

Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

Morgen,

ich habe ein Apache zu laufen und würde jetzt gerne mit meinem PHP-Script einen Ordner erstellen und nachträglich den Besitzer der Datei ändern. Die $file-Ordner(freigaben) haben die Berechtigungen 770.

1
2
3
4
5
6
$file = "var/www/html/freigaben"
//$file = "/home/user1/www/freigaben"
mkdir($file, 0660))
		
chmod ($file,0660);  // den Befehl führe ich nochmals auch, das auf die Datei/Ordner auch 660 gesetzt wird, anstatt 640
chown ($file, "user1");

Beim Befehl chown($file, "newuser33"); bekomme ich immer über PHP: Warning: chown(): Operation not permitted.

Welche Berechtigung(en) muss ich wo setzen damit es klappt?

NORACSA

Anmeldungsdatum:
31. Januar 2010

Beiträge: 180

Die Antwort dürfte hier zu finden sein! ☺

halloICKEbins

(Themenstarter)
Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

Das habe ich schon mal verstanden...dann bliebe also nur noch die Datei /etc/sudoers anzupassen.

Jetzt hätte ich ja entweder die Möglichkeit1:

1
www-data ALL= (ALL) NOPASSWD: /bin/chmod -R user1 /var/www/html/freigaben/*

oder die Möglichkeit2 ein Script mit dem Befehl chown zu schreiben, welches in /etc/sudoers eingebunden wird:

1
www-data ALL= (ALL) NOPASSWD: /bin/bash /var/www/html/meinscript.bash

Würde das so gehen und wäre dies restriktiv genug im Umgang mit der Sicherheit?

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

Kann phps chown Funktion denn sudo nutzen, also in einer Shell ausfuehren? Aus den beiden Kommentaren in php.net/chown werd ich nicht schlau ob das geht.

halloICKEbins

(Themenstarter)
Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

Habe gerade die erste Möglichkeit getestet und es geht nicht! - permitted denied

Die zweite Möglichkeit funktioniert.

Bleibt noch die Frage nach der Sicherheit? - restriktiv genau scheint sie ja zu sein!

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Eine Frage dazu: Ist der zu berechtigende Nutzer immer der selbe oder von der shell aus ermittelbar? Dann könnte man das auch mittels einer systemd-Verzeichnisüberwachung machen.

Erstelle eine Service-Unit chmod-freigaben.service zum Aufruf

[Unit]
Description=Automatische Berechtigungsänderung in /var/www/html/freigaben/

[Service]
Type=oneshot
ExecStart=/usr/bin/chown -R user1:group1 /var/www/html/freigaben/

Lege eine path-Unit chmod-freigaben.path an:

[Unit]
Description=Startet chmod-freigaben.service bei Änderungen des Pfades

[Path]
PathModified=/var/www/html/freigaben/

[Install]
WantedBy=multi-user.target

Starten mit systemctl start chmod-freigaben.service, generelles aktivieren mittels systemctl enable chmod-freigaben.service.

❗ Achtung: Ungetestetes Beispiel. Sollte zwar so funktionieren, aber ohne Garantie auf Vollständigkeit ☺

/edit: Nach sebix Hinweis mal das Gehirn eingeschaltet 😀

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

halloICKEbins schrieb:

Bleibt noch die Frage nach der Sicherheit? - restriktiv genau scheint sie ja zu sein!

Laut manpage von sudoers muessen Befehl und die Argumente ja genau exakt zusammenstimmen, daher sehe ich da jetzt kein Problem. Ausser dass user1 kein Modus fuer Dateirechte ist.

halloICKEbins

(Themenstarter)
Avatar von halloICKEbins

Anmeldungsdatum:
12. September 2017

Beiträge: 226

@sebix: Na logisch ...ich meinte natürlich nicht chmod sondern chown

@ChickenLipsRfun2eat: Ja es ist immer der selbe Nutzer.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Dann gib systemd eine Chance ☺ Intern läuft das wohl mit Inotify, wenn ich mich recht erinnere.

Antworten |