Изменить разрешение папки

Изменить разрешение папки

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

решение1

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

find . -type d | xargs chmod o=rx 
find . -type f | xargs chmod o=

findрекурсивно найдет файлы ( -type f) и каталоги ( -type d) и выведет их имена (без другого указанного действия), и это будет передано в xargs, который выполнит свои аргументы с файлами, которые он считывает из канала. chmodизменяет разрешения для других ( o, то есть ни для вас, ни для других в группе, владеющей файлом) ровно на ( =) чтение/список ( rx) для папок и ничего для простых файлов.


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

find . -type d -print0 | xargs -0 chmod o=rx 
find . -type f -print0 | xargs -0 chmod o=

или встроенный find -exec:

find . -type d -exec chmod o=rx '{}' ';'
find . -type f -exec chmod o= \{\} \;

Обратите внимание, что вы можете либо заключить скобки и точку с запятой в кавычки, как в первой строке, либо экранировать их, как во второй, они просто должны быть там в отдельных аргументах. Кроме того, -execбудет выполнять chmod один раз для каждого файла, в то время как xargs будет делать это за минимальное количество команд (на основе максимальной длины командной строки). Вот почему я обычно предпочитаю xargs.

решение2

sudo chown -R username:root "/directory you want"

-Rпредставляет собой рекурсию для всех ее подкаталогов и файлов.

имя пользователя- текущий пользователь

Полезно для разрешений на чтение/запись/выполнение

Связанный контент