установить umask для tomcat8 через tomcat.service

Я пытаюсь установить собственный umask для экземпляра tomcat 8, пытался сделать это хорошо, используя директиву UMask в модуле systemd tomcat, как показано здесь не повезло.

Я хотел бы установить umask 022, потому что разработчику компании необходимо получить доступ к журналам tomcat / application, и они не находятся в той же группе, что и пользователь tomcat....

Сумасшествие в том, что документ systemd говорит:

Управляет маской создания файлового режима. Принимает режим доступа в восьмеричной системе счисления. Подробности смотрите в umask(2). По умолчанию 0022.

Но журналы (приложение / tomcat) установлены на 640 (а не на ожидаемые 755):

-rw-r----- 1 top top 21416 Feb  1 09:58 catalina.out

Мой служебный файл:

# 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

Есть мысли по этому поводу?

Спасибо


person Pier    schedule 01.02.2017    source источник


Ответы (3)


Попробуйте добавить UMASK в качестве переменной среды в служебный файл tomcat:

[Service]
...
Environment='UMASK=0022'
...

По умолчанию catalina.sh проверяет $UMASK среды:

# Set UMASK unless it has been overridden
 if [ -z "$UMASK" ]; then
  UMASK="0027"
 fi
 umask $UMASK

(Мне кажется, что UMask из systemd не используется Tomcat, но я не совсем уверен.)

person mjtecka    schedule 26.02.2017
comment
Спасибо за вклад, mjtecka, я попробую, когда у меня будет время для этого, я сейчас переключился на другую проблему, я обязательно вернусь сюда и приму ваш ответ, если это сработает! - person Pier; 06.03.2017
comment
Этот ответ правильный и должен быть помечен как таковой. UMask из systemd игнорируется tomcat. Это изменение работает, как и простое изменение umask по умолчанию, найденного в catalina.sh. - person Tadgh; 02.08.2017
comment
Как предложено на catalina.sh: # Не устанавливайте переменные в этом скрипте. Вместо этого поместите их в скрипт setenv.sh в CATALINA_BASE/bin, чтобы ваши настройки были отдельными. - person Danilo Teodoro; 31.05.2020
comment
@Tadgh отлично заработал с systemd для tomcat9 на debian10. Просто добавьте файл с именем /etc/systemd/system/tomcat9.service.d/override.conf с содержимым ответа и обязательно обновите его с помощью systemctl daemon-reload, иначе он будет проигнорирован. - person wbloos; 17.02.2021

Я думаю, вы можете добиться этого с помощью systemd, выполнив следующие действия:

~]# 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 должны перезаписывать значения по умолчанию.

Источник: https://access.redhat.com/solutions/2220161

P.S: umask 0022 даст права доступа к файлу 0644 и каталогу 0755

person Patrick McMahon    schedule 26.06.2017

если вы используете jsvc для запуска Tomcat в качестве процесса демона, нам нужно установить аргумент -umask в командной строке jsvc

person Philip    schedule 06.08.2019