Как изменить права на папку в Linux
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Изменение прав доступа к папке в Linux: Полное руководство
В Linux права доступа к файлам и папкам управляются с помощью команд chmod (change mode) и chown (change owner). Для папок применяются те же принципы, что и для файлов, но с важными нюансами, связанными с рекурсивным изменением и особым значением битов прав.
Основы: Права доступа в Linux
Права доступа состоят из трёх категорий пользователей:
- Владелец (owner/user) — пользователь, создавший файл/папку.
- Группа (group) — группа пользователей, связанная с объектом.
- Остальные (others) — все остальные пользователи системы.
Для каждой категории определяются три типа прав:
- Чтение (read,
r) — для папки: возможность просматривать список содержимого (командаls). - Запись (write,
w) — для папки: возможность создавать, удалять и переименовывать файлы и подпапки внутри. - Исполнение (execute,
x) — для папки: право на вход (traverse) в папку (командаcd). Это ключевое отличие от файлов!
Синтаксис команды chmod
Есть два основных способа задания прав: символьный (буквенный) и восьмеричный (цифровой).
1. Символьный (буквенный) метод
Формат: chmod [опции] <категория><оператор><права> <имя_папки>
- Категории:
u(владелец),g(группа),o(остальные),a(все, по умолчанию). - Операторы:
+(добавить),-(забрать),=(установить точно). - Права:
r,w,x.
# Примеры использования символьного метода
# Дать группе право на запись в папку reports
chmod g+w reports/
# Забрать у всех остальных право на чтение и запись папки private
chmod o-rw private/
# Установить точные права: владелец - всё, группа - чтение и вход, остальные - ничего
chmod u=rwx,g=rx,o= shared_folder/
2. Восьмеричный (цифровой) метод
Каждая категория кодируется цифрой от 0 до 7, суммируя права:
4= чтение (r)2= запись (w)1= исполнение/вход (x)0= нет прав
Три цифры подряд обозначают права для владельца, группы и остальных соответственно.
# Примеры использования цифрового метода (самый распространённый способ)
# Права 755: владелец - rwx, группа - r-x, остальные - r-x
# Это стандартные права для веб-папок, доступных для чтения всем.
chmod 755 public_html/
# Права 770: владелец и группа - rwx, остальные - нет прав
chmod 770 team_project/
# Права 700: только владелец имеет полный доступ, все остальные заблокированы
chmod 700 secret_data/
Ключевые опции и рекурсивное изменение
Для работы с содержимым папки используется ключ -R (recursive).
# Рекурсивно изменить права для всей папки и всего её содержимого
chmod -R 755 /var/www/my_site/
# Рекурсивно добавить право на исполнение для всех подпапок (чтобы в них можно было зайти),
# но не для обычных файлов внутри. Часто используется при развёртывании.
find /opt/myapp/ -type d -exec chmod 755 {} \;
Специальные биты прав: SUID, SGID и Sticky Bit
Для папок особенно важен SGID-бит (Set Group ID). Если он установлен на папке, все новые файлы и подпапки, созданные в ней, будут наследовать группу владельца самой папки, а не первичную группу пользователя, который их создал. Это критически важно для общих директорий в командах.
# Установить SGID бит (вторая цифра в начале): 2775
chmod 2775 /shared/team_folder/
# Или символьным методом
chmod g+s /shared/team_folder/
Изменение владельца и группы: команда chown
Права бессмысленны без правильного владельца. Команда chown меняет владельца и/или группу.
# Сменить владельца папки на пользователя www-data
chown www-data /var/www/html
# Сменить группу папки на dev-team
chown :dev-team /projects/api
# Рекурсивно сменить и владельца, и группу
chown -R deploy:deploy /opt/application/
# Установить SGID бит И сменить группу для совместной работы
chown :dev-team /shared_space && chmod 2775 /shared_space
Практические рекомендации и безопасность
- Принцип минимальных привилегий: Давайте ровно столько прав, сколько нужно для работы. Не используйте
777(полный доступ всем) на продакшене — это грубая ошибка безопасности. - Права по умолчанию: На итоговые права влияет
umaskпользователя. Например,umask 0022забирает право на запись у группы и остальных. - Проверка прав: Всегда проверяйте результат команд
ls -laилиstat.ls -ld /path/to/folder # Ключ -d покажет права самой папки, а не её содержимого drwxr-sr-x 2 deploy dev-team 4096 ... /shared # Здесь виден SGID бит ('s' вместо 'x' у группы) - Контекст SELinux/AppArmor: В современных дистрибутивах помимо традиционных прав DAC (Discretionary Access Control) существуют системы принудительного контроля доступа (MAC), такие как SELinux. Если после корректной настройки
chmod/chownдоступ всё равно запрещён, проверьте контекст безопасности:ls -Zи управляйте им командамиchcon,semanage fcontext,restorecon.
Итог: Базовая операция chmod 755 папка решает многие задачи. Однако для эффективного администрирования и обеспечения безопасности необходимо глубоко понимать различия между правами для файлов и папок, уметь применять рекурсивные изменения и использовать специальные биты, особенно SGID, для организации корректной совместной работы.