it-swarm.com.de

Umask des Apache-Benutzers einstellen

Ich richte einen LAMP-Server ein und möchte die Umask-Einstellung von Apache auf 002 setzen, damit für alle von Apache erstellten Dateien das Gruppen-Schreibberechtigungsbit gesetzt ist (Mitglieder derselben Gruppe können die Dateien überschreiben).

Weiß jemand, wie das geht? Ich weiß, dass Sie unter Ubuntu die Datei/etc/Apache2/envvars verwenden können, um die umask zu konfigurieren, aber der Server führt CentOS aus.

Update Diese Frage bezieht sich auf eine andere Frage, die ich vor einiger Zeit gestellt habe ( Linux-Benutzer und -Gruppen für einen LAMP-Server ). Falls Sie dies bevorzugen, aktualisieren Sie bitte diese andere Frage mit dem besten Setup, um einen Entwicklerbenutzer auf einem Server zu haben, der die vom Apache-Benutzer erstellten Dateien bearbeiten kann.

53

Apache erbt seine umask von seinem übergeordneten Prozess (d. H. Dem Prozess, der Apache startet); Dies sollte normalerweise das /etc/init.d/-Skript sein. Fügen Sie also einen umask-Befehl in dieses Skript ein.

9

Fügen Sie für CentOS und andere Red Hat-Distributionen die Einstellung umask zu/etc/sysconfig/httpd hinzu und starten Sie Apache neu.

 [root ~] $ echo "umask 002" >> /etc/sysconfig/httpd
[root ~] $ service httpd restart 

Weitere Informationen: Apache2 umask | MDLog:/sysadmin

Bei Debian- und Ubuntu-Systemen würden Sie /etc/Apache2/envvars auf ähnliche Weise bearbeiten.

111
Patrick Fisher

Dies war das erste Ergebnis in den Google-Suchergebnissen für "CentOS 7 Apache umask". Ich werde daher mitteilen, was ich tun musste, um diese Arbeit mit CentOS 7 zu erreichen.

Mit CentOS 7 hat die echo "umask 002" >> /etc/sysconfig/httpd-Methode bei mir nicht funktioniert.

Ich habe die systemd-Startdatei durch das Erstellen eines Ordners /etc/systemd/system/httpd.service.d überschrieben und dort eine Datei umask.conf mit Zeilen erstellt:

[Service]
UMask=0007

Booted und es hat für mich funktioniert.

20
Luoti

Das Hinzufügen einer umaskcommand zu /etc/Apache2/envvars erscheint mir nicht gerade eine gute Idee, nicht nur wegen des Dateinamens (nur bei Variablen), sondern auch aufgrund dieses Kommentars in dieser Datei:

# Since there is no sane way to get the parsed Apache2 config in scripts, some
# settings are defined via environment variables and then used in Apache2ctl,
# /etc/init.d/Apache2, /etc/logrotate.d/Apache2, etc.

Dies legt nahe, dass /etc/Apache2/envvars möglicherweise von jedem Skript verwendet wird, das Apache-bezogene Aufgaben ausführt, und das Ändern der Umask dieser (zuvor unbekannten) Skripts ist ziemlich gefährlich.

Auf der anderen Seite sollten Sie in Erwägung ziehen, die Umask von Apache zu ändern, um die Berechtigungen von durch mod_dav erstellten Dateien zu lockern, und Sie sollten berücksichtigen, dass das DAV-Repository als privat für Apache gilt und dass andere Prozesse auf diese Dateien zugreifen können an verschiedene Ausgaben (einschließlich Korruption) .

3
Ferenc Wágner

Hinzufügen zur Antwort von Luoti/Spider Man für CentOS7: Statt nach der Änderung "zu booten", können diese Befehle verwendet werden:

systemctl daemon-reload
service httpd restart
1

In Debian ist/etc/default/Apache2 ein weiterer Ort zum Einrichten der umask für Apache. Nur diese Zeile am Ende dieser Datei: Umask 0002

1
Francis

Was Sie may tun möchten, ist stattdessen das Bit der ständigen Gruppe (SetGID) der Gruppe für das Verzeichnis zu setzen, mit dem Ihr CGI arbeitet:

chgrp mygroup dir chmod g+s dir

Makesure Wenn Sie dies tun, befindet sich der (Benutzer) Apache in der Gruppe mygroup (in /etc/group), sodass er über Berechtigungen verfügt.

Dadurch wird sichergestellt, dass alle unter diesem Verzeichnis erstellten Dateien derselben Gruppe gehören wie das Verzeichnis. 

Dies ist ein sicherer Ansatz, als ein globales umask für JEDES cgi-Skript festzulegen, das Apache ausführen kann.

(So ​​wird git-http-backend normalerweise von Apache aus ausgeführt).

1
Brad

Für Ubuntu gibt es das Tool svnwrap

  1. Sudo apt-get install Subversion-tools installieren
  2. Wrap svn und svnserve mit svnwrap:
    Sudo ln -s /usr/bin/svnwrap /usr/local/bin/svn
    Sudo ln -s /usr/bin/svnwrap /usr/local/bin/svnserve

Danach werden alle svn-Vorgänge mit file: //, svn + ssh: // und http: // mit umask 002 ausgeführt

0
AndreyP