Права доступа: chown, chmod, umask

Права доступа в Linux: chown, chmod числовая и символьная нотация, umask — кто владеет файлами и что с ними можно делать.

Каждый файл в Linux имеет владельца (пользователя и группу) и набор прав доступа: read, write, execute — для владельца, группы и всех остальных.

Просмотр прав: ls -l

ls -l report.txt

Вывод:

-rw-r--r-- 1 alice developers 1024 Jun 10 12:00 report.txt

Разбор строки:

  • -rw-r--r-- — тип файла и права (10 символов)
  • alice — владелец-пользователь
  • developers — владелец-группа

Десять символов прав: первый — тип (- файл, d каталог, l ссылка); затем три тройки rwx для владельца, группы и остальных.

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

# Сменить владельца файла
sudo chown bob report.txt

# Сменить и владельца, и группу
sudo chown bob:developers report.txt

# Рекурсивно — на весь каталог
sudo chown -R alice:alice /home/alice/docs

Символьная нотация chmod

Используйте буквы u (user), g (group), o (other), a (all) с операторами +, -, = и правами r, w, x.

Команда

Действие

chmod u+x script.sh

добавить execute владельцу

chmod g-w file.txt

убрать write у группы

chmod o=r file.txt

остальным — только read

chmod a+r file.txt

добавить read всем

# Сделать скрипт исполняемым
chmod u+x deploy.sh
ls -l deploy.sh

Вывод:

-rwxr--r-- 1 alice alice 256 Jun 10 12:05 deploy.sh

Числовая нотация chmod

Каждое право — бит: r=4, w=2, x=1. Сумма даёт цифру для каждой тройки.

Число

Права

rwx

7

rwx

4+2+1

6

rw-

4+2+0

5

r-x

4+0+1

4

r--

4+0+0

0

---

0+0+0

# 755: владелец rwx, группа r-x, остальные r-x
chmod 755 script.sh

# 644: владелец rw-, группа r--, остальные r--
chmod 644 config.txt

# 600: только владелец может читать и писать (закрытый ключ)
chmod 600 ~/.ssh/id_rsa

umask — маска по умолчанию

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

# Посмотреть текущую маску
umask

Вывод:

0022

Файлы создаются с базовыми правами 666, каталоги — 777. Маска 022 вычитается: файлы получают 644, каталоги — 755. Это защищает от случайного открытия записи группе и всем.

# Установить более строгую маску (файлы 640, каталоги 750)
umask 027

# Временно создать файл с ограниченными правами
touch secret.txt
ls -l secret.txt

Вывод:

-rw-r----- 1 alice alice 0 Jun 10 12:10 secret.txt

Значение umask действует только в текущей сессии. Чтобы сделать постоянным, добавьте umask 027 в ~/.bashrc или /etc/profile.

Коротко

  • ls -l — показывает права, владельца и группу файла.
  • chown пользователь:группа файл — сменить владельца; -R — рекурсивно.
  • Символьная нотация: chmod u+x, chmod go-w и т.д.
  • Числовая нотация: r=4, w=2, x=1; 755 = rwxr-xr-x, 644 = rw-r--r--.
  • umask — маска, убирающая права при создании файлов (обычно 022).
Проверьте себя
1. Что означают права 755 в числовой нотации?
Arwxr-xr-- (владелец rwx, группа r-x, остальные r--)
Brwxr-xr-x (владелец rwx, группа r-x, остальные r-x)
Crw-r--r-- (владелец rw-, группа r--, остальные r--)
Drwx------ (только владелец имеет все права)
2. Какая команда сменит владельца файла report.txt на bob и группу на team?
Achmod bob:team report.txt
Bchown bob team report.txt
Csudo chown bob:team report.txt
Dsudo chmod bob:team report.txt
3. Что делает umask 022?
AУстанавливает права 022 для всех файлов
BУбирает права write у группы и остальных при создании новых файлов
CЗапрещает создание файлов
DУстанавливает права 777 для каталогов
Поддержать проект