Как применить настройки umask к учетной записи, которая не входит в систему?

4513
nfarrar

На моем сервере Ubuntu 11.04x64 у меня запущены служебные учетные записи, которые не входят в систему и не имеют домашних каталогов. Эти сервисные учетные записи отвечают за выполнение процессов, которые вызываются как сервисы.

Когда эти службы создали новые файлы, мне нужно, чтобы они были созданы с разрешениями 664 (UMASK 002).

Я отредактировал настройку / etc / profile umask, чтобы отразить это. Я вижу, что теперь моя учетная запись пользователя создает файлы, которые отражают эту новую настройку umask, но учетные записи службы - нет, когда я вручную создаю файлы с использованием их учетных записей (sudo -u serviceaccount touch newfile).

Какие-либо предложения?

5
Я также отредактировал настройку UMASK в /etc/login.defs - но это тоже не работает. nfarrar 13 лет назад 1

1 ответ на вопрос

3
grawity

Если службы запускаются через Upstart или /etc/init.d, отредактируйте соответствующие initscripts.

  • init.d: umask 02вверху скрипта (это обычные shскрипты)
  • Выскочка : umask 02где угодно

В Linux нет строгого определения «логин», а учетная запись - это просто UID, который может (или не может) быть связан с именем / homedir / и т. Д.

Когда вы входите в систему через консоль / через SSH, программа входа в систему (или демон SSH) использует PAM для настройки среды (возможно pam_umask), а затем запускает оболочку с флагом «login». /etc/profileСценарий принадлежит Sh и Баш снарядов, которые только читают его «входа» заклинаниями.

Когда вы используете sudo touch ...или sudo /etc/init.d/foo start, sudo по- прежнему вызывает PAM для настройки auth / account / session, но не запускает оболочку вообще, то есть все файлы "profile" или "bashrc" будут игнорироваться. (То есть, если вы не используете sudo -i ....)

Когда Upstart запускает сервис, он просто переключает UID на ваш сервис, пропуская любые скрипты «профиля» или конфигурацию PAM. Единственная конфигурация, которая читается, - это файл службы, в /etc/initкоторый вы должны поместить параметр umask.

На самом деле это также umask 002 для выскочки, как показывают наши эксперименты. [Документация upstart] (http://upstart.ubuntu.com/wiki/Stanzas#umask) содержит вводящий в заблуждение пример. Bart Schuller 11 лет назад 3

Похожие вопросы