Главная » Linux Ubuntu/Mint » Команда chmod в Linux — подробно и с примерами

📑 Команда chmod в Linux — подробно и с примерами

Как команда chmod работает в Linux

Когда мы создаем файл или папку в системе на основе Unix, такой как Linux или MacOS, у них есть набор разрешений и режимов доступа. Чаще всего ими манипулируют с помощью команды chmod, которая позволяет нам изменять того, кто может получать доступ к различным файлам и запускать их.

Давайте посмотрим, как работает chmod. Для начала команда chmod имеет следующий синтаксис:, где [OPTIONS] — необязательные настройки, [MODE] — разрешения, которые мы хотим дать файлу или папке, а x — это файл, к которому мы хотим применить chmod.

chmod [OPTIONS] [MODE] х

, где [OPTIONS] — необязательные настройки, [MODE] — разрешения, которые мы хотим дать файлу или папке, а x — это файл, к которому мы хотим применить chmod.

Как работают разрешения файла в Linux и MacOS

Прежде чем мы начнем использовать chmod, давайте посмотрим, как разрешения работают в Linux и MacOS. Если вы зайдете в любую папку и запустите ls -l, вы увидите такую ​​строку:

drwxr-xr-x 5 root root 160 23 фев 22:32 node_modules

Первая часть этой строки, то есть drwxr-xr-x — это настройки разрешений. Давайте разберем, что это значит:

d rwx r-x r-x
^ ^   ^   ^
| |   |   |
| |   |   └ - - разрешение "других", т.е. любого, кто не является владельцем или группой
| |   └ - - права группы
| └ - - разрешения владельца
└ - - Тип файла - не связан с доступом

Выше «другие» относятся к любому, кто не является владельцем или группой пользователей. Если вам интересно, кто такие владелец и группа, то это два имени, данные после цифры 5 в нашем примере, то-есть пользователь root из группы root:

drwxr-xr-x 5 root root 160 23 фев 22:32 node_modules
|--------|   |--| |--|
^            ^    ^
|            |    |
|            |    └ - - группа
|            └ - - владелец
└ - - настройки разрешений

Что означают разрешения в Linux и MacOS

В наших разрешениях выше у нас есть 3 набора доступа — rwx, r-x и r-x. Каждая буква представляет тип доступа. Если одна буква отсутствует, этот набор лиц или владельцев не имеет такого доступа. Буквы обозначают:

r - доступ для чтения
w - доступ для записи или редактирования
x - доступ к исполнению (для файлов, которые являются исполняемыми
t — закрепленный бит, означающий, что только владелец или пользователь root может удалить или переименовать файл или папку. Это добавляется в конец строки разрешения, если оно существует, и встречается реже, чем другие.
s — дает повышенные привилегии для выполнения пользователям или группам.

Таким образом, в то время как rwx дает доступ на чтение, запись и выполнение, r-x дает доступ только на чтение и выполнение.

Как использовать chmod в Linux и MacOS

Теперь, когда мы рассмотрели основы, давайте посмотрим, как работает chmod. Форматирование chmod может немного сбить с толку, когда вы впервые увидите его, поэтому давайте разберем его.

Сначала мы начнем с упоминания о том, какие пользователи затронуты. Здесь у нас есть 4 варианта:

u, для владельца
g, для группы
o, для других
a, для всех, что также может быть записано как ugo.

Затем следует, как мы хотим изменить разрешения:

  • Если мы хотим дать разрешения набору пользователей или пользователю, мы пишем +, поэтому +x даст разрешение на выполнение, а +rx даст разрешение на чтение и выполнение.
  • Если мы хотим отозвать разрешения, мы пишем -, поэтому -rwx забирает доступ на чтение, запись и выполнение.
  • Если мы хотим полностью заменить разрешения, мы используем =, поэтому =r даст доступ на чтение, но удалит выполнение и запись, если они существовали. Точно так же =rw — это то же самое, что и доступ для чтения и записи, с удаленным выполнением, если оно существовало.

Мы пишем все это без пробелов, после чего следует имя файла. Таким образом, следующее даст владельцу доступ для чтения к файлу с именем file.txt в текущем каталоге:

chmod u+r file.txt

Или, если мы хотим предоставить владельцу, группе и другим пользователям доступ на чтение и запись, мы могли бы написать следующее:

chmod ugo+rw file.txt

Точно так же следующее заменит разрешения владельца и группы доступом на чтение и запись, но удалит любое разрешение на выполнение, которое у них могло быть:

chmod ug=RW file.txt

Если мы хотим предоставить разные типы доступа разным пользователям, мы можем разделить их запятой. Приведенное ниже даст владельцу доступ rwx, группе, доступу rw- и всем остальным доступу r—:

chmod u=rwx,g=rw,o=r file.txt

И если мы ничего не пишем после знака равенства, предполагается, что все права доступа аннулированы. Итак, если вместо этого мы хотим, чтобы у группы не было доступа, мы могли бы написать следующее:

chmod u=rwx,g=,o=r file.txt

Это также работает с каталогами так же, как и с нашим файлом .txt.

Как рекурсивно изменить режим каталога с помощью chmod

Иногда мы хотим изменить права доступа не только к каталогу, но и ко всем файлам в нем. Для этого мы можем использовать параметр -R с chmod для рекурсивного изменения каждого файла и папки в каталоге.

Вот пример:

chmod -R u=rwx myDirectory

Изменение режима файла с помощью chmod с использованием чисел

Возможно, вы видели, что chmod используется с цифрами, а не с буквами. В конечном итоге числа следуют тому же соглашению, что и выше, но их гораздо проще записать. Каждому разрешению пользователя в rwx присваивается определенное значение:

  • г получает значение 4
  • w присваивается значение 2
  • х присваивается значение 1

Это означает, что общее значение 7 означает 4 + 2 + 1 или rwx. Значение 5 будет означать 4 + 1 или r-x. Мы можем назначить владельца, группу и других пользователей по номеру. Таким образом, при таком наборе разрешений:

rwx r-x --x
^   ^   ^
|   |   |
|   |   └ - - разрешение "других", т.е. любого, кто не является владельцем или группой
|   └ - - права группы
└ - - разрешения владельца

Владелец имеет значение разрешения 7, группа — 5, а любые другие пользователи имеют разрешение 1. Таким образом, мы можем записать это как 751.

Чтобы применить эти разрешения к нашему файлу file.txt, мы можем написать следующее:

chmod 751 file.txt

Добавление Sticky битов к числовым разрешениям с помощью chmod

Чтобы добавить липкий (sticky) бит к числовому разрешению, мы просто добавим 1 в начало, чтобы разрешения 755 с липким битом стали 1755.

Для многих предпочтительны числовые разрешения, поскольку они намного чище и легче для понимания, чем буквы. Что бы вы ни предпочли, оба работают одинаково, поэтому выбирайте в зависимости от ваших предпочтений.

Источник (eng)

📑 Похожие статьи на сайте
При перепечатке просьба вставлять активные ссылки на oslogic.ru
Copyright oslogic.ru © 2022 . All Rights Reserved.