Назад | Перейти на главную страницу

Настройка umask для всех пользователей

Я пытаюсь установить umask по умолчанию на 002 для всех пользователей, включая root, в моем CentOS.

В соответствии с этот и другие ответы, этого можно достичь, отредактировав /etc/profile. Однако комментарии в верхней части этого файла говорят:

НЕ рекомендуется изменять этот файл, если вы не знаете, что делаете. Намного лучше создать сценарий оболочки custom.sh в /etc/profile.d/, чтобы вносить индивидуальные изменения в вашу среду, поскольку это предотвратит необходимость слияния в будущих обновлениях.

Итак, я пошел дальше и создал следующий файл:
/etc/profile.d/myapp.sh
с единственной строкой:

umask 002

Теперь, когда я создаю файл, зарегистрированный как root, файл создается с разрешениями 664, как я и надеялся. Но файлы, созданные моим приложением Apache mod_wsgi, или файлы, созданные с помощью sudo, по-прежнему имеют разрешения 644 по умолчанию ...

$ touch newfile (как root):
Результат = 664 (Работает)

$ sudo touch newfile:
Результат = 644 (Не работает)

Файлы, созданные приложением Apache mod_wsgi:
Результат = 644 (Не работает)

Файлы, созданные Python RotatingFileHandler:
Результат = 644 (Не работает)

Почему это происходит и как я могу обеспечить 664 разрешения для всей системы, независимо от того, что создает файл?

profile - файл запуска для оболочки. Настройка umask 002 в profile.d устанавливает его для всех пользователей, которые запускают свои процессы из оболочки входа.

Ваши два примера имеют разную природу. Для Apache вы можете установить umask в init.d скрипт, запускающий http-сервер.

Для процессов, начатых с sudo вы могли бы использовать umask вариант в файле sudoers.

Лучший способ выполнить маску - отредактировать /etc/bashrc файл для root и ~/.bashrc файл для других пользователей. Все, что вы вставляете ~/.bashrc для конкретного пользователя переопределит то, что вы поместили в / etc / profile.

Итак, узнайте, под каким пользователем работает ваш apache, и поместите umask в ~./bashrc файл.

Это касается пользователей. Он включает в себя интерактивные учетные записи пользователей и может быть запущен путем поиска файлов. Не требует выхода и входа.

Но если вы собираетесь установить umask для демонов, вам нужно войти в сценарий инициализации и поместить туда umask после того, как он отправит /etc/rc.d/init.d/functions файл. Если вы установите umask до этого, это может не сработать. Но я видел некоторые демоны, которые не работают, даже когда вы устанавливаете umask в их сценарии инициализации, быстрый пример был бы cobblerd в RHEL. Для этого нужно ввести umask в /etc/rc.d/init.d/functions сам файл.

Но в основном, помещая значение umask в ~/.bashrc файл работает.

Вот как у меня это работает до сих пор, но если встретятся другие мнения, я был бы рад узнать.