ОП.05Права доступа, владельцы и umaskзанятие 6Материалы

Часть 3 из 7

Команда chmod: буквы и числа

В этой части разберём две записи прав для chmod — символьную и числовую, научимся переводить одну в другую и выберем права для типичных файлов.

  1. 3.1 Символьная запись
  2. 3.2 Числовая запись

3.1 Символьная запись

Команда chmod (change mode — «изменить режим») меняет права файла или каталога. Менять права может владелец файла и root. Символьная запись описывает изменение из трёх частей: кому, что сделать и какие права.

ЧастьЗначенияСмысл
комуu, g, o, au — владелец (user), g — группа, o — остальные (others), a — все три тройки
что сделать+, -, =добавить права, снять права, установить ровно эти права
какие праваr, w, xодно право или несколько: rx, rw

+ и - меняют только указанные права, остальные остаются как были. = заменяет тройку целиком: g=rx даёт группе чтение и выполнение и снимает запись, если она была. Пустая правая часть убирает все права: o= закрывает файл для остальных. Несколько изменений пишут через запятую без пробелов: u=rwx,g=rx,o=.

Ключ -v (verbose) печатает для каждого файла старые и новые права числом и буквами. Если права не изменились, chmod -v пишет retained — «сохранены». Ключ -R меняет права каталога и всего его содержимого.

В терминалеchmod буквами
  1. chmod -v go-r db.env# закрыть файл с паролем от группы и остальных
    что делает

    Что делает команда. Снимает право чтения у группы и остальных и печатает права до и после.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    go-r
    права буквами: снять у группы и остальных право r
    db.env
    какой файл или каталог (путь относительно текущего каталога)
  2. chmod -v u=rwx,g=rx,o= backup.sh# три тройки сразу
    что делает

    Что делает команда. Задаёт три тройки сразу: владельцу rwx, группе r-x, остальным ничего; печатает права до и после.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    u=rwx,g=rx,o=
    права буквами: установить владельцу ровно rwx; установить группе ровно rx; у остальных прав нет
    backup.sh
    какой файл или каталог (путь относительно текущего каталога)
  3. chmod -v g+w report.txt# добавить группе запись
    что делает

    Что делает команда. Добавляет группе право записи report.txt.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    g+w
    права буквами: добавить группе право w
    report.txt
    какой файл или каталог (путь относительно текущего каталога)
  4. chmod -v a+r docs/notes.txt# чтение всем — уже было
    что делает

    Что делает команда. Добавляет всем право чтения; права уже такие, поэтому chmod пишет retained.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    a+r
    права буквами: добавить всем право r
    docs/notes.txt
    какой файл или каталог (путь относительно текущего каталога)
  5. ls -l
    что делает

    Что делает команда. Выводит подробные строки файлов текущего каталога: тип, права, владельца, группу, размер и дату.

    По частям:

    ls
    вывести содержимое каталога
    -l
    подробный список: права, владелец, группа, размер
Результат

каждая команда печатает права до и после; для notes.txt права не изменились — retained.

Снимок 3.1Ubuntu 24.04
  1. 1было 0644, стало 0600: группе и остальным чтение снято
  2. 2u=rwx,g=rx,o= задаёт все три тройки: 0750
  3. 3g+w добавил одно право: rw-rw-r--
  4. 4права уже были такими — retained
chmod -v показывает права до и после изменения.Весь снимок ↗

chmod -v показывает права до и после изменения.

Что показывает снимок. chmod -v печатает права до и после: go-r дал 0600, u=rwx,g=rx,o= дал 0750, g+w — 0664; для notes.txt права не изменились — retained.

Где это пригодится. Буквами удобно поправить одно право, не трогая остальные: добавить группе запись, закрыть файл от остальных.

3.2 Числовая запись

В числовой записи каждая тройка — одна цифра от 0 до 7. Цифра получается сложением: чтение — 4, запись — 2, выполнение — 1. Три цифры подряд задают права владельца, группы и остальных. Числовая запись всегда задаёт права целиком, как = в символьной.

ЦифраСуммаПрава
74 + 2 + 1rwx
64 + 2rw-
54 + 1r-x
44r--
0—---

Значения 4, 2 и 1 подобраны так, что каждую цифру от 0 до 7 можно получить только одним способом: 5 — это всегда 4 + 1, то есть r и x.

