Chmod - Википедия - chmod

chmod
Команда chmod
В chmod команда
Оригинальный автор (ы)AT&T Bell Laboratories
Разработчики)Разные Открытый исходный код и коммерческий Разработчики
изначальный выпуск3 ноября 1971 г.; 49 лет назад (1971-11-03)
Операционная системаUnix, Unix-подобный, План 9, Inferno, IBM i
ПлатформаКроссплатформенность
ТипКоманда
Лицензияcoreutils: GPLv3

В Unix и Unix-подобный операционные системы, chmod это команда и системный вызов который используется для изменения права доступа из файловая система объекты (файлы и каталоги ). Также используется для изменения специальный режим флаги. Запрос фильтруется по маска. Название является сокращением от изменить режим.[1]

История

А chmod команда впервые появилась в AT&T Unix версия 1.

По мере роста количества и типов пользователей систем, списки контроля доступа[2] были добавлены во многие файловые системы в дополнение к этим самым основным режимам для повышения гибкости.

Версия chmod в комплекте GNU coreutils был написан Дэвидом Маккензи и Джимом Майерингом.[3]

В chmod команда также была перенесена в IBM i Операционная система.[4]

Синтаксис команды

В этом разделе тысер относится к владельцу файла в качестве напоминания о том, что в символической форме команды используется "ты".

chmod [параметры] режим [, режим] файл1 [файл2 ...][5]

Обычно реализованные варианты включают:

  • Рекурсивно, т.е. включать объекты в подкаталоги.
  • -v подробный, показывать измененные объекты (неизмененные объекты не отображаются).

Если символическая ссылка указан, целевой объект будет затронут. Режимы файлов, непосредственно связанные с самими символическими ссылками, обычно не используются.

Для просмотра файлового режима ls или же стат могут использоваться команды:

$ ls -l findPhoneNumbers.sh-rwxr-xr-- 1 посох dgerman 823 16 декабря 15:03 findPhoneNumbers.sh$ stat -c% a findPhoneNumbers.sh754

В р, ш, и Икс укажите доступ для чтения, записи и выполнения. Первый персонаж ls display обозначает тип объекта; а дефис представляет собой простой файл. Этот сценарий может быть прочитан, записан и выполнен пользователем. dgerman; прочитаны и выполнены членами сотрудники группа; и читаются только другими пользователями.

Восьмеричные режимы

Основные части chmod разрешения:

Например: drwxrwx ---

Символы справа от буквы "d" определяют разрешения для каждого учебный класс:

  • три крайних левых символа, rwx, определите разрешения для Пользователь класс (т.е. владелец файла).
  • средние три символа, rwx, определите разрешения для Группа класс (т.е. группа владение файлом)
  • последние три символа, ---, определите разрешения для Другие учебный класс. В этом примере пользователи, которые не являются владельцами файла и не являются участниками Группа (и, таким образом, находятся в Другие class) не имеют разрешения на доступ к файлу.

Числовые разрешения

В chmod числовой формат принимает до четырех восьмеричных цифр. Три крайние правые цифры определяют разрешения для пользователя файла, группы и других. Необязательная ведущая цифра, когда даны 4 цифры, указывает специальное Setuid, Setgid, и липкий флаги. Каждая цифра из трех крайних правых цифр представляет двоичное значение, которое управляет разрешениями на «чтение», «запись» и «выполнение» соответственно. Значение 1 означает, что классу разрешено это действие, а значение 0 означает, что это действие запрещено.

#РазрешениеrwxДвоичный
7читать, писать и выполнятьrwx111
6прочти и напишиrw-110
5читать и выполнятьr-x101
4только чтениер--100
3написать и выполнить-wx011
2писать только-w-010
1выполнять только--Икс001
0никто---000

Например, 754 разрешит:

  • «читать» (4), «писать» (2) и «выполнять» (1) для Пользователь class, так как двоичное значение 7 (4 + 2 + 1) равно 111.
  • "прочитать" (4) и "выполнить" (1) для Группа class, поскольку двоичное значение 5 (4 + 1) равно 101.
  • Только "читать" (4) для Другие class, поскольку двоичное значение 4 (4) равно 100.

Числовой пример

Измените разрешения, чтобы разрешить членам программисты группа для обновления файла:

$ ls -l sharedFile-rw-r - r-- 1 jsmith программисты 57 3 июл 10:13 sharedFile$ chmod 664 sharedFile$ ls -l sharedFile-rw-rw-r-- 1 jsmith программисты 57 3 июл 10:13 sharedFile

Поскольку Setuid, Setgid и липкий биты не указаны, это эквивалентно:

$ chmod 0664 sharedFile

Символьные режимы

В chmod команда также принимает более тонкую символьную запись,[6] что позволяет изменять определенные режимы, оставляя другие режимы нетронутыми. Символьный режим состоит из трех компонентов, которые объединяются в единую текстовую строку:

$ chmod [Рекомендации][оператор][режимы] файл ...

Классы пользователей используются, чтобы различать, к кому применяются разрешения. Если классы не указаны, подразумевается «все». Классы представлены одной или несколькими из следующих букв:

СсылкаУчебный классОписание
тыПользовательвладелец файла
граммгруппачлены группы файла
одругиепользователи, которые не являются ни владельцами файла, ни членами его группы
авсевсе три из вышеперечисленных, как уго

В chmod программа использует оператор, чтобы указать, как должны быть настроены режимы файла. Принимаются следующие операторы:

ОператорОписание
+добавляет указанные режимы в указанные классы
-удаляет указанные режимы из указанных классов
=указанные режимы должны быть сделаны точными режимами для указанных классов

Режимы указывают, какие разрешения должны быть предоставлены или удалены из указанных классов. Есть три основных режима, которые соответствуют основным разрешениям:

РежимИмяОписание
рчитатьрчитать файл или выводить список содержимого каталога
шзаписыватьшобряд в файл или каталог
ИксвыполнятьеИксизвлечь файл или рекурсивно просмотреть дерево каталогов
Иксспециальное исполнениекоторый сам по себе не является разрешением, а может использоваться вместо Икс. Он применяет разрешения на выполнение к каталогам независимо от их текущих разрешений и применяет разрешения на выполнение к файлу, в котором уже установлен хотя бы один бит разрешения на выполнение (либо Пользователь, Группа или же Другие). Это действительно полезно только при использовании с + и обычно в сочетании с флаг для дачи Группа или же Другие доступ к большому дереву каталогов без установки разрешения на выполнение для обычных файлов (например, текстовых файлов), что обычно происходит, если вы просто используете chmod -R a + rx., тогда как с Икс ты можешь сделать chmod -R a + rX. вместо
ssetuid / gidдетали в Раздел специальных режимов
тлипкийдетали в Раздел специальных режимов

Множественные изменения можно указать, разделив несколько символьных режимов запятыми (без пробелов). Если пользователь не указан, chmod проверит маска и эффект будет как будто "а"был указан, за исключением того, что биты, установленные в umask, не затрагиваются.[7]

Символические примеры

  • Добавить разрешение на запись (ш) Группе (грамм) режимы доступа к каталогу, позволяющие пользователям в той же группе добавлять файлы:
$ ls -ld shared_dir # показать режимы доступа перед chmoddrwxr-xr-x 2 teamleader usguys 96 8 апр, 12:53 shared_dir$ chmod g + w shared_dir$ ls -ld shared_dir # показать режимы доступа после chmoddrwxrwxr-x 2 teamleader usguys 96 8 апр, 12:53 shared_dir
  • Удалить разрешения на запись (ш) для всех классов (а), предотвращая запись в файл кем-либо:
$ ls -l ourBestReferenceFile-rw-rw-r-- 2 руководителя команды usguys 96 8 апр, 12:53 ourBestReferenceFile$ chmod a-w ourBestReferenceFile$ ls -l ourBestReferenceFile-r - r - r-- 2 тимлидера usguys 96 8 апр, 12:53 ourBestReferenceFile
  • Установите разрешения для тысер и Группа (уг) читать и выполнять (rx) только (без разрешения на запись) на referenceLib, запрещая кому-либо добавлять файлы.
$ ls -ld referenceLibdrwxr ----- 2 тимлидер usguys 96 8 апр, 12:53 referenceLib$ chmod уг=rx referenceLib$ ls -ld referenceLibdr-xr-x --- 2 тимлидера usguys 96 8 апр, 12:53 referenceLib

Специальные режимы

В chmod Команда также может изменять дополнительные разрешения или специальные режимы файла или каталога. В символических режимах используется 's'представлять Setuid и Setgid режимы и 'т'представлять липкий режим. Режимы применяются только к соответствующим классам, независимо от того, указаны ли другие классы.

