linuxlab.io
Учебники▾
  • Линукс и сети
    Файловая система, процессы, TCP/IP, BGP и OSPF
    →
  • Terraform и IaC
    HCL, state, plan/apply на sandbox LocalStack
    →
  • Git и GitHub
    Объектная модель, plumbing, ветвление, GitHub Actions
    →
Все учебники →
ЦеныО платформеВойтиСоздать аккаунт
/
  • Введение
  • Уроки
  • How it works
  • Симулятор
  • База знаний
  • Собеседование
Index
Categories
All entries
Footer
linuxlab-УчебникиЦеныО платформеКонфиденциальность и куки
Copyright © 2026 LinuxLab. Все права защищены.
home/linux/kb/Файловая система/file-permissions

kb/filesystem ── Файловая система ── beginner

File permissions: rwx и chmod

Каждый файл имеет три набора прав - для владельца, группы и остальных. Каждый набор это три бита: read (r), write (w), execute (x). Меняем через `chmod`.

view as markdownaka: permissions, rwx, chmod

Структура

Когда ls -l ~/.bashrc показывает -rw-r--r-- 1 student student 3771 ..., расшифровка такая:

  • - - тип объекта (- файл, d директория, l symlink, c/b устройство)
  • rw- - права владельца (user)
  • r-- - права группы
  • r-- - права всех остальных (other)

Каждый набор - три флага:

битзначение для файлазначение для директории
rпрочитать содержимоевывести список файлов (ls)
wизменить содержимоесоздать/удалить/переименовать файлы внутри
xвыполнить как программувойти в директорию (cd) и обращаться по полному пути

Важно: для директории r без x означает «вижу имена, но не могу зайти и прочитать содержимое отдельных файлов» - встречается редко но бывает.

Восьмеричная нотация

Каждый набор кодируется одной цифрой 0-7: r=4 + w=2 + x=1.

moderwxсмысл
7rwxвсё
6rw-чтение+запись
5r-xчтение+выполнение
4r--только чтение
0---ничего

Полные права файла = три цифры, например 644 = rw-r--r--, 755 = rwxr-xr-x.

Команды

bash
chmod 600 file.txt           # rw------- (только владелец читает/пишет)
chmod +x script.sh            # добавить execute для всех (u+g+o)
chmod u+x,g-w file            # символическая запись: u/g/o + a (all)
chmod -R go-w /var/www         # рекурсивно убрать write у group и other

chown - владелец и группа

chmod меняет права. Владельца меняет chown:

bash
sudo chown alice file.txt              # сменить владельца
sudo chown alice:developers file.txt   # владельца + группу
sudo chown -R www-data: /var/www        # рекурсивно

umask - права новых файлов

Когда программа создаёт файл (touch, > redirect), реальные права = desired_mode & ~umask. Дефолт umask 022 означает что новые файлы будут создаваться без write для group и other - то есть 0666 & ~022 = 0644.

Special bits: setuid, setgid, sticky

Кроме обычных rwx есть три дополнительных бита (4-я восьмеричная цифра):

  • setuid на исполняемом файле - программа стартует с эффективным UID владельца файла, а не запускающего. Так работает sudo, passwd, ping
  • setgid на директории - новые файлы внутри наследуют группу директории (полезно для shared-папок)
  • sticky bit на директории - файлы внутри может удалять только владелец файла, даже если другие имеют write на директорию. Так защищён /tmp
bash
ls -ld /tmp /usr/bin/sudo
# drwxrwxrwt  ... /tmp           ← t = sticky
# -rwsr-xr-x  ... /usr/bin/sudo  ← s = setuid

§ команды

bash
stat -c '%a %n' file.txt

Вывести права в восьмеричном виде (например `644 file.txt`)

bash
chmod 600 ~/.ssh/id_rsa

Закрыть приватный SSH-ключ от всех кроме владельца - обязательное требование sshd

bash
umask

Текущая маска создания файлов в этом шелле

bash
find / -perm -4000 2>/dev/null

Найти все setuid-бинари в системе (важно для security audit)

§ см. также

  • inodeInodeInode - это запись в файловой системе с метаданными и указателями на блоки данных файла. Имя файла лежит отдельно (в директории) и просто указывает на inode.
  • posix-aclPOSIX ACL - расширенные права доступаPOSIX ACL расширяют классические rwx-права: можно дать доступ N пользователям/группам без перекраивания owner/group. setfacl пишет, getfacl читает. Default ACL на директории - наследуется детям.
  • extended-attributesExtended attributes (xattr) - произвольные метаданные файлаxattr - key-value метаданные на inode помимо stat. 4 namespace: user (свободно), trusted (root), system (ACL), security (SELinux, capabilities). getfattr читает, setfattr пишет.
  • setuid-setgid-stickySUID, SGID, sticky bit - спецбиты правТри спецбита поверх обычных rwx: **SUID** - запуск с правами владельца файла, **SGID** - с правами группы (или наследование группы на каталоге), **sticky** - удалить может только владелец файла (важно для `/tmp`).
  • hard-linkHard linkHard link - второе имя для того же [[inode]]. Оба имени равноправны: файл живёт пока есть хотя бы одно из них.

§ упоминается в уроках

  • ›beginner-02-files-and-text
  • ›beginner-04-pipes-and-redirects
  • ›beginner-05-permissions
  • ›beginner-06-users-and-groups
  • ›beginner-12-shell-scripting
Footer
linuxlab-
Copyright © 2026 LinuxLab. Все права защищены.
Учебники
Цены
О платформе
Конфиденциальность и куки