Я пытаюсь установить 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
файл работает.
Вот как у меня это работает до сих пор, но если встретятся другие мнения, я был бы рад узнать.