Как работают права chmod и chown в Linux: простое объяснение с примерами
Пошаговое руководство для новичков: от понимания rwx до безопасного изменения прав и владельцев файлов
Введение
Если вы недавно перешли на Linux или просто столкнулись с ошибкой «Permission denied», эта статья для вас. Права доступа — одна из основ безопасности и удобства работы в Linux. Каждый файл и каталог имеет владельца, группу и набор разрешений для трёх категорий пользователей. Инструменты chmod и chown позволяют эти разрешения и владельцев менять.
В гайде мы разберём:
что означают буквы
r,w,xи как их читать в выводеls -l;как работают числовой и символьный режимы
chmod;как менять владельца и группу через
chown;какие права выставлять для типовых задач (веб-сервер, скрипты, общие папки);
типичные ошибки и как их избежать.
Материал рассчитан на новичков, но будет полезен и тем, кто хочет систематизировать знания.
Требования
Любой Linux-дистрибутив (Ubuntu, Debian, Fedora, CentOS, Arch и т.д.).
Доступ к терминалу.
Права суперпользователя (
sudo) для смены владельца и изменения прав чужих файлов.Базовое понимание командной строки:
cd,ls,pwd.
Шаг 1. Как читать права: вывод ls -l
Откройте терминал и выполните:
ls -lВы увидите строки вида:
-rw-r--r-- 1 user user 1024 Jan 1 12:00 file.txt
drwxr-xr-x 2 user user 4096 Jan 1 12:00 dirРазберём первую строку -rw-r--r--:
Первый символ — тип:
-обычный файл,dкаталог,lсимволическая ссылка.Следующие 9 символов разбиты на три группы по 3:
- rw- — права владельца (user);
- r-- — права группы (group);
- r-- — права остальных (others).
Буквы означают:
r(read) — чтение: для файла — просмотр содержимого, для каталога — список файлов внутри.w(write) — запись: для файла — изменение, для каталога — создание/удаление файлов.x(execute) — выполнение: для файла — запуск как программы/скрипта, для каталога — вход в него (cd).-— право отсутствует.
Далее идут: количество жёстких ссылок, владелец, группа, размер, дата и имя.
Шаг 2. Три категории пользователей
Linux делит всех на три категории:
1. Владелец (user, u) — пользователь, которому принадлежит файл. 2. Группа (group, g) — группа владельца. 3. Остальные (others, o) — все прочие пользователи.
Есть ещё a (all) — все три категории сразу. Права проверяются по первой подходящей категории: если вы владелец, применяются права владельца, даже если права группы шире.
Шаг 3. Числовой режим chmod
Каждое право имеет числовой вес:
r= 4w= 2x= 1
Сумма весов даёт цифру для категории. Например:
rwx= 4+2+1 = 7rw-= 4+2 = 6r-x= 4+1 = 5r--= 4---= 0
Три цифры задают права для владельца, группы и остальных. Примеры:
chmod 755 file→rwxr-xr-xchmod 644 file→rw-r--r--chmod 600 file→rw-------chmod 777 file→rwxrwxrwx(опасно!)
Синтаксис:
chmod 755 script.shШаг 4. Символьный режим chmod
Символьный режим удобен, когда нужно изменить только часть прав. Формат: [категория][оператор][права].
Категории:
u,g,o,a.Операторы:
+добавить,-убрать,=установить точно.Права:
r,w,x.
Примеры:
chmod u+x script.sh # владельцу добавить выполнение
chmod go-w file.txt # убрать запись у группы и остальных
chmod a+r file.txt # всем добавить чтение
chmod u=rw,go=r file.txt # владельцу rw, группе и остальным только rМожно комбинировать через запятую.
Шаг 5. Рекурсивное изменение прав
Флаг -R применяет изменения ко всем вложенным файлам и каталогам:
chmod -R 755 /var/www/htmlБудьте осторожны: рекурсивно менять права на системных каталогах (/, /etc, /usr) опасно. Сначала проверьте, что делает команда, на тестовом каталоге.
Шаг 6. Смена владельца: chown
Команда chown меняет владельца и/или группу файла. Синтаксис:
chown пользователь файл
chown пользователь:группа файл
chown :группа файлПримеры:
sudo chown user file.txt
sudo chown user:developers file.txt
sudo chown -R www-data:www-data /var/www/htmlФлаг -R — рекурсивно. Для смены только группы есть команда chgrp, но chown :group делает то же самое.
Шаг 7. Специальные биты: SUID, SGID, Sticky
Помимо rwx, есть специальные биты:
SUID (4) — программа выполняется с правами владельца файла. Пример:
/usr/bin/passwd.SGID (2) — программа выполняется с правами группы; для каталога — новые файлы наследуют группу каталога.
Sticky (1) — в каталоге удалять файлы может только владелец файла (или root). Классический пример:
/tmp.
Установка:
chmod 4755 program # SUID
chmod 2755 shared_dir # SGID
chmod 1777 /tmp # StickyВ выводе ls -l SUID отображается как s вместо x у владельца, SGID — у группы, Sticky — как t в конце.
Шаг 8. Права по умолчанию: umask
Когда вы создаёте файл или каталог, права назначаются автоматически с учётом маски umask. Посмотреть текущую маску:
umaskОбычно 022. Это значит: из базовых прав (666 для файлов, 777 для каталогов) вычитаются биты маски. Для файлов получится 644, для каталогов 755.
Изменить маску на текущую сессию:
umask 027Чтобы задать постоянно, добавьте строку в ~/.bashrc или ~/.profile.
Шаг 9. Практические примеры
Веб-сервер (Apache/Nginx):
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;Скрипт:
chmod 755 backup.sh
./backup.shПриватный ключ SSH:
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.sshОбщая папка для группы:
sudo chown :developers /srv/project
sudo chmod 2775 /srv/projectШаг 10. Как проверить результат
После изменений всегда проверяйте:
ls -l file.txt
stat file.txtstat покажет права в числовом и символьном виде, владельца, группу и специальные биты.
Типичные ошибки
1. chmod 777 на всё — открывает файлы для записи всем. Это дыра в безопасности. Используйте минимально необходимые права. 2. Рекурсивный chmod на системных каталогах — может сломать систему. Никогда не делайте chmod -R 777 /. 3. Забыли sudo — смена владельца требует прав root. Без sudo получите «Operation not permitted». 4. Путаница с категориями — помните, что права проверяются по первой подходящей категории: владелец → группа → остальные. 5. Игнорирование umask — новые файлы могут получать не те права, которые вы ожидаете. 6. Снятие x с каталога — без x нельзя войти в каталог и обратиться к файлам внутри, даже если у файлов есть права. 7. Изменение прав без бэкапа — перед массовыми операциями делайте резервную копию или тестируйте на копии.
FAQ
Что означает ошибка «Permission denied»? У вас нет нужного права (r, w или x) на файл или каталог. Проверьте ls -l и при необходимости измените права через chmod или владельца через chown.
Чем отличается chmod от chown? chmod меняет права доступа (r/w/x), а chown — владельца и группу файла.
Как дать всем полный доступ? chmod 777 file или chmod a+rwx file. Но это небезопасно — используйте только в изолированной среде.
Почему после chmod 644 скрипт не запускается? Потому что нет бита выполнения x. Нужно chmod 755 script.sh или chmod +x script.sh.
Как узнать, какие права у файла в числовом виде? Выполните stat -c "%a %n" file — покажет числовое значение прав.
Можно ли изменить права на файл, который мне не принадлежит? Только если вы root или у вас есть соответствующие полномочия (например, через sudo).
Что такое sticky bit и зачем он нужен? Это специальный бит, который запрещает удалять файлы в каталоге всем, кроме владельца файла. Применяется для общих каталогов вроде /tmp.
Итог
Права доступа в Linux — это не сложно, если запомнить три категории пользователей и три типа прав. chmod управляет правами, chown — владельцем и группой. Используйте числовой режим для быстрой установки прав, символьный — для точечных изменений. Всегда следуйте принципу минимальных привилегий: давайте только те права, которые действительно нужны. И не забывайте проверять результат через ls -l или stat. Теперь вы сможете уверенно решать задачи с правами доступа и избегать типичных ошибок.
Читайте также
Комментарии
Комментарии доступны только зарегистрированным пользователям. Войти
- Пока нет комментариев. Будьте первым.



