chmod - управление правами доступа.
Символьный способ
Используются следующие обозначения объектов, которым предоставляем права доступа:
- u - владелец
- g - группа
- o - остальные
- а - все перечисленные
Операции управления:
- - запретить
- + разрешить
- = заменить права на указанные
Права меняются с помощью команды chmod [опции] права_доступа файл. Например, файл notes.txt имеет следующие права доступа:
Запретим остальным пользователям редактирование данного файла:
chmod o-w notes.txt
Теперь разрешим группе владельцев исполнение данного файла:
chmod g+x notes.txt
То есть мы указываем объект (u, g или о), а затем с помощью символов управления назначаем или удаляем соответствующие права.
Можно одновременно выполнить вышеуказанные действия в одной команде chmod o-w,g+x notes.txt и результат будет тот же.
А можно одновременно в одной команде выполнить следующее:
- владельцу назначить rw-
- группе назначить r-x
- остальным назначить r-- ?
Конечно можно. Для этого существует символ ”=” : chmod u=rw,g=rx,o=r notes.txt.
А если нужно всем назначить одинаковые права, например r-x, то воспользуемся chmod a=rx notes.txt:
Числовой способ
Существует и другой способ указать права доступа - с помощью восьмеричного представления. Не будем вдаваться в подробности булевы алгебры и двоично-восьмеричного преобразования. Просто запомним таблицу:
Символьное представление прав доступа |
Числовое представление |
r (read) |
4 |
w (write) |
2 |
x (execute) |
1 |
А вот как используется числовое представление прав доступа:
Символьное представление |
Операция |
Цифровое представление |
rwx |
4 + 2 +1 |
7 |
rw- |
4 + 2 + 0 |
6 |
r-- |
4 + 0 + 0 |
4 |
r-x |
4 + 0 + 1 |
5 |
-wx |
0 + 2 + 1 |
3 |
-w- |
0 + 2 + 1 |
2 |
--x |
0 + 0 + 1 |
1 |
--- |
0 + 0 + 0 |
0 |
Так как у нас права доступа разделяются на 3 категории (владелец, группа, остальные), то применяется трехзначное обозначение. Например, чтобы абсолютно всем назначить права rwx, то применяется команда chmod 777 notes.txt.
Чтобы остальным пользователям разрешить только чтение файла, то есть r--, выполним chmod 774 notes.txt.
Если хотим группе владельцев назначить права r-x, а остальным пользователям вообще все запретить, то выполним chmod 750 notes.txt.
Нет смысла запоминать все комбинации, достаточно запомнить числовое значение каждого символа и сложить все 3 цифры.
Теперь представим такую ситуацию. На сервере имеется общий каталог Shared/, который содержит файлы всех пользователей. Такое явление обычное в компаниях, когда у пользователей недостаточно места на диске и они используют сетевые ресурсы. Чтобы пользователи могли добавлять и удалять свои файлы установлены все разрешающие права: