Хостинг

CHOWN | ЧТОУН? Рекурсивное изменение владельца папки centos Битрикс

CHOWN | ЧТОУН? Рекурсивное изменение владельца папки centos Битрикс

В проектах файлы и папки часто создаются различными способами — через 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 (числовой идентификатор группы).


	<li>Если вы хотите изменить только группу, оставив текущего владельца, можно использовать: `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` права меняются для самой директории, всех вложенных файлов и всех вложенных поддиректорий.


 Выберите подходящий вариант команды для вашей задачи.