Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В Unix и Unix-подобных операционных систем , CHMOD это команда и системный вызов , который используется для изменения прав доступа из файловой системы объектов ( файлов и каталогов ). Он также используется для изменения флагов специального режима . Запрос фильтруется по маске . Название является сокращением режима изменения . [1] Режимы - это права файловой системы, предоставляемые классам «пользователь», «группа» и «другие» для доступа к файлам в Unix. Они отображаются при перечислении файловв длинном формате или, если используются списки управления доступом , с помощью getfacl . Режимы можно изменить с помощью chmod (для традиционных разрешений Unix) или с помощью setfacl (для списков управления доступом).

В Unix и Unix-подобных системах, включая системы, соответствующие POSIX , каждый файл имеет «режим», содержащий 9-битные флаги, управляющие правами на чтение, запись и выполнение для каждого владельца файла, группы и всех других пользователей (см. Разрешения файловой системы §Традиционные разрешения Unix для более подробной информации) плюс битовые флаги setuid и setgid и битовый флаг 'sticky' . Режим также определяет тип файла (обычный файл, каталог или какой-либо другой особый вид).

В структуре stat тип файла и разрешения ( режим ) хранятся вместе в st_mode битовом поле , которое имеет размер не менее 12 бит (3 бита для указания типа среди семи возможных типов файлов ; 9 бит для разрешений) . Макет для разрешений определяется POSIX как минимум 9 битов, остальные не определены. [2]

История [ править ]

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

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

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

Команда chmod также была перенесена в операционную систему IBM i . [5]

Синтаксис команды [ править ]

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

chmod [options] mode[,mode] file1 [file2 ...][6]

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

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

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

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

$ ls -l findPhoneNumbers.sh -rwxr-xr-- 1 сотрудник dgerman 823 16 декабря 15:03 findPhoneNumbers.sh $ stat -c% a findPhoneNumbers.sh 754

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

Восьмеричные режимы [ править ]

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

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

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

  • три крайних левых символа,, rwxопределяют права доступа для класса User (т.е. владельца файла).
  • средние три символа, rwxопределяют права доступа для класса Group (т. е. группы, владеющей файлом)
  • последние три символа ---,, определяют разрешения для класса Others . В этом примере пользователи, которые не являются владельцами файла и не являются членами группы (и, следовательно, принадлежат к классу Others ), не имеют разрешения на доступ к файлу.

Числовые разрешения [ править ]

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

Например, 754позволит:

  • «чтение» (4), «запись» (2) и «выполнение» (1) для класса User , поскольку двоичное значение 7 (4 + 2 + 1) равно 111.
  • «прочитать» (4) и «выполнить» (1) для класса Group , поскольку двоичное значение 5 (4 + 1) равно 101.
  • Только «чтение» (4) для класса Others , так как двоичное значение 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 и sticky не указаны, это эквивалентно:

$ chmod 0664 sharedFile

Символьные режимы [ править ]

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

$ chmod [ ссылки ] [ оператор ] [ режимы ] файл ...

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

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

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

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

Символические примеры [ править ]

  • Добавьте разрешение на запись ( w ) в режимы доступа группы ( g ) к каталогу, позволяя пользователям в той же группе добавлять файлы:
$ ls -ld shared_dir # показать режимы доступа перед chmod drwxr-xr-x 2 teamleader usguys 96 8 апр, 12:53 shared_dir $ chmod g + w shared_dir $ ls -ld shared_dir # показать режимы доступа после chmod drwxrwxr-x 2 teamleader usguys 96 8 апр, 12:53 shared_dir
  • Удалите права на запись ( w ) для всех классов ( a ), чтобы никто не мог писать в файл:
$ ls -l ourBestReferenceFile -rw-rw-r-- 2 руководителя команды usguys 96 8 апреля 12:53 ourBestReferenceFile $ chmod aw ourBestReferenceFile $ ls -l ourBestReferenceFile -r - r - r-- 2 руководителя группы usguys 96 8 апреля 12: 53 ourBestReferenceFile
  • Установите разрешения для ˙U сер и групп ( уг ) для чтения и выполнения ( ого ) только (без разрешения записи) на referenceLib , предотвращая кого добавлять файлы.
$ ls -ld referenceLib drwxr ----- 2 руководитель команды usguys 96 8 апр, 12:53 referenceLib $ chmod ug = rx referenceLib $ ls -ld referenceLib dr-xr-x --- 2 руководитель группы usguys 96 8 апр, 12:53 referenceLib
  • Добавьте разрешения на чтение и запись для классов пользователей и групп файла или каталога с именем sample :
$ chmod ug + rw sample $ ls -ld sample drw-rw ---- 2 unixguy unixguy 96 8 декабря 12:53 образец
  • Удалите все разрешения, чтобы никто не мог читать, писать или выполнять файл с именем sample .
$ chmod a-rwx sample $ ls -l sample ---------- 2 unixguy unixguy 96 8 декабря 12:53 образец
  • Измените разрешения для пользователя и группы только на чтение и выполнение (без разрешения на запись) для образца .
$  # Пример прав доступа к файлу перед командой $ ls -ld sample drw-rw ---- 2 unixguy unixguy 96 дек 8 12:53 sample $ chmod ug = rx sample $ ls -ld sample dr-xr-x --- 2 unixguy unixguy 96 дек 8 12:53 пример

Специальные режимы [ править ]

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

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

Примеры командной строки [ править ]

Системный вызов [ править ]

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

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

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

См. Также [ править ]

  • Разрешения файловой системы
  • chattr, команда, используемая для изменения атрибутов файла или каталога в системах Linux.
  • chown, команда, используемая для смены владельца файла или каталога в Unix-подобных системах
  • chgrp, команда, используемая для изменения группы файла или каталога в Unix-подобных системах
  • cacls, команда, используемая в Windows NT и ее производных для изменения списков управления доступом, связанных с файлом или каталогом.
  • attrib
  • umask, ограничивает режим (разрешения) при создании файла или каталога в Unix-подобных системах
  • Идентификатор пользователя
  • Идентификатор группы
  • Список команд Unix

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • chmod(1): изменить режимы файлов -  FreeBSD General Commands Manual
  • chmod(1) -  Руководство программиста Plan 9 , том 1
  • chmod(1) -  Руководство по общим командам Inferno
  • chmod- справочная страница из GNU coreutils .
  • Руководство GNU "Установка разрешений"
  • CHMOD-Win 3.0 - бесплатный конвертер ACL ← → CHMOD для Windows.
  • Учебник для начинающих с on-line "живым" примером