Ich habe eine Linux-Box, die von verschiedenen Entwicklern geteilt wird. Sie möchten ihre Kriegsdateien in Apache Tomcat bereitstellen, das sich an einem gemeinsam genutzten Speicherort befindet (/ opt / tomcat).
Da sie keinen sudo-Zugriff haben, muss ich die Ordnerberechtigung für das Tomcat-Verzeichnis ändern.
Verzeichnisstruktur unter /opt/tomcat
ist -
bin/
conf/
lib/
logs/
temp/
webapps/
work/
Was sind die Best Practices in der oben genannten Situation - Am besten geeignete Zugriffsberechtigung für Benutzer? Zur Zeit habe ich die Berechtigung für Webapps und Protokolle auf 777 geändert.
Vielen Dank
+s
die Benutzer- / Gruppen-ID nicht festgelegt? Die Manpage sagt, das+t
ist etwas klebrig.Der
Non-Tomcat settings
Abschnitt des Tomcat-Sicherheitshandbuchs enthält nützliche Informationen zu diesem Thema. Siehe hier:quelle
Sie müssen dem Grundsatz des geringsten Privilegs folgen . Der Server muss (wahrscheinlich
www-data
, aber Sie müssen es überprüfen) in der Lage sein, die meisten Dateien zu lesen (sagen wir alle) und nur in die Protokolle zu schreiben. Die Webentwickler dürfen schreiben, wo sie wollen. Setzen Sie das Sticky-Bit in den Verzeichnissen so, dass es nur der Eigentümer einer Datei löschen kann.In der Praxis müssen Sie (zum Beispiel
webdev
) eine Gruppe erstellen und alle Entwickler und den Server hinzufügen (usermod -aG webdev <user>
oderusermod -A webdev <user>
je nach Linux-Version).chown
Alle Dateien und Verzeichnisse an den Webserver-Benutzer, chmod alle Verzeichnisse an 500 und alle Dateien an 400 (außer dort,bin
wo die ausführbaren Dateien ebenfalls 500 sein müssen).Erteilen Sie
/opt/tomcat
der Gruppe Schreibberechtigungen (das wären 570) und setzen Sie das Sticky-Bit so, dass sie nur die Dateien entfernen können, deren Eigentümer sie sind (chmod 1570). Gewähren Sie dem Server die Schreibberechtigung für die Protokolle und die Leseberechtigungen für die Entwickler (0740 für den Ordner, 0640 für die Dateien, das Sticky-Bit ist wahrscheinlich nicht erforderlich, und gewähren Sie es niemals einer Datei, sondern nur den Ordnern, wie es eine hat) andere Bedeutung (mit den Berechtigungen des Eigentümers ausführen, wenn die Datei ausführbar ist)).Dann müssen Sie
webdev
einigen Verzeichnissen Schreibrechte (1570) erteilen . Sie benötigen hier einige Versuche und Fehler, und dies kann von der Anwendung abhängig sein. Diese Ordner müssen 1570 sein, während einige andere 0500 sein können.Die Entwickler müssen der Gruppe Lesezugriff auf ihre Dateien gewähren, damit der Server sie lesen (das sind 640) und auch auf den Verzeichnissen ausführen kann (das sind 750).
quelle
Ich denke, die von @ intropedro akzeptierte Antwort ist gut. Es ist erwähnenswert, dass die Verwendung eines Paketinstallationsprogramms eine Menge Kopfschmerzen ersparen kann - zumindest für Tomcat 7 unter Ubuntu sind
apt-get install tomcat7
die folgenden Installationsverzeichnisse "standardisiert":/etc/tomcat7
für Konfigurationsdateien,/var/lib/tomcat7
für Kernbibliotheken und/usr/share/tomcat7
für gemeinsam genutzte Ressourcen.Alle Berechtigungen werden ordnungsgemäß mit dem Prinzip der geringsten Berechtigung eingerichtet, sodass das Hinzufügen von Benutzern zur Gruppe
tomcat7
ausreicht, um die Bereitstellung zu ermöglichen. Ferner ist der Tomcat-Server als Dienst eingerichtet, der wie andere gestartet und gestoppt werden kann (z . B.sudo service tomcat start
oder alternativ/etc/init.d/tomcat start
). Tomcat startet beim Neustart automatisch und es gibt einen "Neustart" -Befehl. Ich bin mir sicher, dass es für RHEL / CentOS-Benutzer ein gleichwertiges yum-Paket gibt. (Und ja, es gibt ein Homebrew-Installationsprogramm für lokale OSX-Installationen).Wenn Sie Probleme haben, gibt es ein nützliches Hilfsprogramm
/usr/share/bin
,configtest.sh
das meldet, ob Berechtigungen oder andere Fehler vorliegen. Beachten Sie, dass es einen offenen Fehler gibt, der das Hinzufügen einiger symbolischer Links vorschlägt .Wir betreiben immer noch Ubuntu
trusty
(14.04); Ich glaube, für diejenigen, die neuere Versionen verwenden, gibt es ein passendes Repo für Tomcat 8.quelle