chmod – символьная и цифровая нотации

Автор: | 21 августа 2009

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

Чьи права изменять Каким образом Какие именно права

u (владельца)
g (группы)
o (всех остальных)
a (всех трех категорий)

+ (добавить)
— (убрать)

r
w
x

= (сделать такими же)

u (как у владельца)
g (как у группы)
o (как у всех остальных)
u
g
+
s (SUID или SGID)
u

+

t (Sticky bit)

Примеры:

Добавить группе право на запись:
~> chmod g+w file
Убрать у прочих права на запись и исполнение:
~> chmod o-wx file
Добавить владельцу и группе права на чтение и запись:
~> chmod ug+rw file
Установить права прочих такими же, как у группы
~> chmod o=g file
Установить права прочих и группы такими же, как у владельца
~> chmod og=u file
Несколько изменений можно перечислять через запятую:
Добавить вдалеьцу право на исполнение, а у группы и прочих убрать право на запись:
~> chmod u+x,go-w file
Рекурсивно убрать у группы и у прочих права на чтение/запись/исполнение для каталога и файлов внутри:
~> chmod -R go-rwx directory

Конечно chmod -R не лучший вариант смены прав, т.к. изменяет права и каталогу и файлам, удобнее использовать find, например:

~> find . -type d -exec chmod 755 {} \;
~> find . -type f -exec chmod 644 {} \;
 
-type d – директории
-type f – файлы

Цифровая нотация chmod

Для понимания сути задания прав в Unix-like системах, нужно знать представление чисел в восьмеричной и двоичной системах счисления

 Пользователь Группа Остальные
7 5 5
111 101 101
rwx r-x r-x
u g o

Пример символьной записи: ‘rwxr-xr-x’.

Примером числовой записи может служить ‘755’, которая эквивалентна записанной выше строковой записи: каждое право имеет числовой код и может быть задано вручную:

  • 400 — владелец имеет право на чтение;
  • 200 — владелец имеет право на запись;
  • 100 — владелец имеет право на выполнение;
  •   40 — группа имеет право на чтение;
  •   20 — группа имеет право на запись;
  •   10 — группа имеет право на выполнение;
  •     4 — остальные имеют право на чтение;
  •     2 — остальные имеют право на запись;
  •     1 — остальные имеют право на выполнение.

Суммировав эти коды можно получить символьную запись. Например, chmod 444 {имяфайла}: 400+40+4=444 — все имеют право только на чтение.

Помимо стандартных ‘rwx’ значений команда CHMOD осуществляет ещё управление битами SGID, SUID и T. Установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно.

Для SUID — вес 4000, а для SGID — 2000.

Пример chmod 4444 {имяфайла} — все имеют право только на чтение, но запускаться файл на исполнение будет с правами владельца. Для папки: установка SGID приведет к установке принадлежности каждого нового создаваемого файла к той же группе, к которой принадлежит сам каталог, а не к основной группе владельца, как это происходит по умолчанию. SUID для каталога не имеет смысла.

t-бит используется с каталогами. Когда t-бит для каталога не установлен, файл в данном каталоге может удалить любой пользователь, имеющий доступ на запись к данному файлу. Устанавливая t-бит на каталог мы меняем это правило таким образом, что удалить файл или изменить может только владелец этого файла. Следуя приведенной выше кодировке t-бит имеет вес 1000.

Например, выполнив chmod 1564 {имякаталога} для каталога, можно создать общий сетевой каталог, где для всех членов группы файлы будут доступны для чтения, но удалить и изменить можно будет только свои (владельца) файлы.

Инструментарий

Если все же вам еще трудно запомнить все эти буквы и цифры 🙂 – можете воспользоваться помощником: chmod calculator.

Добавить комментарий