У меня есть несколько долго работающих скриптов и приложений, которые хранят выходные результаты в каталоге, доступном нескольким пользователям. Мне нужен способ убедиться, что каждый файл и каталог, созданные в этом общем каталоге, автоматически имеют u=rwxg=rwxo=r
разрешения.
Я знаю, что могу использовать umask 006
в начале свои различные сценарии, но мне не нравится такой подход, поскольку многие пользователи пишут свои собственные сценарии и могут забыть установить маску самостоятельно.
Я действительно просто хочу, чтобы файловая система устанавливала вновь созданные файлы и каталоги с определенным разрешением, если они находятся в определенной папке. Это вообще возможно?
Обновление : я думаю, что это можно сделать с помощью списков ACL POSIX , используя функциональность ACL по умолчанию, но на данный момент это все немного выше моей головы. Если кто-нибудь может объяснить, как использовать списки ACL по умолчанию, он, вероятно, хорошо ответит на этот вопрос.
источник
Ответы:
Чтобы получить право владения, вы можете установить бит setuid группы в каталоге с помощью
Это гарантирует, что файлы, созданные в каталоге, принадлежат группе. Затем вы должны убедиться, что все работают с umask 002 или 007 или чем-то в этом роде - вот почему Debian и многие другие системы Linux по умолчанию настроены с группами для каждого пользователя.
Я не знаю способа принудительно установить нужные разрешения, если umask пользователя слишком сильный.
источник
+s
часть? Спасибо.Вот как это сделать с помощью списков ACL по умолчанию, по крайней мере, в Linux.
Во-первых, вам может потребоваться включить поддержку ACL в вашей файловой системе. Если вы используете ext4, то он уже включен. Другие файловые системы (например, ext3) необходимо смонтировать с
acl
опцией. В этом случае добавьте параметр в свой/etc/fstab
. Например, если каталог находится в вашей корневой файловой системе:Затем перемонтируйте его:
Теперь используйте следующую команду, чтобы установить ACL по умолчанию:
Все новые файлы
/shared/directory
теперь должны получить желаемые разрешения. Конечно, это также зависит от приложения, создающего файл. Например, большинство файлов не будет выполняться кем-либо с самого начала (в зависимости от аргумента режима для вызова open (2) или creat (2)), как и при использовании umask. Некоторые утилиты, такие какcp
,tar
и,rsync
будут пытаться сохранить разрешения исходного файла (ов), которые будут маскировать ваш ACL по умолчанию, если исходный файл не был доступен для групповой записи.Надеюсь это поможет!
источник
umask
для всех пользователей. = / unix.stackexchange.com/questions/71743/…cp
то он попытается скопировать разрешения исходного файла. Даже неumask
помогает при использованииcp
. Я видел такую же проблему сtar
. См. Этот вопрос .umask
.setfacl
works correctly
Я предполагаю, что он должен потерпеть неудачу, но я не уверен, потому что ответ упускает этот момент.Это некрасиво, но вы можете использовать команду setfacl для достижения именно того, чего хотите.
На машине Solaris у меня есть файл, содержащий ACL для пользователей и групп. К сожалению, вам нужно перечислить всех пользователей (по крайней мере, я не мог найти способ заставить эту работу иначе):
Назовите файл acl.lst и введите свои настоящие имена пользователей вместо user_X.
Теперь вы можете установить эти ACL в своем каталоге, выполнив следующую команду:
источник
в вашем сценарии оболочки (или
.bashrc
) вы можете использовать что-то вроде:umask 022
umask
- это команда, определяющая настройки маски, которая определяет, как устанавливаются права доступа к вновь создаваемым файлам.источник
umask 002
в моем .bashrc.umask 002
ограничивает доступ для других, оставляя группу без изменений. Помните, этоugo
- это другие группы пользователей. Также помните, что umask в основном означает вычитание из значений по умолчанию. Для файлов:666 - 002
будет означать 664, что означает, что группа не затронута.