По некоторым очевидным причинам мне нужно установить umask
значение для одной конкретной папки. Как можно это сделать?
Спасибо заранее!
ОБНОВЛЕНИЕ 1
Причина, по которой мне нужно использовать umask для определенной папки, заключается в следующем. У меня есть веб-приложение, и когда оно создает какой-то файл, разрешение по умолчанию составляет 700. Но мне нужно как минимум 755 разрешений для этого файла. Я думаю, что я мог бы объяснить проблему более четко сейчас.
permissions
umask
Бахтиер
источник
источник
Ответы:
вы могли бы использовать
setfacl
Где
name
находится название группыЧтобы узнать, к каким группам вы или конкретный пользователь принадлежите, смотрите в Unix / Linux, как вы узнаете, в какую группу входит данный пользователь через командную строку?
источник
setfacl
, изменился. Я получаю сообщение о том, что-m
это недопустимый параметр.setfacl
не изменился. Скорее всего, вы не указали правильное имя группы (после-m
).setfacl
для списков контроля доступа и нетumask
. Лучшее решение, но на самом деле не то, что просили, я не думаю.sudo setfacl -Rdm ...
(пропустить R для рекурсии) должно работать. @ Wyatt8740 (правильно). Чтобы быть уверенным, запустите:,man setfacl
и введите/-modify
. Вам нужно использоватьsudo
.Вы не можете установить umask для каждого каталога, это значение уровня процесса. Если вам нужно запретить другим пользователям читать файлы в каталоге, отзовите соответствующие биты прав доступа.
Например, если у вас есть каталог
/home/user/directory
с некоторыми файлами и каталогами, которые могут получать разрешения, например, 777, от процесса, установите для битов разрешений/home/user/directory
что-то вроде 700. Это сделает невозможным для других пользователей (за исключением корня суперпользователя) снижение в/home/user/directory
.Я параноик и установил разрешения на
/home/user
750, так что только я могу читать, писать и спускаться в свой домашний каталог. Это приводит к тому, что подобные папки/home/user/Public
не могут быть доступны другим, но я могу жить с этим.За обновление вашего вопроса: тем не менее, вы не можете контролировать, что в файловой системе (кроме использования другого типа файловой системы, такого как FAT, который категорически не рекомендуется), вы должны сделать это в своем веб-приложении. Если ваше веб-приложение написано на PHP, вы можете изменить umask на лету, используя
umask
функцию:Вы можете поместить это в файл конфигурации, например, в файл, содержащий пароль для подключения к базе данных (например, в приложениях, таких как Wordpress).
Помните, что это значение процесса, некоторые веб-серверы позволяют вам устанавливать его в своих файлах конфигурации, в противном случае вы можете изменить сценарии запуска, чтобы установить желаемый umask. Помните, что разрешения, такие как
755
и644
довольно опасные для веб-приложений, если код чувствителен, его может прочитать каждый.источник
/home/user/Public
(mount -o bind /home/user/Public /some/other/place
), чтобы обойти проблему разрешений родительского каталога.Чтобы изменить разрешения для папки, используйте chmod. Umask для файлов.Установите umask на то, что вам нужно
и вернитесь, когда вы закончите
источник
umask
). Извините за добавление запутанной информации.Другим решением может быть просто установить идентификатор группы для файлов, созданных в каталоге, что делает новые файлы принадлежащими идентификатору группы каталога, а не идентификатору группы пользователя, создавшего файлы. Поэтому я думаю, что вы могли бы просто сделать:
chown www-data:www-data /my/folder
chmod 4755 /my/folder
Это устанавливает специальное разрешение для файла setgid, что приводит к тому, что все созданные файлы
/my/folder
принадлежатwww-data
группе, которая затем имеет разрешение rx (5) из-за родительского каталога.источник
Обеспечить пыльниковое решение, реализованное с помощью хуков оболочки и
direnv
. Следующее решение может быть более совместимым, еслиsetfacl
оно недоступно в вашей системе. (например, macOS)Используйте
.envrc
дляexport
пользовательскогоumask
значения для конкретной директории, иexport
эд окр вар будет выгружен , когда вы оставляете , что реж.Определите ловушку для изменения
umask
значения после изменения рабочего каталога.В настоящее время инициализация ловушки direnv для zsh не поддерживает
chpwd
ловушку. Если запрос на выгрузку GH-514 не был объединен, когда вы видите эту страницу. Пожалуйста закомментироватьeval "$(direnv hook zsh)"
и крюкdirenv
наchpwd
вручную следующий код,Источник: dynamic-umask-based-on-cwd.md
источник
Связанный, но, возможно, не применимый в этом случае, следующий клип от
.zshrc
:Так что для интерактивного использования что-то подобное будет работать (но, очевидно, не для обеспечения безопасности).
источник