Права доступа к файлам и папкам в Linux

Usando un grepque conoce-o:

$ printf '%s\n' "$string" | grep -o '\<Icecream[^[:blank:]]*'
Icecream123

El patrón \<Icecream[^[:blank:]]*coincide con la cadenaIcecream(donde Iestá precedido por un carácter que no es una palabra -, o el comienzo de la línea )seguido de cero o más espacios en blanco que no -(no espacios ni tabulaciones ).


Usandoawk:

$ printf '%s\n' "$string" | awk -v RS=' ' '/^Icecream/'       
Icecream123

El programa awkdivide la cadena en registros -separados por espacios y prueba cada uno. Imprimirá los que comienzan con la cadena Icecream.

Usando mawko GNU awk, también puede usar

printf '%s\n' "$string" | awk -v RS='[[:blank:]]' '/^Icecream/'

ya que interpretan RScomo una expresión regular si contiene más de un carácter.


Con sed, de forma similar agrep:

$ printf '%s\n' "$string" | sed 's/.*\(\<Icecream[^[:blank:]]*\).*/\1/'
Icecream123

Usando/bin/sh:

set -- Icecream123 AirplaneBCD CompanyTL1 ComputerYU1
for string; do
    case $string in
        Icecream*)
            printf '%s\n' "$string"
            break
    esac
done

Perl (con un poco de ayuda detr):

$ printf '%s\n' "$string" | tr ' ' '\n' | perl -ne '/Icecream\S*/ && print'
Icecream123

o simplemente

$ printf '%s\n' "$string" | perl -ne '/(Icecream\S*)/ && print $1, "\n"'
Icecream123
3
09.07.2019, 18:29
1 ответ

Эти команды 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

Возможно, потребуется перезапустить службы, обращающиеся к этим файлам.

4
27.01.2020, 21:17

Теги

Похожие вопросы