Справочник с + х разрешением, родители без него. Когда это будет полезно?


11

Скажем, у меня есть папка с именем folderпо следующему пути:

my_path = /a/b/c/d/e/folder

и файл называется fileв этой папке.

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

> chmod g-rwx -R /a/

Теперь, скажем, я даю +rxразрешения folder:

> chmod g+rx /a/b/c/d/e/folder

Затем, если запускается второй пользователь в моей группе:

> ls /a/b/c/d/e/folder

или же

> cat /a/b/c/d/e/folder/file 

она получает ошибки разрешения, и, насколько я понимаю, это потому, что мне нужно предоставить g+xдоступ ко всем родителям folder. Тогда у меня возникает вопрос: когда или почему было бы полезно дать +xразрешение на каталог, у которого его нет ?

Спасибо


1
Ты уверен, что бежишь chmod +grx -R /a/b/c/d/e/folder? Это неправильно, правильный способ выполнить это:chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
Непосредственно не отвечает на этот вопрос, но рекомендовал справочное чтение: объяснение прав доступа к каталогу
Жиль "ТАК, перестань быть злым"

Ответы:


6

В большинстве случаев, если вы хотите заблокировать доступ и использование всего каталога (включая его подкаталог), вы можете сделать это, удалив его (не рекурсивно) -x. Таким образом, вы можете оставить подкаталоги +xбез какого-либо вреда.

Сохранение разрешений для подкаталогов может быть полезно по ряду причин (особенно, когда -xэто не относится ко всем, но хотя бы один пользователь может что-то сделать).

Например, вы можете временно заблокировать использование каталога контейнера, одновременно внося другие изменения в разрешения в этой структуре каталога, а затем повторно разрешить доступ ко всему дереву за одну операцию (предоставляя +xкаталогу верхнего уровня).

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


7

Вам нужны + x разрешения для всех и всех родительских каталогов, чтобы cd или получить доступ к файлу в каталоге.

Вам нужны + r разрешения в каталогах, чтобы вывести список файлов. Итак, вот пример:

Вы можете выполнить эти команды, чтобы получить некоторые настройки:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Без прав:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Только выполнить

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Теперь с прочитанным:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Эта часть может немного сбивать с толку, но, только читая и не выполняя, вы можете фактически перечислить файлы в каталоге, но не читать метаданные inode, так что вы получите отказ в разрешении, но сможете увидеть список файлов. в каталоге, как показано ниже ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied

2
Спасибо @skrewler. Вы сказали: «Вам нужны + x разрешения для всех и всех родительских каталогов, чтобы cd или доступ к файлу в каталоге», - вот что я подумал. Затем мой вопрос: почему бы вы когда - нибудь дать + х разрешение на каталог , чьи родители ничего не имеют + х разрешение?
Амелио Васкес-Рейна

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

Выше должно было быть более ясным. Пользователь root с правами доступа ко всем родительским каталогам может выполнить монтирование привязки, чтобы другие пользователи могли получить доступ к каталогу. Так как они могли достичь / a / b / c / d / e, где только d или e имели глобальное выполнение, вы можете сделать монтирование привязки из / mnt / d -> / a / b / c / d / e, и пользователь мог бы достичь это, перейдя в точку монтирования. Это та же идея, что и создать жесткую ссылку где-то глубоко в дереве каталогов, которая в противном случае была бы недоступна. Символьные ссылки не работают, как это, хотя, требуется привязка.
скрюлер

2

Вы хотите использовать нерекурсивные +xразрешения в ситуации, которую вы дали:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Это предполагает, что пользователь является членом группы каждого каталога. Если нет, вам придется сделать chmod o+xдля любых таких каталогов.)

Для ls /a/b/c/d/e/folderуспешного выполнения пользователем необходимо иметь разрешение на выполнение для каждого каталога в пути и разрешение на чтение folder.

Если вы сделали

chmod g+x -R /a

это будет работать, но вы дадите группе разрешение на выполнение для каждого файла и каталога в / a. Это не нужно, а в случае файлов, вероятно, неправильно.


1

В конкретной ситуации, с которой вы сталкиваетесь, проблема заключается в том, что даже если у пользователя folderесть необходимые разрешения для доступа к нему из вашей собственной группы, если какая-либо из родительских папок folderнедоступна для этого пользователя, он не сможет доступ к внутреннему (то, что называется folderв вашем примере).

Если вы выполните:

chmod g-rwx -R /a/

тогда aи все его дети получат это разрешение.

Когда вы выполняете:

chmod g+rx -R /a/b/c/d/e/folder

тогда folderи все его дети также получат это разрешение. Но, с этой последней командой, папки a/, a/bи так далее , пока a/b/c/d/eне будет изменять их разрешения.


0

Распространенным случаем удаления бита x в каталогах является блокировка пользователей в их домашних каталогах. В оболочках с ограниченным доступом есть возможность запретить cdссылаться на абсолютные пути и запретить выполнение программ с использованием абсолютных путей. Они также не могут cd ..перейти в родительский каталог своего домашнего каталога и, следовательно, эффективно заблокированы и не могут запускать программы, которые не находятся в $ PATH.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.