Gymterview
junior

Как управлять правами доступа к файлам и каталогам?

Каждый файл и каталог в Linux имеет три набора прав доступа для трёх категорий: владелец (user), группа (group), остальные (others).

Права доступа

Символ Число Для файла Для каталога
r 4 Чтение содержимого Просмотр списка файлов
w 2 Изменение содержимого Создание/удаление файлов в каталоге
x 1 Запуск как программы Вход в каталог (cd)

Пример вывода ls -l

Пример
-rwxr-xr-- 1 developer developers 8192 Apr 1 12:00 deploy.sh
│└┬┘└┬┘└┬┘
│ │   │   └── others: r-- (только чтение)
│ │   └────── group:  r-x (чтение и выполнение)
│ └────────── owner:  rwx (чтение, запись, выполнение)
└──────────── тип файла: - (обычный файл)

Изменение прав — chmod

Пример
# Символьный формат
chmod u+x script.sh        # Добавить владельцу право на выполнение
chmod g-w file.txt          # Убрать у группы право на запись
chmod o=r file.txt          # Установить другим только чтение
chmod a+r file.txt          # Добавить всем право на чтение

# Числовой (восьмеричный) формат
chmod 755 script.sh         # rwxr-xr-x
chmod 644 config.yml        # rw-r--r--
chmod 600 id_rsa            # rw------- (только владелец)

# Рекурсивно для каталога
chmod -R 755 /opt/myapp

Изменение владельца — chown

Пример
sudo chown developer file.txt                   # Изменить владельца
sudo chown developer:developers file.txt        # Изменить владельца и группу
sudo chown -R developer:developers /opt/myapp   # Рекурсивно

Специальные биты

Бит Числовое значение Описание
SUID (Set User ID) 4000 Файл запускается с правами владельца файла (например, /usr/bin/passwd)
SGID (Set Group ID) 2000 Файл запускается с правами группы. Для каталога — новые файлы наследуют группу каталога
Sticky bit 1000 В каталоге файлы может удалять только их владелец (используется в /tmp)
Пример
chmod 4755 program       # SUID
chmod 2755 shared_dir    # SGID
chmod 1777 /tmp          # Sticky bit

На собеседовании: интервьюер часто просит расшифровать chmod 755 или объяснить вывод ls -l. Частая ошибка — путать числовые значения прав (4=r, 2=w, 1=x). Знание sticky bit для /tmp — хороший бонус.