Введение / Зачем это нужно
Linux использует трёхбитовую систему разрешений для каждого файла: чтение (r), запись (w) и выполнение (x). Понимание того, как работают эти разрешения, позволяет безопасно обрабатывать данные, защищать конфиденциальную информацию и автоматизировать задачи с помощью скриптов. В этом гайде вы узнаете, как просматривать текущие права, изменять их с помощью chmod и chown, а также решать типичные проблемы, связанные с доступом.
Требования / Подготовка
- Доступ к терминалу (SSH, VNC или локальная консоль).
- Базовое знакомство с базовыми командами Linux (
ls,cd,cat). - Для изменения владельца или критически важных файлов могут потребоваться права администратора (
sudo). - Дистрибутивы: Ubuntu 22.04 LTS, Debian 12, Fedora 38 или CentOS Stream 9 (команды идентичны во всех основных дистрибутивах).
Шаг 1: Просмотр текущих разрешений
Первым делом вам нужно увидеть, какие права уже установлены. Команда ls -l выводит подробный список, в котором каждая позиция описывает владельца, группу и три набора разрешений.
Команда ls -l
# Пример: список файла mydata.txt
ls -l /home/user/mydata.txt
Вывод будет выглядеть так:
-rw-r--r-- 1 user staff 2048 Jan 15 10:30 mydata.txt
-означает обычный файл.rw-для владельца → права чтения и записи.r--для группы и других → только чтение.
💡 Совет: Сохраните этот вывод в текстовом файле (
ls -l > permissions.txt), чтобы иметь снимок прав для последующего анализа.
Шаг 2: Изменение прав с помощью chmod
chmod позволяет изменять набор разрешений. Вы можете использовать символический режим (интуитивно понятный) или числовой режим (быстрый для стандартных изменений).
Символический режим
# Добавить чтение для группы
chmod g+r /path/to/file
# Удалить запись у других пользователей
chmod o-w /path/to/file
# Добавить выполнение владельцу (создание исполняемого скрипта)
chmod u+x /path/to/script.sh
Числовой режим (опционально)
# 644 = rw-r--r-- (чтение для всех, запись только для владельца)
chmod 644 /path/to/file
# 750 = rwxr-x--- (выполнение для владельца, чтение для группы)
chmod 750 /path/to/script.sh
⚠️ Важно: Изменение прав на слишком открытые (
777) может создать уязвимость. Используйте их только временно для отладки.
Шаг 3: Изменение владельца и группы с помощью chown
Иногда файл должен принадлежать другому пользователю или группе, например, после переноса ответственности. chown изменяет владельца и группу одновременно.
# Перевести файл к alice в группе staff
sudo chown alice:staff /path/to/file
# Только изменить владельца (группа остается без изменений)
sudo chown alice /path/to/file
# Только изменить группу (владелец остается без изменений)
sudo chgrp newgroup /path/to/file
💡 Совет: Используйте
sudo, если вы не root. Безsudoвы сможете изменять только файлы, которыми владеете.
Шаг 4: Решение распространенных проблем с правами
Даже при правильных командах могут возникнуть ошибки. Вот наиболее частые проблемы и быстрые решения.
Permission deniedпри чтении/записи- Проверьте
ls -l. Убедитесь, что у вас есть соответствующее разрешение (rдля чтения,wдля записи). - Если вы не владеете файлом, добавьте разрешения:
chmod u+r+w /path/to/file.
- Проверьте
Operation not permittedпри удалении- Возможно, у вас нет права записи (
w) или файл помечен как только для чтения (chmod 444). - Снимите ограничение:
chmod u+w /path/to/fileзатем повторите удаление.
- Возможно, у вас нет права записи (
No such file or directoryпослеchmod- Убедитесь, что путь корректен (
/home/user/file.txt, а не/home/user/file).
- Убедитесь, что путь корректен (
chown: невозможно разрешить '<user>': Пользователь не существует- Проверьте, что пользователь/группа существуют (
id <user>). Создайте, если необходимо (sudo adduser).
- Проверьте, что пользователь/группа существуют (
🔎 Полезная команда:
find /path -type f -perm /o=w -lsнайдёт все файлы, доступные для записи другими пользователями.
Проверка результата
После внесения изменений подтвердите, что всё работает:
# Повторный просмотр разрешений
ls -l /path/to/file
# Попытка чтения (если файл текстовый)
cat /path/to/file
# Попытка записи (создать временный файл)
touch /path/to/newfile
# Проверка владельца
stat -c "%U:%G" /path/to/file
Если все команды выполняются без ошибок, вы успешно настроили права доступа.
Возможные проблемы
- Смешивание символического и числового режимов – используйте последовательные команды (
chmod u+x fileзатемchmod 755 file), чтобы избежать непредвиденных изменений. - Забывание использовать
sudo– это приводит к ошибкеchown: невозможно разрешить.... Всегда запускайте команды с elevated правами, если изменяете системные файлы. - Неправильный порядок аргументов в
chown– синтаксисuser:group. Ошибкаchown file user groupработает только в GNU coreutils, но может вызвать путаницу. - Игнорирование
umask– новые файлы получают права, ограниченные маской umask. Проверьте текущую маску (umask), если unexpected разрешения появляются. - Неправильное использование
chmod 777– это открывает файл для всех пользователей, что создаёт уязвимость безопасности. Используйте только для временных файлов, затем восстановите более строгие права.
Теперь у вас есть полный набор инструментов для управления правами доступа к файлам в Linux и устранения распространённых проблем. Экспериментируйте осторожно и помните: правильные права — это основа безопасной системы.