chmod - chmod

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

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

Содержание
  • 1 История
  • 2 Синтаксис команды
    • 2.1 Восьмеричные режимы
      • 2.1.1 Числовые разрешения
      • 2.1.2 Числовой пример
    • 2.2 Символьные режимы
      • 2.2.1 Символьные примеры
    • 2.3 Специальные режимы
    • 2.4 Примеры командной строки
  • 3 Системный вызов
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
История

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

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

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

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

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

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

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

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

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

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

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

$ ls -l findPhoneNumbers.sh -rwxr-xr- - 1 dgerman Staff 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. Каждая цифра из трех крайних правых цифр представляет двоичное значение, которое управляет разрешениями на «чтение», «запись» и «выполнение» соответственно. Значение 1 означает, что классу разрешено это действие, а значение 0 означает, что это действие запрещено.

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

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

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

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

$ chmod 0664 sharedFile

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

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

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

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

СсылкаКлассОписание
uпользовательвладелец файла
gгруппачлены группы файла
oдругиепользователи, которые не являются ни владельцем файла, ни членами группы файла
aвсевсе три из вышеперечисленных, то же, что и ugo

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

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

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

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

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

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

  • Добавить разрешение на запись (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 ser и Группа (ug), чтобы d и выполнить (rx) только (без разрешения на запись) в referenceLib, не позволяя никому добавлять файлы.
$ ls -ld referenceLib drwxr ----- 2 teamleader usguys 96 Apr 8 12:53 referenceLib $ chmod ug = rx referenceLib $ ls -ld referenceLib dr-xr-x --- 2 teamleader usguys 96 апр 8 12:53 referenceLib

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

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

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

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

CommandПояснение
chmod a + r publicComments.txtдобавляет разрешение на чтение для всех классов (например, u ser, Group и другие)
chmod ax publicComments.txtудаляет разрешение на выполнение для всех классов
chmod a + rx viewer.shдобавляет разрешения на чтение и выполнение для всех классов
chmod u = rw, g = r, o = internalPlan.txtустанавливает права на чтение и запись для u ser, устанавливает чтение для группы и запрещает доступ для других
chmod -R u + w, go-w docsдобавляет разрешение на запись в каталог docs и все его содержимое (т.е. R вне очереди) для владельца и удаляет разрешение на запись для группы и других
chmod ug = rw groupAgreements.txtустанавливает разрешения на чтение и запись для u ser, а группа
chmod 664 global.txtустанавливает разрешения на чтение и запись для u ser и Group, а также предоставляет чтение для других.
chmod 744 myCV.txtустанавливает разрешения на чтение, запись и выполнение для u ser, а также устанавливает разрешение на чтение для группы и других
chmod 1755 findReslts.shустанавливает закрепление bit, устанавливает разрешения на чтение, запись и выполнение для владельца, а также устанавливает разрешения на чтение и выполнение для группы и других (это предполагает, что сценарий будет сохранен в памяти)
chmod 4755 setCtrls.shустанавливает UID, устанавливает разрешения на чтение, запись и выполнение для u ser, а также устанавливает разрешения на чтение и выполнение для группы и других
chmod 2755 setCtrls.shустанавливает GID, устанавливает разрешения на чтение, запись и выполнение для u ser, а также устанавливает разрешения на чтение и выполнение для Group и Others
chmod -R u + rwX, g-rwx, o-rx personalStuffRэксурсивно (т.е. для всех файлов и каталогов в PersonalStuff) добавляет разрешения на чтение, запись и специальные разрешения на выполнение для u ser, удаляет разрешения на чтение, запись и выполнение для группы и удаляет разрешения на чтение и выполнение для других
chmod -R a-x + X publicDocsRэксурсивно (т.е. во всех файлах и каталогах в publicDocs) удаляет разрешение на выполнение для всех классов и добавляет особое разрешение на выполнение для всех классов
Системный вызов

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

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

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

FlagВосьмеричное значениеНазначение
S_ISUID04000Установить ID пользователя при выполнении
S_ISGID02000Установить ID группы при выполнении
S_ISVTX01000Sticky bit
S_IRUSR, S_IREAD00400Чтение с помощью u ser
S_IWUSR, S_IWRITE00200Запись с помощью u ser
S_IXUSR, S_IEXEC00100Выполнить / поиск по u ser
S_IRGRP00040Чтение по группе
S_IWGRP00020Запись по группе
S_IXGRP00010Выполнение / поиск по группе
S_IROTH00004Прочитано другими
S_IWOTH00002Записано другими
S_IXOTH00001Выполнение / поиск другими
См. Также
Ссылки
Внешние ссылки
Wikibook Руководство по Unix есть страница по теме: Команды

Последняя правка сделана 2021-05-14 13:25:11
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте