Короткий ответ
У каждого файла есть владелец (пользователь) и группа-владелец; chown меняет владельца (и опционально группу через owner:group), а chgrp меняет только группу-владельца файла.
Как это работает подробнее
Ядро хранит UID владельца и GID группы в метаданных (inode) файла; при проверке доступа сначала сверяется UID процесса с владельцем, затем GID (и дополнительные группы процесса) с группой файла, и только если ни то, ни другое не совпало — применяются права «для остальных».
Пример кода
commands.sh
chown -R appuser:appgroup /opt/app
chgrp deploy /opt/app/release.tar.gzЧто использовать на практике
- Практика. смену владельца и группы часто делают одной командой chown user:group file, а рекурсивно для целого дерева каталогов — с флагом -R, что типично при разворачивании приложения под отдельным сервисным пользователем.
Подводные камни
- Риск. Частая ошибка — менять владельца файлов на root для «упрощения» вместо создания выделенного сервисного пользователя: это нарушает принцип минимальных привилегий и увеличивает ущерб при компрометации приложения.