5

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

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

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

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

1 ответ1

3

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .