Что такое chmod?
Chmod означает ‘change mode’ и изменяет режимы доступа к файлам или каталогам (способ доступа к файлу). Вы можете использовать chmod в командной строке для изменения прав доступа к файлам или каталогам на системах Unix или Unix-подобных, таких как Linux или BSD.
Как использовать chmod?
Вы можете изменить права доступа к файлу в следующем формате:
chmod [опции] [режим] [имя_файла]
Вы можете изменять права доступа с использованием буквенно-цифровых символов (a+rwx) или восьмеричных чисел (777).
Вот пример использования chmod для установки прав доступа такими образом:
- Владелец может читать, записывать и выполнять файл
- Группа может читать, записывать и выполнять файл
- Другие могут читать, записывать и выполнять файл
Пример chmod (буквенно-цифровой): chmod a+rwx
Пример chmod (восьмеричный): chmod 777
Что такое права доступа?
Каждый файл в системе имеет набор связанных с ним прав доступа, что означает, какие пользователи имеют доступ и какой тип доступа у них есть.
Существует три типа пользователей:
- User, то есть владелец файла
- Group, то есть группа владельца файла
- Other, то есть все остальные
Каждому из этих типов пользователей могут быть предоставлены три типа доступа к файлу:
- Чтение (r), то есть возможность просматривать содержимое файла
- Запись (w), то есть возможность изменять содержимое файла
- Выполнение (x), то есть возможность запускать содержимое файла
Права доступа к файлу могут быть представлены буквенно-цифровым способом (с использованием символов, таких как r для чтения, w для записи и x для выполнения) или восьмеричными числами (например, 755).
Опции chmod
Вы можете расширить права доступа chmod с помощью опций.
Наиболее популярные опции:
- -r для ‘рекурсивного’ применения тех же прав в подкаталогах
- -f для ‘принуждения’, продолжать работу даже при возникновении ошибок
- -v для подробного вывода, показывать обработанные объекты
Тег | Описание |
---|---|
-f, --silent, --quiet | Подавлять большинство сообщений об ошибках |
-v, --verbose | Выводить диагностику для каждого обработанного файла |
-c, --changes | Как в подробном выводе, но сообщать только при изменении |
--reference=RFile | Использовать права доступа RFile вместо значений MODE |
-R, --recursive | Изменять файлы и каталоги рекурсивно |
--help | Показать справку и выйти |
--version | Вывести информацию о версии и выйти |
Специальные режимы chmod
Setuid и setgid
Setuid и setgid (сокращения от 'установить ID пользователя при выполнении' и 'установить ID группы при выполнении' соответственно) — это флаги прав доступа Unix, которые позволяют пользователям запускать исполняемые файлы с правами владельца или группы файла соответственно и изменять поведение в каталогах. Они часто используются для того, чтобы позволить пользователям на компьютерной системе запускать программы с временно повышенными привилегиями для выполнения конкретной задачи. Хотя предоставляемые предполагаемыми ID пользователя или группы привилегии не всегда повышены, по крайней мере они специфичны.
Setuid для каталога
Право setuid, установленное на каталог, игнорируется в системах UNIX и Linux.
Setgid для каталога
Установка права setgid на каталог ('chmod g+s') приводит к тому, что новые файлы и подкаталоги, созданные внутри него, наследуют его групповой идентификатор, а не основной групповой идентификатор пользователя, создавшего файл (идентификатор пользователя никогда не изменяется, изменяется только групповой идентификатор). Новые подкаталоги наследуют право setgid. Таким образом, это позволяет создать общий рабочий пространство для группы без необходимости требовать от членов группы явно изменять свою текущую группу перед созданием новых файлов или каталогов. Обратите внимание, что установка права setgid на каталог влияет только на групповой идентификатор новых файлов и подкаталогов, созданных после установки права setgid, и не применяется к существующим объектам.
Chmod в числовом режиме (восьмеричный)
Восьмеричное число | Права доступа | Как видно в списке файлов |
---|---|---|
7 | чтение, запись и выполнение | rwx |
6 | чтение и запись | rw- |
5 | чтение и выполнение | r-x |
4 | только чтение | r-- |
3 | запись и выполнение | -wx |
2 | только запись | -w- |
1 | только выполнение | --x |
0 | нет | --- |
Примеры chmod в восьмеричном режиме
Доступен только для чтения владельцем
$ chmod 400 chmodExampleFile.txt
Доступен только для чтения группой
$ chmod 040 chmodExampleFile.txt
Доступен только для чтения всеми
$ chmod 004 chmodExampleFile.txt
Доступен только для записи владельцем
$ chmod 200 chmodExampleFile.txt
Доступен только для записи группой
$ chmod 020 chmodExampleFile.txt
Доступен только для записи всеми
$ chmod 002 chmodExampleFile.txt
Доступен только для выполнения владельцем
$ chmod 100 chmodExampleFile.txt
Доступен только для выполнения группой
$ chmod 010 chmodExampleFile.txt
Доступен только для выполнения всеми
$ chmod 001 chmodExampleFile.txt
Разрешить чтение владельцу и группе и всем.
$ chmod 444 chmodExampleFile.txt
Разрешить всем читать, записывать и выполнять файл.
$ chmod 777 chmodExampleFile.txt
Chmod в символическом режиме
Режим | Описание |
---|---|
r | Чтение |
w | Запись |
x | Выполнение |
Цель | Описание |
---|---|
u | Пользователь / владелец |
g | Группа |
o | Другие |
a | Все |
Примеры chmod в символическом режиме
Запретить выполнение всем.
$ chmod a-x chmodExampleFile.txt
Разрешить чтение всем.
$ chmod a+r chmodExampleFile.txt
Сделать файл доступным для чтения и записи группой и другими.
$ chmod go+rw chmodExampleFile.txt
Сделать скрипт исполняемым для пользователя/владельца.
$ chmod u+x chmodExampleScript.sh
Разрешить всем читать, записывать и выполнять файл и включить set group-ID.
$ chmod =rwx,g+s chmodExampleScript.sh