Предположим, у меня есть два пользователя: Алиса и Боб, группа GROUPNAME и папка foo
, оба пользователя являются членами GROUPNAME (используют Linux и ext3).
Если я сохраню как пользователь Алисе файл под foo
, разрешения являются: -rw-r--r-- Alice Alice
. Однако возможно ли добиться того, чтобы у каждого файла, сохраненного в некотором подкаталоге, foo
были права -rwxrwx--- Alice GROUPNAME
(например, владелец Алиса, группа GROUPNAME)?
permissions
group
acl
umask
ученик
источник
источник
Ответы:
Вы можете контролировать назначенные биты разрешения с
umask
, а группа, сделав каталог setgid вGROUPNAME
.Обратите внимание, что вы должны сделать
chgrp
/chmod
для каждого подкаталога; он не распространяется автоматически (то есть ни существующие, ни впоследствии созданные каталоги в каталоге setgid не будут setgid , хотя последние будут в группеGROUPNAME
).Также обратите внимание, что
umask
это атрибут процесса, который применяется ко всем файлам, созданным этим процессом и его дочерними элементами (которые наследуютumask
действующий родительский элемент в данныйfork()
момент времени). Пользователям может потребоваться установить это~/.profile
, и им, возможно, придется остерегаться вещей, не связанных с вашим каталогом, для которых требуются различные разрешения. Модули могут быть полезны, если вам нужны разные настройки при выполнении разных задач.Вы можете контролировать вещи немного лучше, если можете использовать POSIX ACL; должна быть возможность указать маску разрешений и группу и обеспечить их разумное распространение. Однако поддержка ACL для POSIX несколько переменная.
источник
-rwxrwx--- A G
)?Если это вообще возможно, используйте списки контроля доступа (ACL) .
В Linux убедитесь, что используемая вами файловая система поддерживает ACL (большинство файловых систем unix поддерживают). Возможно, вам потребуется изменить параметры монтирования, чтобы включить списки ACL: для ext2 / ext3 / ext4 вам необходимо
acl
явно указать опцию монтирования, поэтому запись/etc/fstab
должна выглядеть следующим образом/dev/sda1 / ext4 errors=remount-ro,acl 0 1
. Запустите,mount -o remount,acl /
чтобы активировать ACL без перезагрузки. Также установите инструменты командной строки ACLgetfacl
иsetfacl
, как правило, предоставляются в виде пакетаacl
.Теперь, когда однократная установка завершена, измените ACL каталога, чтобы дать группе разрешение на запись и сделать эти разрешения унаследованными вновь созданными файлами. Под Linux:
Если списки управления доступом не вариант, сделать каталог , принадлежащий группе
GROUPNAME
, и установить права доступа к 2775 или 2770:chmod g+rwxs /path/to/directory
.s
Здесь означает setgid бит; для каталога это означает, что файлы, созданные в этом каталоге, будут принадлежать группе, которой принадлежит каталог.Вам также необходимо установить Алиса и Боб Umask , чтобы сделать все свои файлы группы перезаписываемые по умолчанию. Значение umask по умолчанию в большинстве систем - 022, что означает, что файлы могут иметь все разрешения, кроме записи по группам и других. Измените это на 002, что означает запретить только разрешение на запись другим. Обычно вы устанавливаете эту настройку в вашем
~/.profile
:источник
mount
команду сremount
опцией, поэтому она не используетсяfstab
. Наличиеacl
двойного означает, что файловая система уже смонтирована сacl
опцией, и это безвредно. кстати, поacl
умолчанию для ext4 в последних ядрах (патч был еще совсем новым, когда я писал этот ответ). Q2: вы можете запускать команды в любом порядке.GROUPNAME
егоG
, чтобы сделать его более понятнымЭтот вопрос хорошо подходит для Linux
acl
. Поскольку вы не указали свою ОС, я буду считать Linux следующим. Вот пример сеанса.Я не знаю действительно хорошего
acl
учебника, но вы могли бы сделать хуже, чем http://www.vanemery.com/Linux/ACL/linux-acl.htmlОбратите внимание, что по умолчанию
acl
ведет себя как локальный umask. Поскольку, по крайней мере, в Linux, маски umask применяются глобально, я знаю, что это единственный способ получить эффект локального маски umask. По какой-то причине это малоизвестная особенность. В сети полно людей, спрашивающих о локальном переопределении umask, но почти никто, кажется, не думает об использованииacl
.Также обратите внимание, что вам нужно смонтировать раздел, в котором вы работаете с
acl
поддержкой, например.Сессия следует:
Установите группу,
foo
чтобы бытьstaff
, и установите ACL группы и пользователя,foo
чтобыrwx
.Установите также acls по умолчанию для пользователя и группы
rwx
. Это определяет разрешения, от которых наследуются файлы и каталогиfoo
. Таким образом, все файлы и каталоги, созданные в foo, будут иметь групповые разрешенияrw
.Теперь создайте несколько файлов в
foo
качестве пользователейfaheem
иjohn
.Список файлов. Обратите внимание, что как файлы, принадлежащие, так
faheem
и файлы, принадлежащие имjohn
, создаются с правами группыrw
.источник