Символьная нотация chmod
Чьи права изменять | Каким образом | Какие именно права |
u (владельца) | + (добавить) — (убрать) | r |
= (сделать такими же) | 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 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.