Рекурсивное изменение прав доступа на файлы и директории
Права доступа к файлам и директориям является неотъемлемой частью любой операционной системы. И в этой статье описаны возможности по рекурсивной настройке этих прав доступа.
Изменение прав доступа осуществляется при помощи команды chmod
, рекурсивное при добавлении опции -R
:
-R
- рекурсивный обход директорий и файлов.MODE
- набор прав доступа для их установки.DIR
- файл или директория, у которых необходимо установить определённые права доступа.
В итоге, команда должна выглядеть так:
Но, стоит учитывать, что таким образом директории и файлы примут одинаковые права доступа. Чтобы избежать этого, можно воспользоваться командой find
, которая отфильтрует директории и файлы друг от друга:
Команда find
ищет директории (-type d
) и файлы (-type f
) и скармливает их команде chmod
, а та, в свою очередь, уже расставляет права доступа. При использовании -exec
, chmod
выполняется для каждого найденного элемента поочерёдно. Можно оптимизировать и записать с использованием xargs
:
При xargs
, chmod
выполняется сразу для нескольких записей одновременно, как сообщает Daniel Miessler:
This is where -exec breaks down and xargs shows its superiority. When you use -exec to do the work you run a separate instance of the called program for each element of input. So if find comes up with 10,000 results, you run exec 10,000 times. With xargs, you build up the input into bundles and run them through the command as few times as possible, which is often just once. When dealing with hundreds or thousands of elements this is a big win for xargs.
Если необходимо запустить рекурсивное изменение прав доступа начиная с текущей директории, то /var/www/html
необходимо поменять на точку: