Ich versuche, eine benutzerdefinierte umask für eine Tomcat 8-Instanz festzulegen. Ich habe versucht, dies mithilfe der UMask-Direktive in der systemd-Tomcat-Einheit so zu gestalten, wie hier ohne Erfolg.
Ich möchte eine 022-Umask festlegen, da das Entwickler-Unternehmen auf Tomcat/Anwendungsprotokolle zugreifen muss und sich nicht in derselben Gruppe wie der Tomcat-Benutzer befindet.
das verrückte ist, dass der systemd doc sagt:
Steuert die Erstellungsmaske für den Dateimodus. Nimmt einen Zugriffsmodus in Oktal-Notation an. Siehe umask (2) für Details. Standardeinstellung ist 0022.
Die Protokolle (Anwendung/Tomcat) sind jedoch auf 640 eingestellt (nicht die erwarteten 755):
-rw-r----- 1 top top 21416 Feb 1 09:58 catalina.out
Meine Servicedatei:
# Systemd unit file for Tomcat
[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target
[...]
User=top
Group=top
UMask=0022
[Install]
WantedBy=multi-user.target
Irgendwelche Gedanken dazu?
Vielen Dank
Fügen Sie UMASK als Umgebungsvariable in die Servicedatei von Tomcat ein:
[Service]
...
Environment='UMASK=0022'
...
Die Standardeinstellung von catalina.sh prüft auf $ UMASK der Umgebung:
# Set UMASK unless it has been overridden
if [ -z "$UMASK" ]; then
UMASK="0027"
fi
umask $UMASK
(Mir scheint, dass UMask von systemd nicht von Tomcat verwendet wird, aber ich bin mir nicht ganz sicher.)
Ich denke, dass Sie dies mit systemd erreichen können, indem Sie Folgendes tun:
~]# mkdir -p /etc/systemd/system/Tomcat.service.d
~]# echo -e "[Service]\nUMask=0022" >/etc/systemd/system/Tomcat.service.d/custom-umask.conf
~]# systemctl daemon-reload
~]# systemctl restart Tomcat
/etc/systemd/system/Tomcat.service.d/umask-user.conf
sollte die Standardwerte überschreiben.
Quelle: https://access.redhat.com/solutions/2220161
P.S: Eine Umask von 0022
würde eine 0644
-Berechtigung und ein Verzeichnis 0755
geben.
wenn Sie Tomcat mit jsvc als Dämonprozess starten, müssen Sie das Argument -umask in der jsvc-Befehlszeile festlegen