В проектах файлы и папки часто создаются различными способами — через FTP-клиент, панель управления хостингом, командную строку или с помощью скрипта. Это приводит к тому, что их владельцы могут различаться. Возьмем пример с Битриксом: он работает от имени пользователя bitrix в группе bitrix. Если вы создаете папки и файлы через FTP-клиент, они могут быть созданы от имени пользователя root. При проверке системы или создании бэкапа может возникнуть ошибка:
Файлы и папки недоступны для чтения или записи (показаны первые 10)
Рекурсивное изменение владельца папки
Чтобы устранить проблему, выполните в консоли следующую команду:
chown -R bitrix:bitrix /home/bitrix/www/
chown -R bitrix:bitrix /home/bitrix/www/
для дополнительных сайтов:
chown -R bitrix:bitrix /home/bitrix/ext_www/папка_сайта/
Ставим права на папки основного сайта:
cd /home/bitrix/www
find . -type d -exec chmod 775 {} ;
find . -type f -exec chmod 664 {} ;
find . -type d -exec chown bitrix:bitrix {} ;
find . -type f -exec chown bitrix:bitrix {} ;
Ставим права на папки дополнительных сайтов:
cd /home/bitrix/ext_www
find . -type d -exec chmod 775 {} ;
find . -type f -exec chmod 664 {} ;
find . -type d -exec chown bitrix:bitrix {} ;
find . -type f -exec chown bitrix:bitrix {} ;
Здесь -R обозначает рекурсивное выполнение (включая вложенные файлы и папки). Замените bitrix:bitrix на нужное имя_пользователя:группа_пользователя, а /home/bitrix/www/ — на нужный каталог.
В CentOS 7 (как и в большинстве дистрибутивов Linux) для смены владельца файла или директории используется команда chown.
Основной синтаксис:
bash Скопировать
Закрыть блок
sudo chown [НОВЫЙ_ВЛАДЕЛЕЦ] [ФАЙЛ_ИЛИ_ДИРЕКТОРИЯ]
Или, если вы также хотите изменить группу:
bash Скопировать
Закрыть блок
sudo chown [НОВЫЙ_ВЛАДЕЛЕЦ]:[НОВАЯ_ГРУППА] [ФАЙЛ_ИЛИ_ДИРЕКТОРИЯ]
Разбор:
-
sudo: Командаchownтребует прав суперпользователя (root) для смены владельца на другого пользователя. Если вы уже root,sudoне нужен. -
chown: Сама команда (change owner). -
[НОВЫЙ_ВЛАДЕЛЕЦ]: Имя пользователя, которому вы хотите передать владение. Это может быть имя пользователя (например,apache,nginx,myuser) или его UID (числовой идентификатор пользователя). -
:[НОВАЯ_ГРУППА](необязательно): Если вы хотите одновременно сменить и группу файла/директории. Указывается через двоеточие после имени владельца. Это может быть имя группы (например,apache,webdev) или ее GID (числовой идентификатор группы). -
Если вы хотите изменить только группу, оставив текущего владельца, можно использовать:
sudo chown :[НОВАЯ_ГРУППА] [ФАЙЛ_ИЛИ_ДИРЕКТОРИЯ](хотя для этого чаще используется командаchgrp). -
[ФАЙЛ_ИЛИ_ДИРЕКТОРИЯ]: Путь к файлу или директории, владельца которой вы хотите изменить.
Примеры:
- Сменить владельца файла
myfile.txtна пользователяjohn:
bash Скопировать
Закрыть блок
sudo chown john myfile.txt
- Сменить владельца файла
config.phpна пользователяapacheи группуapache:
bash Скопировать
Закрыть блок
sudo chown apache:apache config.php
- Сменить владельца директории
/var/www/htmlи всего ее содержимого (рекурсивно) на пользователяnginxи группуnginx: Для рекурсивного изменения используется флаг-R(или--recursive).
bash Скопировать
Закрыть блок
sudo chown -R nginx:nginx /var/www/html
Внимание: Будьте очень осторожны при использовании -R, особенно с системными директориями. Убедитесь, что указали правильный путь.
- Сменить владельца файла, используя UID (например, 1001) и GID (например, 1002):
bash Скопировать
Закрыть блок
sudo chown 1001:1002 /path/to/somefile
Как проверить владельца:
Используйте команду ls -l:
bash Скопировать
Закрыть блок
ls -l myfile.txt
Вывод будет выглядеть примерно так:
-rw-r--r-- 1 john users 1024 Dec 10 10:00 myfile.txt
^ ^
| |
Владелец Группа
Важные моменты:
-
Только пользователь
root(или пользователь с правамиsudo) может менять владельца файла на любого другого пользователя. -
Обычный пользователь может сменить владельца файла, только если он является текущим владельцем этого файла, и только на самого себя (что бессмысленно) или отдать файл другому пользователю (что обычно запрещено системными политиками по умолчанию).
-
При смене владельца директории с флагом
-Rправа меняются для самой директории, всех вложенных файлов и всех вложенных поддиректорий.
Выберите подходящий вариант команды для вашей задачи.
Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.