Введение / Зачем это нужно
В Linux каждый файл и каталог имеет владельца (пользователя) и группу, а также набор прав доступа (чтение, запись, выполнение). Эти атрибуты определяют, кто может что делать с файлом. Управление ими критически важно для безопасности системы, совместной работы в команде и корректной работы приложений. Например, веб-сервер должен иметь доступ только к нужным файлам, а скрипты — права на выполнение. Это руководство поможет вам уверенно изменять владельца, группу и права доступа с помощью стандартных команд.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к терминалу Linux (локально или через SSH).
- Вы знаете базовые команды навигации (
cd,ls). - Для изменения чужих файлов потребуются права администратора (sudo). Если вы работаете со своими файлами, sudo не нужен.
- Установлены стандартные утилиты
chown,chgrp,chmod— они есть во всех дистрибутивах по умолчанию. - Вы знаете имя пользователя или группы, на которые хотите изменить атрибуты. Проверить существующих пользователей можно в
/etc/passwd, групп — в/etc/group.
Шаг 1: Проверка текущих прав доступа
Сначала нужно понять, как сейчас настроены права. Используйте команду ls -l для детального списка файлов.
ls -l файл
Пример вывода:
-rw-r--r-- 1 alice developers 1024 Feb 15 10:00 example.txt
Здесь:
-rw-r--r--— права доступа: владелец (alice) может читать и писать, группа (developers) — только читать, остальные — только читать.alice— владелец файла.developers— группа файла.
Для каталога права могут включать x (выполнение/доступ).
💡 Совет: Используйте
ls -ld каталогчтобы увидеть права на сам каталог, а не его содержимое.
Шаг 2: Изменение владельца файла (chown)
Команда chown меняет владельца файла или каталога. Синтаксис:
sudo chown [новый_владелец] файл
Пример: Сменить владельца example.txt на bob:
sudo chown bob example.txt
Рекурсивное изменение
Чтобы изменить владельца для всех файлов внутри каталога, добавьте флаг -R:
sudo chown -R bob /путь/к/каталогу
⚠️ Важно: Будьте осторожны с рекурсивным изменением в системных каталогах (например,
/etc), это может нарушить работу системы.
Изменение и владельца, и группы одновременно
Используйте двоеточие для указания группы:
sudo chown bob:developers example.txt
Это изменит владельца на bob и группу на developers. Если указать только группу (например, :developers), владелец останется прежним.
Шаг 3: Изменение группы файла (chgrp)
Если нужно сменить только группу, используйте chgrp:
sudo chgrp новая_группа файл
Пример:
sudo chgrp marketing example.txt
Альтернативно, через chown с двоеточием (как показано выше). Рекурсия через -R:
sudo chgrp -R marketing /путь/к/каталогу
Шаг 4: Настройка прав доступа (chmod)
Права доступа управляются тремя категориями: владелец (u), группа (g), остальные (o). Каждая категория может иметь права: чтение (r), запись (w), выполнение (x).
Символьный режим
Наиболее наглядный способ. Примеры:
- Добавить владельцу право на выполнение:
chmod u+x скрипт.sh - Убрать у группы и остальных право на запись:
chmod go-w файл - Дать всем полный доступ (осторожно!):
chmod a=rwx файл
Числовой (октальный) режим
Права задаются тремя цифрами (или четырьмя, включая специальные биты). Каждая цифра — сумма значений: r=4, w=2, x=1.
755— владелец: rwx (4+2+1=7), группа и остальные: rx (4+1=5).644— владелец: rw- (4+2=6), группа и остальные: r-- (4).
Пример:
chmod 755 скрипт.sh # Даёт владельцу полный доступ, группе и другим — чтение и выполнение.
Рекурсивное изменение
chmod -R 755 /путь/к/каталогу
💡 Совет: Для скриптов часто достаточно
chmod +x файл, что эквивалентноchmod a+x файл.
Шаг 5: Практические примеры и советы
Пример 1: Настройка веб-сервера
Владелец файлов веб-сайта — www-data, группа — developers, права: владелец читает/пишет, группа и другие — только читают.
sudo chown -R www-data:developers /var/www/html
sudo chmod -R 755 /var/www/html
sudo chmod -R 644 /var/www/html/*.html # Для HTML-файлов: владелец читает/пишет, другие — только читают.
Пример 2: Совместная работа над проектом
Все файлы в /project должны принадлежать группе team, с правами на запись для членов группы.
sudo chown -R :team /project
sudo chmod -R 775 /project # rwx для владельца и группы, rx для других.
Пример 3: Защита конфиденциального файла
Только владелец может читать и писать.
chmod 600 ~/.ssh/id_rsa
::in-article-ad
::
Шаг 6: Проверка результата
После изменений всегда проверяйте, что всё применилось корректно:
ls -l файл
Убедитесь, что отображается новый владелец, группа и права. Для каталога с рекурсивными изменениями проверьте несколько вложенных файлов.
Если права не изменились, возможно:
- Вы не использовали
sudoдля чужих файлов. - Указан несуществующий пользователь или группа (проверьте через
id пользовательилиgetent группа). - Файл находится на смонтированной файловой системе с опцией
noacl(например, некоторые FAT/NTFS), где права Linux не поддерживаются.
Возможные проблемы
Ошибка "Operation not permitted"
Произходит, если:
- Вы пытаетесь изменить владельца на другого пользователя без sudo.
- Файл находится на файловой системе, которая не поддерживает изменение владельца (например, смонтированная с
nosuidилиnoacl). Решение: Используйтеsudoили проверьте опции монтирования (mount).
Ошибка "No such file or directory" при chown/chgrp
Указанный пользователь или группа не существует.
Решение: Создайте пользователя/группу (sudo useradd имя, sudo groupadd имя) или укажите корректные.
Неправильные права после chmod
Вы могли перепутать числовой режим. Например, chmod 777 даёт полный доступ всем — это опасно.
Решение: Используйте минимально необходимые права. Для скриптов — 755 (владелец: rwx, группа и другие: rx). Для конфигов — 644 или 600.
Рекурсивное изменение затронуло симлинки
По умолчанию chown -R и chmod -R следуют за символическими ссылками. Чтобы изменить саму ссылку, а не целевой файл, используйте -h (где поддерживается). Будьте осторожны, чтобы не сломать систему.
Права не применяются к новым файлам
Новые файлы наследуют группа от родительского каталога, если установлен setgid-бит. Чтобы группа всегда была одинаковой, установите setgid на каталог:
sudo chmod g+s каталог
Теперь новые файлы в этом каталоге будут иметь группу каталога.
Вопросы и ответы
Q: Как изменить владельца и группу одновременно?
A: sudo chown пользователь:группа файл. Пример: sudo chown alice:devs file.txt.
Q: Что делать, если команда chown не работает?
A: Проверьте права sudo, существование пользователя/группы и файловую систему. Используйте id для проверки пользователя.
Q: Как дать права на выполнение скрипту?
A: chmod +x скрипт.sh или chmod 755 скрипт.sh.
Q: В чем разница между chown и chgrp?
A: chown меняет владельца (и optionally группу), chgrp меняет только группу. Для группы также можно использовать chown :группа файл.