Как узнать, где устанавливается umask для пользователя?

Я уже некоторое время борюсь с проблемами umask/permission в различных случаях. Я установил www-data (запускается nginx/php-fpm), чтобы иметь umask 002 в файле /etc/init/php-fpm.conf, и мой пользователь развертывания также имеет umask 002 в /home/deployer/ .bashrc. Все файлы приложений имеют права доступа 0660 (0770 для каталогов), так что они оба могут их читать/записывать (основная группа развертывателя — www-data). Однако я продолжаю сталкиваться со случаями, когда этот umask не соблюдается, а для файлов установлено значение 644 или 640.

Мой текущий случай - это когда SSHing в качестве root с помощью скрипта ansible с параметрами:

sudo: yes
sudo_user: deployer

Файлы, созданные с помощью ansible, получают права доступа 644. Как узнать, где устанавливается umask и где его добавить?

Во-вторых, нет ли лучшего способа выполнить развертывание? Я хотел бы просто полностью избежать этой проблемы и выполнить всю работу по развертыванию от имени пользователя www-data, но, видимо, это проблема безопасности. Этот материал umask действительно сложно развертывается.

Спасибо.


person timetofly    schedule 29.10.2014    source источник
comment
Мне любопытно, нашли ли вы когда-нибудь решение этой проблемы (2 года спустя). У меня такая же проблема, и я попробовал единственное предложение, опубликованное ниже, но оно мне тоже не помогло.   -  person fronzee    schedule 15.02.2017


Ответы (2)


Вероятно, зависит от версии Unix, но man страница для sshd для HP-UX говорит, что когда пользователь успешно входит в систему через SSH, один из шагов:

 Reads the file ~/.ssh/environment, if it exists, and users are
 allowed to change their environment.  See the
 PermitUserEnvironment option in sshd_config(5).

Поэтому вы можете попробовать создать файл /home/deployer/.ssh/environment и установить там umask.

Это, вероятно, не относится к вашей ситуации, но для SFTP вы можете установить общесистемную настройку для файлов, передаваемых через sftp, включив команду

SftpUmask 002

в файле /opt/ssh/etc/sshd_config или что там написано на вашей справочной странице для sshd_config.

person Mark Stewart    schedule 29.10.2014
comment
Привет, я использую Ubuntu 14.04. Создание и добавление umask в файл среды как для пользователей root, так и для пользователей deployer ничего не изменило =\. В моем случае sftp не подходит. - person timetofly; 29.10.2014

Мне удалось заставить umask по умолчанию работать с deployer на Ubuntu Server 16.04, следуя этой страницы. Короче говоря, вам нужно отредактировать /etc/pam.d/common-session и убедиться, что есть строка, которая говорит session optional pam_umask.so umask=022 (или что-то еще umask, которое вы хотите). Это установит umask по умолчанию для всех соединений, независимо от того, являются ли они интерактивными или нет.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ. Это может иметь последствия для всей системы для всех пользователей. Я не тестировал это решение подробно.

person fronzee    schedule 15.02.2017