- Команда chown в Linux
- Синтаксис
- Примеры
- Рекурсивно массово меняем права на папки и файлы
- Как рекурсивно изменить права доступа к файлу в Linux
- Chmod Рекурсивный
- Использование команды find
- Выводы
- Как установить права на файлы/папки рекурсивно в Linux
- How to Change Ownership of Files and Folders Recursively
- chown recursively
- Change both owner and group recursively
- Conclusion
Команда chown в Linux
В операционной системе Линукс множество пользователей и групп. При создании файла тот администратор, от чьего имени он был образован, становится его владельцем, который находится в собственной группе, но также может объединяться с другими. Утилита сhown (ее название произошло от сочетания слов «change» и «mode») позволяет изменять владельца или группу у папок и файлов. Когда меняется владелец, он получает возможность использовать иные возможности доступа и ограничить его для остальных администраторов. Подобное разрешение можно задавать при помощи чисел и символов.
Синтаксис
- USER (имя пользователя или идентификатор нового владельца)
- GROUP (название новой группы или ее индекс)
- FILE(s) (наименование одного или нескольких файлов, каталогов, ссылок).
- -c, —changes (подробный отчет о любых произошедших изменениях).
- -f, —silent, —quiet (сокращение данных, удаление сообщений о возможных неполадках).
- —dereference (поменять права для файла, помеченного символической ссылкой).
- -v, —verbose (используется для описания действий и вывода подробных данных о каждом обработанном файле).
- -h, —no-dereference (изменить полномочия касаемо символических ссылок, но оставить неизменными файлы, на которые они указывают).
- —from (изменить пользователя только для тех файлов, владельцем которых являются он и группа).
- -R, —recursive (последовательная обработка всех подкаталогов).
- -H (если передана символическая ссылка на каталог, перейти по ней).
- -L (переходить по всем символическим ссылкам на каталоги).
- -P (не переходить по символическим ссылкам на каталоги) (по умолчанию).
Примеры
Для первого примера изменим владельца «root» папки «katalog» на «ya». Для этого запустим команду без опций, укажем имя пользователя и путь к каталогу.
Меняем владельца и группу одновременно.
Чтобы изменить сразу владельца и группу необходимо применить двоеточие без промежуточных пробелов. Синтаксис данной процедуры такой: USER:GROUP KATALOG.
Для примера изменим владельца и group для каталога «katalog» на «ya» и «nogroup».
chown ya:nogroup /root/katalog
Тоже самое сделаем для документа «dokument».
Бывают ситуации, когда нужно поменять только группу. Для этого, впереди нужно добавить «:». Поменяем группу документа «dokument» на «nogroup».
Рекурсивно массово меняем права на папки и файлы
Чтобы последовательно (алгоритмически) проводить работу со всеми файлами и каталогами, используется аргумент -R (–recursive). Для удобства предварительно зайдем в целевую директорию с помощью команды cd.
Массово поменяем владельца и группу директории «primercataloga» включая вложенные папки и файлы.
ВАЖНО! Если слишком много файлов в каталоге, можно встретить ошибку «bash: /usr/bin/chown: Argument list too long». В таком случае требуется выполнить команду:
Если требуется поменять рекурсивно не только владельца и группу, а еще и права каталога, то используется другая команда chmod с таким же параметром -R (recursive).
Установим в директории /var/www 644. Что означает:
Как рекурсивно изменить права доступа к файлу в Linux
Если вы используете Linux в качестве основной операционной системы или управляете серверами Linux, вы столкнетесь с ситуацией, когда попытаетесь создать или отредактировать файл и получите ошибку «Permission deny». Как правило, ошибки, связанные с недостаточными разрешениями, можно решить, установив правильные права доступа или владельца .
Linux — это многопользовательская система, и доступ к файлам контролируется с помощью разрешений, атрибутов и владельцев файлов. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к файлам и каталогам.
Для получения дополнительной информации о правах доступа к файлам см. «Команда Umask в Linux» .
В этой статье мы объясним, как рекурсивно изменять права доступа к файлам и каталогам.
Chmod Рекурсивный
Команда chmod позволяет изменять права доступа к файлам в символьном или числовом режиме.
Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте команду chmod с параметром -R , ( —recursive ). Общий синтаксис для рекурсивного изменения прав доступа к файлу следующий:
Например, чтобы изменить права доступа для всех файлов и подкаталогов в каталоге /var/www/html на 755 вы должны использовать:
Режим также можно указать с помощью символьного метода:
chmod -R u=rwx,go=rx /var/www/html
Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при рекурсивном изменении разрешений файлов.
Использование команды find
Как правило, файлы и каталоги не должны иметь одинаковые разрешения. Большинству файлов не требуется разрешение на выполнение, тогда как вы должны установить разрешения на выполнение для каталогов, чтобы изменить их.
Наиболее распространенный сценарий — рекурсивное изменение разрешений файла веб-сайта на 644 и разрешений каталога на 755 .
find /var/www/html -type d -exec chmod 755 <> ;
find /var/www/html -type f -exec chmod 644 <> ;
find /var/www/html -type d -exec chmod u=rwx,go=rx <> ;
find /var/www/html -type f -exec chmod u=rw,go=r <> ;
Команда find ищет файлы или каталоги в /var/www/html и передает каждый найденный файл или каталог команде chmod для установки разрешений.
При использовании find с -exec команда chmod запускается для каждой найденной записи. Используйте команду xargs чтобы ускорить операцию, передав сразу несколько записей:
find /var/www/html -type d -print0 | xargs -0 chmod 755
find /var/www/html -type f -print0 | xargs -0 chmod 644
Выводы
Команда chmod с параметрами -R позволяет рекурсивно изменять права доступа к файлу.
Чтобы рекурсивно установить разрешения для файлов в зависимости от их типа, используйте chmod в сочетании с командой find .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Как установить права на файлы/папки рекурсивно в Linux
Слово рекурсия подходящее слово для того чтобы охарактеризовать работу этой команды по смене прав. Однако не всем знаком этот термин, полагаю можно не вдаваться в подробности, а просто сказать, что разговор идет о том, как можно сменить права доступа на директорию, а так же все вложенные директории и файлы.
Итак, для смены прав будет использоваться всё та же команда chmod, однако к ней будет добавлен параметр –R, который собственно и указывает на то, что необходимо сменить права не только самой директории, но и на вложенные папки и файлы.
Меняем права на директорию /home/qwerty, а так же на всё содержимое директории.
Цифра 755 содержит три атрибута, которые можно растолковать так:
7 — rwx — читать, писать, выполнять
6 — rw- — читать, писать
5 — r-x — читать, выполнять
4 — r— — читать
3 — -wx — писать, выполнять
2 — -w- — писать
1 — —x — выполнять
0 — — — ничего нельзя делать
Три цифры – три отдельных атрибута, первая – права для пользователя, вторая – права для группы, третья – права для остальных.
Кроме всего этого, можно по аналогии, как и с правами, сменить владельца каталогов и файлов в директории. Для этого достаточно воспользоваться командой chown с параметром –R.
chown –R qwerty:users /home/qwerty
Данная команда сменит владельца директории /home/qwerty, а так же все вложенные директории и файлы.
How to Change Ownership of Files and Folders Recursively
Learn how to use the chown command to recursively change the user and group ownership of files and directories in Linux command line.
chown owner_name file_or_folder
The problem arrives when you change the ownership of a directory, its content remains unchanged. The solution is not too complicated as well.
To change the ownership of all the contents of a directory, you can use the recursive option -R with chown command:
chown -R owner_name folder_name
If you want to change both owner and group recursively, you can use it in the following manner:
chown -R owner_name:group_name folder_name
Let’s see it in detail and also see how you can change user and group recursively. Things are a lot easier to understand if you are familiar with the concept of file ownership and permission.
chown recursively
To recursively change the ownership of a directory, use it like this:
chown -R new_owner_name directory_name
If you have to change the ownership of multiple directories with their contents, you can do it in the same line:
chown -R new_owner_name directory1 directory2 directory3
Let me show that with a sample example. I have a directory named new_dir with some content in it. This directory and its content are owned by the root user.
[email protected]:~# ls -l /home/abhi/ total 4 drwxr-xr-x 3 root root 4096 May 30 07:30 new_dir [email protected]:~# ls -l /home/abhi/new_dir/ total 20 -rw-r--r-- 1 root root 12813 May 30 07:30 new.txt drwxr-xr-x 2 root root 4096 May 30 07:30 one_more_dir
When I change the ownership of the new_dir, its ownership is changed:
[email protected]:~# chown abhi /home/abhi/new_dir [email protected]:~# ls -l /home/abhi/ total 4 drwxr-xr-x 3 abhi root 4096 May 30 07:30 new_dir
But the files and folders inside it are still owned by root.
[email protected]:~# ls -l /home/abhi/new_dir/ total 20 -rw-r--r-- 1 root root 12813 May 30 07:30 new.txt drwxr-xr-x 2 root root 4096 May 30 07:30 one_more_dir
Now, if I use the recursive option -R with chown command, it changes the ownership for everything inside the specified directory, not just the directory.
[email protected]:~# chown -R abhi /home/abhi/new_dir [email protected]:~# ls -l /home/abhi/new_dir/ total 20 -rw-r--r-- 1 abhi root 12813 May 30 07:30 new.txt drwxr-xr-x 2 abhi root 4096 May 30 07:30 one_more_dir
Change both owner and group recursively
The chown command allows you to change the owner as well as the group of files.
To recursively change the owner and group of a directory and all its content, use the chown command like this:
chown -R user_name:group_name directory_name
You can use the same for changing the ownership of multiple folders:
chown -R user_name:group_name dir1 dir2
Conclusion
Recently, I moved a self-hosted Ghost instance to a new server launched with DigitalOcean’s 1-click deployment. I had to upload the entire images folder from the backup (downloaded on the local system) to the new server. The system required changing the ownership of this image folder from root to ghost.
This method saved me the trouble. I hope this quick little tutorial helps you as well.
I highly recommend brushing up the basics of file permissions and ownership.
It’s one of the essential Linux concepts you must know.