Найти в Дзене
Помощник сисадмина

🔐 Права в Linux

📌 1. Базовые права доступа   Каждый файл и директория в Linux имеют владельца, группу и права доступа, которые задаются тремя наборами битов:   r (4) Чтение (read) w (2) Запись (write) x (1) Исполнение (execute) Формат прав: -rwxr-xr--  1 user group 1234 Feb 27 10:00 file.txt Расшифровка:   - - — тип файла (d — директория, - — обычный файл, l — ссылка и т. д.)   - rwx — права владельца   - r-x — права группы   - r-- — права остальных пользователей   ⚙️ 2. Изменение прав: chmod Изменяет права доступа к файлу или директории.  📍 Символьный способ (+, -, =)   chmod u+x file.txt   # Добавить владельцу право на выполнение chmod g-w file.txt   # Убрать у группы право на запись chmod o=r file.txt   # Установить права "только чтение" для остальных chmod a+x script.sh  # Сделать исполняемым для всех  📍 Цифровой способ (восьмеричная нотация)   Каждое право обозначается числом:   - r = 4 - w = 2 - x = 1 Пример: chmod 755 script.sh  # Владелец (7) - rwx, группа (5) - r-x, остальные (5)

📌 1. Базовые права доступа  

Каждый файл и директория в Linux имеют владельца, группу и права доступа, которые задаются тремя наборами битов:  

r (4) Чтение (read)

w (2) Запись (write)

x (1) Исполнение (execute)

Формат прав:

-rwxr-xr--  1 user group 1234 Feb 27 10:00 file.txt

Расшифровка:  

- - — тип файла (d — директория, - — обычный файл, l — ссылка и т. д.)  

- rwx — права владельца  

- r-x — права группы  

- r-- — права остальных пользователей  

⚙️ 2. Изменение прав: chmod

Изменяет права доступа к файлу или директории.

 📍 Символьный способ (+-=)  

chmod u+x file.txt   # Добавить владельцу право на выполнение

chmod g-w file.txt   # Убрать у группы право на запись

chmod o=r file.txt   # Установить права "только чтение" для остальных

chmod a+x script.sh  # Сделать исполняемым для всех

 📍 Цифровой способ (восьмеричная нотация)  

Каждое право обозначается числом:  

- r = 4

- w = 2

- x = 1

Пример:

chmod 755 script.sh  # Владелец (7) - rwx, группа (5) - r-x, остальные (5) - r-x

chmod 644 file.txt   # Владелец (6) - rw-, группа (4) - r--, остальные (4) - r--

🏷 3. Изменение владельца: chown

Изменяет владельца и группу файла.  

 📍 Основные команды

chown user file.txt      # Изменить владельца

chown user:group file.txt   # Изменить владельца и группу

chown :group file.txt     # Изменить только группу

chown -R user:group dir/   # Рекурсивно изменить владельца/группу в каталоге

 🎭 4. Специальные биты (SUID, GUID, Sticky Bit)  

 🏆 SUID (Set User ID)  

Если установлен на исполняемом файле, процесс выполняется от имени владельца файла, а не от имени пользователя, который его запустил.  

Пример:  

chmod u+s /usr/bin/passwd  # Установка SUID

ls -l /usr/bin/passwd    

-rwsr-xr-x 1 root root 53232 Feb 27 10:00 /usr/bin/passwd

(s вместо x) у владельца обозначает, что активен SUID.

 🏅 GUID (Set Group ID)  

Если установлен на исполняемом файле, программа выполняется с правами группы файла.  

Если установлен на директории, все созданные файлы наследуют группу директории.

Пример:  

chmod g+s directory/     # Установка SGID на директорию

chmod 2755 script.sh     # Установка SGID через числовой код

ls -ld directory/

drwxr-sr-x 2 user group 4096 Feb 27 10:00 directory/

(s вместо x) у группы обозначает, что активен SGID.

 📌 Sticky Bit  

Применяется к директориям, запрещая пользователям удалять чужие файлы в общем каталоге (например, /tmp).

Пример:  

chmod +t /tmp    # Установка Sticky Bit

chmod 1777 /tmp # Эквивалентная команда в числовом виде

ls -ld /tmp

drwxrwxrwt 10 root root 4096 Feb 27 10:00 /tmp

(t вместо x) у остальных означает, что активен Sticky Bit.

🔏 5. Расширенные ACL (Access Control List)  

Позволяют задавать более гибкие права, чем стандартная система rwx.

📍 Проверка ACL  

getfacl file.txt

📍 Добавление прав пользователю  

setfacl -m u:username:rw file.txt

(Пользователь username получит права rw на файл.)

 📍 Удаление прав у пользователя  

setfacl -x u:username file.txt

 📍 Наследование ACL в директориях  

setfacl -m d:u:username:rw directory/

⚙️ 6. Маска umask (маска прав)  

Определяет, какие права не будут установлены при создании новых файлов и директорий.

 📍 Проверка текущегоерка ACL  

umask

 📍 Задание нового Control  

umask 022   # Новые файлы 644 (rw-r--r--), директории 755 (rwxr-xr-x)

umask 077   # Новые файлы 600 (rw-------), директории 700 (rwx------)

📌 Формула:  

Права по умолчанию – umask = Итоговые права

Файлы: 666 – umask

Директории: 777 – umask

Пример:  

- umask 022 →  666 - 022 = 644 (rw-r--r--)  

- umask 077 →  666 - 077 = 600 (rw-------)

🛠 Быстрые команды для проверки и настройки прав

ls -l      # Просмотр прав файлов

stat file.txt  # Детальная информация о файле

chmod 750 file # Изменение прав файла

chown user:group file  # Изменение владельца

setfacl -m u:username:rw file  # Установка ACL

💡 Полезные ссылки:  

- man chmod

- man chown

- man setfacl

- man umask