Большинство операционных систем поддерживают спецификацию специальных режимов с использованием восьмеричных режимов, но некоторые этого не делают. В этих системах можно использовать только символьные режимы.

Примеры командной строки

КомандаОбъяснение
chmod a + r publicComments.txtдобавляет разрешение на чтение для всех классов (т.е. тысер, Группа и Другие)
chmod a-x publicComments.txtудаляет разрешение на выполнение для всех классов
chmod a + rx viewer.shдобавляет разрешения на чтение и выполнение для всех классов
chmod u = rw, g = r, o = internalPlan.txtустанавливает права на чтение и запись для тысер, устанавливает читать для Группа, и запрещает доступ для Другие
chmod -R u + w, go-w документыдобавляет разрешение на запись в каталог документы и все его содержимое (т.е. рecursively) для владельца и удаляет разрешение на запись для группы и других
chmod ug = rw groupAgreements.txtустанавливает права на чтение и запись для тысер и Группа
chmod 664 global.txtустанавливает права на чтение и запись для тысер и Группа, и предлагает прочитать Другие.
chmod 744 myCV.txtустанавливает разрешения на чтение, запись и выполнение для тысер, и устанавливает разрешение на чтение для Группа и Другие
chmod 1755 findReslts.shустанавливает липкий бит, устанавливает права на чтение, запись и выполнение для владельца, а также устанавливает права на чтение и выполнение для группы и других (это предполагает, что сценарий будет сохранен в памяти)
chmod 4755 setCtrls.shнаборы UID, устанавливает разрешения на чтение, запись и выполнение для тысер, и устанавливает разрешения на чтение и выполнение для Группа и Другие
chmod 2755 setCtrls.shнаборы GID, устанавливает разрешения на чтение, запись и выполнение для тысер, и устанавливает разрешения на чтение и выполнение для Группа и Другие
chmod -R u + rwX, g-rwx, o-rx личные вещирэксурсивно (т.е. для всех файлов и каталогов в личные вещи) добавляет права на чтение, запись и специальные разрешения на выполнение для тысер, удаляет разрешения на чтение, запись и выполнение для Группа, и удаляет разрешения на чтение и выполнение для Другие
chmod -R a-x + X publicDocsрэксурсивно (т.е. для всех файлов и каталогов в publicDocs) удаляет разрешение на выполнение для всех классов и добавляет специальное разрешение на выполнение для всех классов

Системный вызов

В POSIX стандарт определяет следующие прототип функции:[8]

int chmod (const char * путь, режим mode_t);

В Режим Параметр - это битовое поле, состоящее из различных флагов:

ФлагВосьмеричное значениеЦель
S_ISUID04000Установить идентификатор пользователя при выполнении
S_ISGID02000Установить идентификатор группы при выполнении
S_ISVTX01000Липкий кусочек
S_IRUSR, S_IREAD00400Прочитано тысер
S_IWUSR, S_IWRITE00200Написать тысер
S_IXUSR, S_IEXEC00100Выполнить / поиск по тысер
S_IRGRP00040Прочитано группой
S_IWGRP00020Написать по группе
S_IXGRP00010Выполнить / поиск по группе
S_IROTH00004Прочитано другими
S_IWOTH00002Напишите другим
S_IXOTH00001Выполнить / поиск другими

Смотрите также

Рекомендации

  1. ^ "Учебник по chmod". catcode.com.
  2. ^ «Управление системой AIX 5.3». Центр знаний IBM. IBM. Получено 30 августа 2015.
  3. ^ "chmod (1): изменить биты режима файла - справочная страница Linux". linux.die.net.
  4. ^ IBM. "Qshell для программирования IBM System i версии 7.2" (PDF). Получено 5 сентября 2020.
  5. ^ "Страница пользователя chmod с примерами и калькулятором - Linux - SS64.com". ss64.com.
  6. ^ «Справочник по командам AIX 5.5». Центр знаний IBM. IBM. Получено 30 августа 2015.
  7. ^ "Маскировка разрешений с помощью umask, chmod, 777 восьмеричных разрешений". training.idallen.com.
  8. ^ "функция chmod". Базовые спецификации Open Group, выпуск 7, издание 2013 г.. Открытая группа. Получено 30 августа 2015.

внешняя ссылка