Понимание разрешений файлов в Linux и как ими управлять
Одним из ключевых оснований безопасности Linux системы и многопользовательской архитектуры является модель разрешений файлов. В отличие от Windows, Linux строго соблюдает права собственности и контроль доступа для каждого файла и каталога в системе. Освоение разрешений файлов — это не только вопрос безопасности, но и необходимость для управления серверами, развертывания программного обеспечения, запуска скриптов и автоматизации задач.
Модель разрешений файлов в Linux
Каждый файл и каталог в Linux имеет три типа прав доступа, назначенных трем типам пользователей:
| Класс пользователя | Описание |
|---|---|
| владелец | Пользователь, владеющий файлом |
| группа | Пользователи в группе файла |
| другие | Все остальные пользователи системы |
Каждому классу могут быть даны три типа разрешений:
| Разрешение | Символ | Значение |
|---|---|---|
| чтение | r | Просмотр содержимого файла / список каталога |
| запись | w | Изменение файла или каталога |
| выполнение | x | Запуск файла или доступ к каталогу |
Просмотр разрешений с помощью ls -l
Используйте команду ls -l для отображения разрешений файлов:
ls -l myscript.sh
Вывод:
-rwxr-xr-- 1 alice devs 2048 Jan 25 10:00 myscript.sh
Разбор:
- – → обычный файл
- rwx → владелец (чтение/запись/выполнение)
- r-x → группа (чтение/выполнение)
- r– → другие (только чтение)
Изменение разрешений с помощью chmod
📌 Символьный режим:
chmod u+x myscript.sh # Add execute to user chmod g-w myscript.sh # Remove write from group chmod o=r myscript.sh # Set read-only for others
📌 Числовой режим:
chmod 755 myscript.sh # rwx for owner, rx for group, rx for others
| Восьмеричный | Значение |
|---|---|
| 7 | rwx |
| 6 | rw- |
| 5 | r-x |
| 4 | r– |
| 0 | — |
Пример:
chmod 644 file.txt # owner: rw-, group: r--, others: r-- chmod 700 script.sh # owner: rwx, group/others: ---
Управление правами собственности с помощью chown и chgrp
Изменить владельца файла:
chown alice file.txt
Изменить группу:
chgrp devs file.txt
Изменить оба:
chown bob:admins file.txt
Используйте -R для применения изменений рекурсивно:
chown -R www-data:www-data /var/www/
Специальные биты разрешений
Linux поддерживает три специальных режима, которые изменяют поведение по умолчанию:
1. SUID (Set User ID)
- Применяется к исполняемым файлам
- Запускается с привилегиями владельца, а не вызывающего
chmod u+s /usr/bin/passwd
🔍 Вывод ls -l: -rwsr-xr-x
Случай использования: /usr/bin/passwd должен выполняться от имени root для обновления /etc/shadow.
SGID (Set Group ID) s
- На файлах: выполняется с привилегиями группы файла
- На каталогах: новые файлы наследуют группу
chmod g+s /opt/project
🔍 Вывод ls -l: drwxr-sr-x
Полезно в общих папках разработки.
Sticky Bit t
- На каталогах: только владелец может удалить/переименовать свои файлы
- Распространено в /tmp для защиты пользовательских файлов
chmod +t /shared/folder
ls -ld /tmpdrwxrwxrwt 10 root root 4096 Янв 28 12:00 /tmp
Понимание umask
umask устанавливает разрешения по умолчанию для новых файлов/каталогов:
Проверьте текущее значение: umask
Общее значение: 0022
| Файл | Разрешения по умолчанию | С umask 0022 |
|---|---|---|
| Файл | 666 → 644 | rw-r–r– |
| Каталог | 777 → 755 | rwxr-xr-x |
Установите временный umask:
umask 0077 # Files: 600, Dirs: 700
Рекурсивные исправления разрешений
Установите разрешения для папки и файла отдельно:
find /my/project -type d -exec chmod 755 {} ; find /my/project -type f -exec chmod 644 {} ;
Заключение
Разрешения файлов в Linux обеспечивают детализированный контроль доступа для безопасности, многопользовательских сред и автоматизации. Понимание того, как просматривать, изменять и применять разрешения, позволяет вам уверенно управлять серверами, защищать данные и безопасно сотрудничать.
Независимо от того, развертываете ли вы веб-приложения, управляете облачными серверами или создаете оболочечные скрипты — знание работы с chmod, chown, umask и специальными битами разрешений является необходимым.
