Как установить права доступа к файлам по умолчанию для всех папок / файлов в каталоге?


254

Я хочу установить папку таким образом, чтобы все созданные в ней (каталоги, файлы) наследовали разрешения и группу по умолчанию.

Давайте назовем группу "СМИ". Кроме того, папки / файлы, созданные в каталоге, должны автоматически иметь g + rw.


1
Разве это не контролируется пользователем, создающим новый файл / папку, и его umask?
Вади М.

umask относится к разрешениям, но я не верю, что он что-то делает с настройкой группы по умолчанию, которая не является пользователем.
Крис

1
Какая ОС? Теги нужны. setfaclи списки ACL по умолчанию не существуют в AIX.
Амит Найду

Ответы:


269

Я нашел это: применение разрешений по умолчанию

Из статьи:

chmod g+s <directory>  //set gid 
setfacl -d -m g::rwx /<directory>  //set group to rwx default 
setfacl -d -m o::rx /<directory>   //set other

Далее мы можем проверить:

getfacl /<directory>

Выход:

# file: ../<directory>/
# owner: <user>
# group: media
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

5
Yay для липкой части!
таращиться

22
Позволяет не путать Gid с битом.
Амит Найду

10
g + s гарантирует, что новое содержимое в каталоге унаследует владение группой. setfacl только изменяет chmod, в вашем случае устанавливает разрешение на o = rx
Steen Schütt

10
Обратите внимание, что ACL должен быть включен (включен как один из параметров монтирования для смонтированной файловой системы), чтобы права доступа к файлу были наследованы.
sg23

11
Возможно, вы захотите использовать вместо этого 'X', чтобы он устанавливал разрешение на выполнение только для каталогов, а не для файловsetfacl -d -m g::rwX /<directory>
Adrian Gunawan

27

Это дополнение к ответу Криса, оно основано на моем опыте работы с моей установкой Arch Linux.

Использование ключа по умолчанию (-d) и ключа изменения (-m) только изменит разрешения по умолчанию, но оставит существующие без изменений:

setfacl -d -m g::rwx /<directory>

Если вы хотите изменить всю структуру разрешений папки, включая существующие (вам придется сделать дополнительную строку и сделать ее рекурсивной -R:

setfacl -R -m g::rwx /<directory>

например.

setfacl -R -m g::rwx /home/limited.users/<directory> // gives group read,write,exec permissions for currently existing files and folders, recursively
setfacl -R -m o::x /home/limited.users/<directory> //revokes read and write permission for everyone else in existing folder and subfolders 
setfacl -R -d -m g::rwx /home/limited.users/<directory> // gives group rwx permissions by default, recursively
setfacl -R -d -m o::--- /home/limited.users/<directory> //revokes read, write and execute permissions for everyone else. 

( КРЕДИТ для markdwite в комментариях к синтаксису линии отзыва всех привилегий)


2
Чтобы отозвать групповые привилегии (в качестве примера): sudo setfacl -d -mg :: --- / path
markdwhite

1
это просто опечатка, указав setfacl -R -m g::rwx /<directory>дважды в вашем ответе?
Шейн Роватт

0

Добавьте себя / зарегистрированного пользователя в группу www-data, чтобы мы могли работать с файлами, созданными сервером www-data

sudo usermod -a -G www-data $USER

Необходимо перезапустить / перезапустить, чтобы вновь добавленная группа вступила в силу

cd /var/www

Добавьте www-данные в качестве члена группы html-папки, а вашего пользователя - в качестве владельца, чтобы мы владели им и членом группы

sudo chown -R $USER:www-data html

Поставьте свое имя пользователя вместо пользователя USER

Установите права на чтение, запись и выполнение, как требуется, (ugo) u = пользователь, g = группа, o = другие

sudo chmod 750 html

Установите GID html, теперь вновь созданные файлы в html будут наследовать права владения:

sudo chmod g+s html

Это создает правила по умолчанию для вновь созданных файлов / каталогов в каталоге html и подкаталогах.

sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html

Сделайте SELinux, если он установлен, игнорируйте требования к контексту www-данных, чтобы он разрешал права на запись

sudo setsebool -P httpd_unified 1

список каталогов, чтобы увидеть новые разрешения применяются

ls -ld html

Возвращает это

drwxrwsr-x+   3 html www-data

Трейлинг + означает, что ACL, Access Control List, установлен в каталоге.

Ссылка : Ссылка на форум


-2

Используя следующую команду, вы можете установить разрешение по умолчанию для файла:

chacl -R filename

3
Чем это отличается от других ответов? И приведу несколько примеров
Ромео Нинов

3
Вы уверены, что это то, что он делает? linux.die.net/man/1/chacl указывает, что он удалит ACL.
Джефф Шаллер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.