Der beste Weg, um sicherzustellen, dass der Inhalt eines Verzeichnisses immer Apache gehört
Wir haben ein paar Apache VirtualHosts auf einem CentOS 7-Server, und für PHP ist es manchmal erforderlich, Dateien und / oder Ordner erstellen / bearbeiten / löschen zu können. Es ist daher wichtig, dass die Berechtigungen immer apache.apache
rekursiv sind.
Die Bereitstellungen werden über Jenkins als Jenkins-Benutzer durchgeführt, und ich weiß, dass ich eine einfache Shell-Ausführung hinzufügen kann chown -R apache.apache /var/www/website
, und ich werde es tun, aber wenn jemand anderes als ich eine manuelle Bereitstellung durchführt oder etwas, das die Berechtigungen ändern würde, wie z Wenn Sie eine neue Datei oder einen neuen Ordner erstellen, kann dies möglicherweise zu Problemen führen.
Ich habe mir überlegt, einfach einen cron-Job zu machen, um das gesamte Verzeichnis von Zeit zu Zeit zu finden, aber es werden 4 verschiedene VHosts und möglicherweise eine große Anzahl von Dateien für jedes vorhanden sein. Daher ist es oft nicht optimal, dies zu tun Häufig bedeutet dies, dass es Probleme geben kann, wenn die Dauerwellen geändert wurden und der Cron-Job ausgeführt wird.
Kennt jemand eine gute Möglichkeit, um sicherzustellen, dass der Besitzer immer für ein bestimmtes Verzeichnis festgelegt ist? (rekursiv) unabhängig davon, welcher Benutzer was tut?
Ich dachte zuerst an Sticky Bits .. aber ich würde nur für die Berechtigungen arbeiten, nicht für den Besitz.
Ich dachte dann darüber nach, wie entr zu verwenden, was ich unter einer einfachen Google-Suche fand. Es ist in keinem Repo verfügbar, das ich finden konnte, also müssen Sie es manuell installieren, aber es löst im Wesentlichen Befehle aus, die Sie festlegen, wenn Änderungen in Ordnern / Dateien angezeigt werden
ls -d /var/www/foo.company.com | entr sh -c 'chown -R apache.apache /var/www/foo.company.com && echo "An $ (Date) gechoppt" >> /var/log/entr.log'
würde ausreichen ... Aber ich bin sicher, dass es eine Lösung gibt, bei der diese Binärdatei nicht manuell auf den Servern installiert werden muss (ich versuche, die Pakete über yum so viel wie möglich zu verwalten).
Jede Hilfe wäre dankbar!
Vielen Dank
Aktualisieren
Zoredache erwähnte, dass ich den apache
Benutzer einfach der anderen Benutzergruppe hinzufügen sollte, die Schreibberechtigungen erfordert (d. jenkins
H., Da dies bei Bereitstellungen der Fall ist), dann das ID-Bit für die Gruppenberechtigung (chmod 2775) festlegen.
Ich mag diesen Ansatz, aber jetzt stoße ich auf ein Problem.
Hier sind die Konsolenbefehle / Ausgaben, die sich auf die Berechtigungen beziehen
[root@svr www]# chown -R apache.apache www.company.com [root@svr www]# chmod -R 2775 www.company.com [root@svr www]# getfacl www.company.com/ # file: www.company.com/ # owner: apache # group: apache # flags: -s- user::rwx group::rwx other::r-x [root@svr www]# ls -l total 0 drwxrwsr-x. 2 apache apache 6 Apr 29 09:47 www.company.com
Also sieht es ok aus? Wenn ich jedoch eine Bereitstellung versuche, erhalte ich ein Berechtigungsproblem ... Wenn ich jedoch das Verzeichnis wieder auf 0775 ändere, funktioniert es. Warum funktioniert es nicht, wenn ich die sgid eingestellt habe?
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4