Эти команды ACL предназначены только для Linux. Во-первых, установите все права собственности и разрешения на что-то стандартное.
chown -R root:root /media
find /media -type d -exec chmod 0755 {} +
find /media -type f -exec chmod 0644 {} +
Файлы
Затем решите, как правильно использовать списки управления доступом (ACL ). (Вы знаете сведения о том, каким пользователям и/или группам требуется доступ на чтение или запись к каким файлам или каталогам, но они не были указаны в вопросе. )Ниже приведены некоторые примеры. Имейте в виду, что каждый пример устанавливает явный ACL, чтобы правильно определить ACL для файлов (, а не каталогов ). Позже ACL и ACL по умолчанию могут быть применены к каталогам . Ниже -m
— применяемая маска.
# Give medusa user (u) read-write; give group_name (g) read; give others (o) read.
find /media -type f -exec setfacl -m u:medusa:rw-,g:group_name:r--,o:r--
# Give plex user (u) read-write.
find /media -type f -exec setfacl -m u:plex:rw-
# Give server group (g) read-write.
find /media -type f -exec setfacl -m g:server:rw-
# Give media user (u) read-write.
find /media -type f -exec setfacl -m u:media:rw-
# Give media user (u) read-write, server group (g) read-write, others (o) read.
find /media -type f -exec setfacl -m u:media:rw-,g:server:rw-,o:r--
Каталоги
Какие бы списки контроля доступа ни применялись к файлам, они могут быть применены и к каталогам, но с небольшим отличием в том, что можно также установить списки управления доступом по умолчанию(-d
). При использовании переключателя -d
все новые объекты файловой системы в каталоге автоматически наследуют определенные ACL. Важно помнить, что необходимо установить как ACL для самого каталога , так и ACL по умолчанию, если ACL автоматически применяются к новым файлам. Также обратите внимание, что ниже для изменения каталогов(cd
)требуется выполнение(x
в rwx
); но это не означает, что бит выполнения применяется к файлам. Скорее, бит выполнения применяется только к новым каталогам.
# For each directory itself:
find /media -type d -exec setfacl -m u:media:rwx,g:server:rwx,o:r-x {} +
# To set a default ACL in each directory - the same command as above with the `-d` switch:
find /media -type d -exec setfacl -d -m u:media:rwx,g:server:rwx,o:r-x {} +
Повторите две приведенные выше команды для каждого ACL, изменяя пользователей и/или группы в соответствии с целями. Это действие упорядочивает списки ACL, чтобы можно было добавить столько списков ACL, сколько необходимо, и выполнить автоматическое назначение списков ACL для каждого нового объекта файловой системы.
Можно использовать метод "ugo" (, например :rwx )или восьмеричный (, например :7 ).
rwx
r--
rw-
r-x
7
4
6
5
Другими словами, следующие команды эквивалентны.
setfacl -m u:media:rwx,g:server:rwx,o:r-x {} +
setfacl -m u:media:7,g:server:7,o:5 {} +
Групповые и другие маски работают одинаково:g:groupname:---
или в комбинации следующим образом.
u:username:---,g:groupname:---,o::---
Я заметил, что одно двоеточие, по-видимому, также подходит для слова «другое».
u:username:---,g:groupname:---,o:---
Отсутствие указания имени пользователя или имени группы применяет маску к текущему владельцу пользователя/группы.
Не зная точно, какой уровень доступа требуется пользователю или группе, трудно сказать точнее. Возможно, сначала потребуется проанализировать, возможно, начав процесс глубже в дереве каталогов. При первых экспериментах со списками ACL может быть полезно знать, как удалить их все:setfacl -Rb /media
. Кроме того, можно использовать info
и/или man
, чтобы прочитать руководство по setfacl
, getfacl
и acl
. Есть также много вопросов и ответов по ACL. Просто обязательно узнайте, предназначен ли ACL Q/A для Linux, потому что речь идет об этой ОС. (Списки управления доступом реализованы по-разному в зависимости от основных вариантов ОС. )Стандартные права собственности и разрешения, заданные в начале этого ответа, будут дополнены списками управления доступом. Везде, где существует ACL, вы заметите, что существует знак +
-, что-то вроде макета ниже.
drwxr-xr-x 2 root root 4096 Jul 8 16:00 dir_without_acl
drwxr-xr-x+ 2 root root 4096 Jul 8 16:00 dir_with_acl
Возможно, потребуется перезапустить службы, обращающиеся к этим файлам.
Передайте данные из find
в sort
. Значение по умолчанию для sort
соответствует вашей локали, обычно буквенно-цифровое. Если это не дает вам желаемого порядка сортировки, и у вас есть GNU sort
, попробуйте с флагом -V
, как в моем примере,
find -type f | sort -V
Подробнее см. man sort
Если вы читаете справочную страницу , вы увидите, что find
имеет параметр maxdepth. Но печатать меньше, если просто
ls */* | sort