Перевод из букв в число делается по тройкам: rw-r----- → rw- = 6, r-- = 4, --- = 0 → 640. Обратно — так же: 750 → 7 = rwx, 5 = r-x, 0 = ---.

ПраваБуквамиДля чего
644rw-r--r--обычный файл: владелец пишет, остальные читают
600rw-------секреты: пароли, ключи, токены
755rwxr-xr-xпрограммы и скрипты, общие каталоги
700rwx------личный каталог
640rw-r-----файл для своей группы, остальным закрыт
750rwxr-x---каталог или скрипт для своей группы

Символьная запись удобна, когда нужно поменять одно право и не трогать остальные: «добавить группе запись». Числовая — когда права известны целиком: «секретный файл — 600». В скриптах установки чаще пишут числа: результат не зависит от того, какими права были раньше.

В терминалеchmod числом
  1. chmod -v 640 report.txt# группа читает, остальные нет
    что делает

    Что делает команда. Устанавливает права rw-r-----: группа читает, остальным ничего.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    640
    права числом: 6 — rw- владельцу, 4 — r-- группе, 0 — --- остальным
    report.txt
    какой файл или каталог (путь относительно текущего каталога)
  2. chmod -v 700 private# личный каталог
    что делает

    Что делает команда. Устанавливает каталогу private права rwx------: только владельцу.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    700
    права числом: 7 — rwx владельцу, 0 — --- группе, 0 — --- остальным
    private
    какой файл или каталог
  3. chmod -v 755 backup.sh# скрипт для всех
    что делает

    Что делает команда. Устанавливает скрипту права rwxr-xr-x: запускать могут все.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    755
    права числом: 7 — rwx владельцу, 5 — r-x группе, 5 — r-x остальным
    backup.sh
    какой файл или каталог (путь относительно текущего каталога)
  4. chmod -v 600 db.env# секрет: уже 600
    что делает

    Что делает команда. Устанавливает файлу с паролем права rw-------; права уже такие.

    По частям:

    chmod
    изменить права доступа
    -v
    печатать права до и после изменения
    600
    права числом: 6 — rw- владельцу, 0 — --- группе, 0 — --- остальным
    db.env
    какой файл или каталог (путь относительно текущего каталога)
  5. stat -c '%a %A %n' report.txt private backup.sh db.env# число и буквы рядом
    что делает

    Что делает команда. Выводит права четырёх объектов числом и буквами рядом.

    По частям:

    stat
    вывести сведения о файле из inode
    -c '%a %A %n'
    вывести только поля по шаблону '%a %A %n'
    report.txt
    о каком файле (путь относительно текущего каталога)
    private
    о каком файле
    backup.sh
    о каком файле (путь относительно текущего каталога)
    db.env
    о каком файле (путь относительно текущего каталога)
Результат

числовая запись задаёт права целиком; stat выводит одни и те же права в двух видах.

Снимок 3.2Ubuntu 24.04
  1. 1640 = rw- r-- ---
  2. 2700 — каталог только для владельца
  3. 3755 = rwx r-x r-x
  4. 4stat: число и буквы описывают одни права
Права числом и буквами для четырёх объектов набора.Весь снимок ↗

Права числом и буквами для четырёх объектов набора.

Что показывает снимок. Числовая запись задаёт права целиком: 640, 700, 755, 600; stat показывает каждые права числом и буквами рядом.

Где это пригодится. В скриптах установки и инструкциях права пишут числом: 600 для ключей, 755 для программ — результат не зависит от прежних прав.

Ниже — схема для перевода. Отмечайте права галочками или вводите число: схема покажет запись буквами, обе команды chmod и что в результате разрешено каждой тройке.

Схема · перевод прав
владелец0
группа0
остальные0
особые биты
chmod числом
chmod буквами

    Итоги части 3

    • Символьная запись: кому (u g o a), что сделать (+ - =), какие права (r w x).
    • + и - меняют отдельные права, = и числовая запись задают тройку целиком.
    • Цифра тройки — сумма: r = 4, w = 2, x = 1; 640 = rw-r-----.
    • Типичные права: 644 — файл, 600 — секрет, 755 — программа, 700 — личный каталог.
    • chmod -v показывает права до и после; менять права может владелец и root.

    В отчётСнимок chmod числом и таблица перевода трёх своих примеров из букв в число.

    Открыть в отдельной вкладке ↗