chown Изменить владельца
| Команда | Описание |
|---|---|
| chown linda /home/account | изменение владельца каталога /home/account на linda |
| touch – -p | создание с именем "-p", – говорят, что дальше опций нет. |
| sudo chgrp -R haproxy /etc/haproxy/ | Сделать владельцем папки и файлов внутри /etc/haproxy группы haproxy |
# cp Копирование файла
| Команда | Описание |
|---|---|
| sudo cp 2.txt{,.back} | Копирование файла 2.txt и дописывание ему расширение .back |
chmod Права на файлы и папки
Просмотр прав
stat имя файла
myuser@astra:~$ stat /bin/passwd Файл: /bin/passwd Размер: 68840 Блоков: 136 Блок В/В: 4096 обычный файл Устройство: 8/4 Инода: 788635 Ссылки: 1 Доступ: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Доступ: 2026-03-19 15:22:26.560593390 +0300 Модифицирован: 2026-01-28 20:40:25.000000000 +0300 Изменён: 2026-03-16 15:53:15.812000000 +0300 Создан: 2026-03-16 15:43:31.132000000 +0300
Установка прав на папки и файлы
chmod [опции] <права> <файлы>
| -R или —recursive | рекурсивно изменяет права доступа для всех файлов и подкаталогов внутри указанного каталога |
| -f или —silent, —quiet | подавляет вывод сообщений об ошибках или предупреждениях |
| -v или —verbose | выводит подробный отчет о каждом изменении прав доступа |
| -c или —change | ключ действует аналогично ключу —verbose. Он выводит информацию только если с файлом или директорией были произведены какие-либо действия |
Символьная нотация
chmod [ugoa] [+-=] [rwx] файл(ы)
[ugoa] указывает, к кому применяются изменения:
| u | владелец файла |
| g | группа файла |
| o | остальные пользователи (не владелец и не входящие в группу) |
| a | все (при использовании заменяет собой ugo) |
[+-=] определяет, что нужно сделать с разрешениями:
| + | добавить разрешение |
| : | удалить разрешение |
| = | установить разрешение точно (заменить текущие разрешения) |
— [rwx] представляет собой комбинацию символов `r`, `w` и `x`, обозначающих разрешения:
| r | разрешение на чтение |
| w | разрешение на запись |
| x | разрешение на выполнение |
Примеры использования.
| chmod u+x файл | добавить право выполнения для владельца файла |
| chmod go-rw файл | удалить право чтения и записи для группы и остальных пользователей |
| chmod a=rwx файл | установить полные права (чтение, запись и выполнение) для всех |
Числовая нотация
Числовая нотация состоит из трех цифр, где каждая цифра представляет разрешения для владельца, группы и остальных пользователей соответственно. Каждая цифра состоит из суммы разных значений, присвоенных разным разрешениям:
| 4 | разрешение на чтение (read) |
| 2 | разрешение на запись (write) |
| 1 | разрешение на выполнение (execute) |
| 0 | отсутствие разрешения |
Посмотреть числовую нотацию для папки или файла
stat -c "%a %n" conf
Для установки конкретных разрешений, сложите соответствующие значения:
- только разрешение на чтение, используйте 4.
- чтение и запись, сложите 4 и 2, что даст 6.
- чтение и выполнение, сложите 4 и 1, что даст 5.
- чтение, запись и выполнение, сложите 4, 2 и 1, что даст 7.
| chmod 644 myfile | Данная команда установит права -rw-r—r—, где владелец имеет права на чтение и запись, а группа и остальные пользователи могут только читать файл |
| chmod 755 script.sh | Эта команда поможет установить права -rwxr-xr-x, где владелец имеет полные права, а остальные пользователи могут только читать и выполнять скрипт |
| Команда | Описание |
|---|---|
| rw------- (600) | Только владелец имеет права на чтение и запись. |
| -rw-r--r-- (644) | Только владелец имеет права на чтение и запись; группа и другие могут только читать. |
| -rwx------ (700) | Только владелец имеет права на чтение, запись и выполнение. |
| -rwxr-xr-x (755) | Владелец имеет права на чтение, запись и выполнение; группа и другие могут только читать и выполнять. |
| -rwx--x--x (711) | Владелец имеет права на чтение, запись и выполнение; группа и другие могут только выполнять. |
| -rw-rw-rw- (666) | Все могут читать и писать в файл. (Будьте осторожны с этими разрешениями). |
| -rwxrwxrwx (777) | Все могут читать, писать и выполнять. (Опять же, эта настройка разрешений может быть опасной). |
Вот некоторые общие настройки для каталогов:
| Команда | Описание |
|---|---|
| drwx------ (700) | Только пользователь может читать и писать в этом каталоге. |
| drwxr-xr-x (755) | Все могут читать этот каталог, но его содержимое может изменять только пользователь. |
Изменения прав для каталога
Как и для обычных файлов, вы можете изменять права доступа для каталогов с помощью команды chmod. Права доступа к каталогам контролируют, какие операции можно выполнять внутри каталога: просмотр его содержимого, создание, удаление файлов и каталогов внутри него и так далее.
Для изменения прав доступа к каталогу используется та же числовая и символьная нотация, которую мы рассматривали ранее. Укажите имя каталога, к которому вы хотите применить изменения прав доступа вместо имени файла. Давайте рассмотрим примеры в двух нотациях.
Символьная нотация
| chmod u+rwx директория | добавить владельцу каталога права на чтение, запись и выполнение |
| chmod go-r директория | удалить права на чтение для группы и остальных пользователей для каталога |
| chmod a+rx директория | предоставить всем пользователям права на чтение и выполнение для каталога |
Числовая нотация
chmod 700 директория — установить права -rwx—— для владельца каталога, позволяя ему читать, записывать и выполнять операции внутри него, но никаким другим пользователям.
chmod 755 директория — предоставить владельцу полные права -rwxr-xr-x, а остальным пользователям право только на чтение и выполнение.chmod 644 директория — предоставить права на чтение и запись для владельца каталога, а остальным пользователям и группам оставить только на чтение содержимого.
Рекурсивное применение команды chmod
Чтобы выполнить рекурсивное изменение прав доступа, используйте флаг -R или —recursive с командой chmod. Например:
chmod -R 755 каталог — установит права -rwxr-xr-x для всех файлов и каталогов внутри указанного каталога и самого каталога. chmod -R u+rwx,go-rwx каталог — добавит владельцу права на чтение, запись и выполнение, а группе и остальным пользователям уберет все права для всех файлов и каталогов в указанной директории и её подкаталогах. Рекурсивное изменение прав доступа — отличный инструмент для обновления разрешений для файлов и каталогов одновременно.
chmod –reference=RFILE file
- —reference=RFILE. Этот аргумент указывает путь к файлу или каталогу, из которого будут скопированы права доступа.
- file: это целевой файл или каталог, для которого вы хотите установить права доступа, согласно указанному источнику.
Важно отметить, что —reference не просто добавляет или удаляет определенные разрешения, а полностью перезаписывает права доступа целевого элемента.
Linux Special Permissions (SUID / SGID / Sticky)
| Бит | Где применяется | Обозначение | Число | Описание |
|---|---|---|---|---|
| SUID | файл | rws—— | 4xxx | Запуск от имени владельца файла |
| SGID | файл | —rws— | 2xxx | Запуск от имени группы файла |
| SGID | директория | —rws— | 2xxx | Наследование группы для новых файлов |
| Sticky | директория | ——–t | 1xxx | Только владелец может удалять файлы |
Обозначения
| Символ | Значение |
|---|---|
| s | execute есть + установлен SUID/SGID |
| S | execute НЕТ, но бит установлен (ошибка) |
| t | execute есть + sticky bit |
| T | execute НЕТ, но sticky установлен |
Установка
| Действие | Команда |
|---|---|
| Установить SUID | chmod u+s file |
| Установить SGID | chmod g+s file/dir |
| Установить Sticky | chmod +t dir |
| Установить SUID (числом) | chmod 4755 file |
| Установить SGID (числом) | chmod 2755 dir |
| Установить Sticky (числом) | chmod 1777 dir |
Проверка
| Задача | Команда |
|---|---|
| Найти все SUID файлы | find / -perm -4000 -type f 2>/dev/null |
| Найти все SGID файлы | find / -perm -2000 -type f 2>/dev/null |
| Найти writable SUID (опасно) | find / -perm -4000 -type f -writable 2>/dev/null |
| Проверить /tmp | ls -ld /tmp |
Примеры
# SUID пример ls -l /usr/bin/passwd # -rwsr-xr-x # SGID директория mkdir shared chmod 2775 shared # Sticky (как /tmp) chmod 1777 /tmp
Важные нюансы
- Sticky bit работает только на директориях
- SUID/SGID без execute (S) — почти всегда ошибка
- SGID на директории — must-have для командной работы
- SUID — потенциальная уязвимость (privesc)
Практика
# Безопасная общая директория mkdir /shared chmod 2775 /shared # Общий tmp с защитой mkdir /shared/tmp chmod 1777 /shared/tmp
Расширенная работа с правами ACL (getfacl / setfacl)
Установка
apt-get install acl
Проверка поддержки ACL файловой системой:
mount | grep acl
Если нет — добавить в /etc/fstab:
UUID=xxx / ext4 defaults,acl 0 1
Что такое ACL
ACL (Access Control List) — расширенные права доступа, дополняют стандартные rwx.
Позволяют:
- давать доступ конкретным пользователям
- давать доступ нескольким группам
- задавать default права для директорий
Просмотр ACL
Получить ACL:
getfacl /tmp/file.txt
Показать только access ACL:
getfacl -a /tmp/file.txt getfacl --access /tmp/file.txt
Показать default ACL:
getfacl -d /tmp/dir getfacl --default /tmp/dir
Пример вывода
# file: filename # owner: geek # group: geek user::rw- user:andy:r-- user:bob:r-- user:james:rwx group::r-- mask::rwx other::r--
Расшифровка
| Поле | Описание |
|---|---|
| user:: | права владельца |
| user:username: | права конкретного пользователя |
| group:: | права группы |
| mask:: | максимальные эффективные права |
| other:: | права остальных |
⚠️ ВАЖНО: mask ограничивает ВСЕ user/group ACL
Установка ACL (setfacl)
Добавить права пользователю:
setfacl -m u:andy:rwx file.txt
Добавить права группе:
setfacl -m g:devs:r-x file.txt
Удалить ACL:
setfacl -x u:andy file.txt
Очистить все ACL:
setfacl -b file.txt
Default ACL (наследование)
Установить default ACL для директории:
setfacl -d -m u:andy:rwx /shared
Теперь все новые файлы унаследуют права
Проверка:
getfacl /shared
Маска (mask)
Пример:
setfacl -m u:andy:rwx file.txt
Но если:
mask::r--
👉 итоговые права будут r–, а не rwx
Пересчитать mask:
setfacl -m m:rwx file.txt
или автоматически:
setfacl --mask file.txt
Полезные ключи getfacl
| Ключ | Описание |
|---|---|
| -a | только access ACL |
| -d | default ACL |
| -c | без заголовка |
| -e | показать effective права |
| -E | скрыть effective |
| -s | пропустить базовые ACL |
| -R | рекурсивно |
| -L | следовать симлинкам |
| -P | не следовать симлинкам |
| -t | табличный формат |
| -p | абсолютные пути |
| -n | UID/GID вместо имен |
Примеры:
getfacl -R /tmp getfacl -e /tmp/file.txt getfacl -n /tmp/file.txt
Практика (реальные кейсы)
Общая директория DevOps
mkdir /shared chown root:devs /shared chmod 2775 /shared setfacl -d -m g:devs:rwx /shared
👉 все файлы:
- группа devs
- автоматические права
Дать доступ пользователю без смены владельца
setfacl -m u:backup:r-- /etc/passwd
Рекурсивное применение
setfacl -R -m u:andy:rwx /project
Безопасность
⚠️ Проверка ACL в системе:
getfacl -R / 2>/dev/null
⚠️ Потенциальные риски:
- доступ к критическим файлам через ACL
- обход стандартных прав
- забытые ACL после администрирования
Быстрая шпаргалка
| Действие | Команда |
|---|---|
| Посмотреть ACL | getfacl file |
| Добавить user | setfacl -m u:user:rwx file |
| Добавить group | setfacl -m g:group:r-x file |
| Удалить ACL | setfacl -x u:user file |
| Очистить ACL | setfacl -b file |
| Default ACL | setfacl -d -m u:user:rwx dir |
