Команда chmod linux описание

Команда Chmod в Linux (права доступа к файлам)

В Linux управление доступом к файлам осуществляется с помощью разрешений, атрибутов и владельцев файлов. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к файлам и каталогам.

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

Разрешения для файлов Linux

Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.

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

  • Владелец файла.
  • Члены группы.
  • Остальные (все остальные).

Владение файлом можно изменить с помощью команд chown и chgrp .

К каждому классу применяются три типа прав доступа к файлам:

  • Разрешение на чтение.
  • Разрешение на запись.
  • Разрешение на выполнение.

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

Права доступа к файлам можно просмотреть с помощью команды ls :

Первый символ показывает тип файла. Это может быть обычный файл ( — ), каталог ( d ), символическая ссылка ( l ) или любой другой специальный тип файла.

Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных. Разрешения могут иметь разное значение в зависимости от типа файла.

В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет разрешения на чтение и запись ( rw- ), а группа и другие пользователи имеют разрешения только на чтение ( r— ).

Каждый из трех троек разрешений может состоять из следующих символов и иметь различные эффекты, в зависимости от того, установлены ли они для файла или для каталога:

Влияние разрешений на файлы

Разрешение символ Значение в файле
Читать Файл не читается. Вы не можете просмотреть содержимое файла.
r Файл доступен для чтения.
Написать Файл нельзя изменить или модифицировать.
w Файл можно изменить или модифицировать.
Выполнить Файл не может быть выполнен.
x Файл можно запустить.
s Если он найден в user триплете, он устанавливает бит setuid . Если он находится в тройке group , он устанавливает бит setgid . Это также означает, что установлен флаг x .
Когда для исполняемого файла setgid флаги setuid или setgid , файл выполняется с правами владельца и / или группы.
S То же, что и s но флаг x не установлен. Этот флаг редко используется для файлов.
t Если он обнаружен в others триплетах, он устанавливает бит sticky .
Это также означает, что установлен флаг x . Этот флаг бесполезен для файлов.
T То же, что и t но флаг x не установлен. Этот флаг бесполезен для файлов.

Влияние разрешений на каталоги (папки)

В Linux каталоги — это особые типы файлов, которые содержат другие файлы и каталоги.

Разрешение символ Значение в каталоге
Читать Содержимое каталога не отображается.
r Можно показать содержимое каталога.
(например, вы можете перечислить файлы внутри каталога с помощью ls .)
Написать Содержимое каталога нельзя изменить.
w Содержимое каталога может быть изменено.
(например, вы можете создавать новые файлы , удалять файлы и т. д.)
Выполнить Каталог не может быть изменен на.
x По каталогу можно перемещаться с помощью cd .
s Если он находится в тройке user , он устанавливает бит setuid . Если он находится в group триплете, он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для каталога setgid флаг setgid новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл.
setuid не влияет на каталоги.
S То же, что и s но флаг x не установлен. Этот флаг бесполезен для каталогов.
t Если он обнаружен в others триплетах, он устанавливает бит sticky .
Это также означает, что установлен флаг x . Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь может удалять или переименовывать файлы в каталоге.
T То же, что и t но флаг x не установлен. Этот флаг бесполезен для каталогов.

Использование chmod

Команда chmod имеет следующую общую форму:

Команда chmod позволяет вам изменять права доступа к файлу, используя символьный или числовой режим или справочный файл. Мы объясним режимы более подробно позже в этой статье. Команда может принимать в качестве аргументов один или несколько файлов и / или каталогов, разделенных пробелом.

Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod , особенно при рекурсивном изменении разрешений.

Символьный (текстовый) метод

Синтаксис команды chmod при использовании символьного режима имеет следующий формат:

Первый набор флагов ( [ugoa…] ), флаги пользователей, определяет, какие классы пользователей изменяют права доступа к файлу.

  • u — владелец файла.
  • g — Пользователи, входящие в группу.
  • o — Все остальные пользователи.
  • a — Все пользователи, идентичные ugo .

Если флаг пользователей опущен, по умолчанию используется значение a и разрешения, установленные с помощью umask , не затрагиваются.

Второй набор флагов ( [-+=] ), флаги операции, определяет, следует ли удалить, добавить или установить разрешения:

  • — Удаляет указанные разрешения.
  • + Добавляет указанные разрешения.
  • = Изменяет текущие разрешения на указанные разрешения. Если после символа = не указаны разрешения, все разрешения из указанного класса пользователей удаляются.

Разрешения ( perms. ) могут быть явно установлены с использованием нуля или одной или нескольких следующих букв: r , w , x , X , s и t . Используйте одну букву из набора u , g и o при копировании разрешений из одного класса пользователей в другой.

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

Ниже приведены несколько примеров использования команды chmod в символьном режиме:

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

Удалите разрешение на выполнение для всех пользователей:

Отвратительно удалите разрешение на запись для других пользователей:

Удалите права на чтение, запись и выполнение для всех пользователей, кроме владельца файла:

То же самое можно сделать, используя следующую форму:

Предоставьте права на чтение, запись и выполнение владельцу файла, права на чтение для группы файла и никаких разрешений для всех остальных пользователей:

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

Добавьте липкий бит в заданный каталог:

Числовой метод

Синтаксис команды chmod при использовании числового метода имеет следующий формат:

При использовании числового режима вы можете установить разрешения для всех трех классов пользователей (владельца, группы и всех остальных) одновременно.

NUMBER может быть 3- или 4-значным числом.

Когда используется трехзначный номер, первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.

Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:

  • r (читать) = 4
  • w (написать) = 2
  • x (выполнить) = 1
  • нет разрешений = 0

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

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

  • Владелец: rwx = 4 + 2 + 1 = 7
  • Группа: rx = 4 + 0 + 1 = 5
  • Другое: rx = 4 + 0 + 0 = 4

Используя метод выше, мы подходим к числу 754 , которое представляет желаемые разрешения.

Для установки флагов setuid , setgid и sticky bit используйте четырехзначный номер.

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

  • setuid = 4
  • setgid = 2
  • липкий = 1
  • без изменений = 0

Следующие три цифры имеют то же значение, что и при использовании трехзначного номера.

Если первая цифра равна 0, ее можно опустить, а режим можно представить тремя цифрами. Числовой режим 0755 совпадает с 755 .

Для вычисления числового режима вы также можете использовать другой метод (двоичный метод), но он немного сложнее. Знания, как вычислить числовой режим с использованием 4, 2 и 1, достаточно для большинства пользователей.

Вы можете проверить права доступа к файлу в числовом формате с помощью команды stat :

Вот несколько примеров того, как использовать команду chmod в числовом режиме:

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

Предоставьте владельцу файла права на чтение, запись и выполнение, права на чтение и выполнение для членов группы и никаких разрешений для всех остальных пользователей:

Предоставьте разрешения на чтение, запись и выполнение, а также закрепите бит для данного каталога:

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

Использование справочного файла

Параметр —reference=ref_file позволяет вам установить права доступа к файлу такими же, как у указанного справочного файла ( ref_file ).

Например, следующая команда назначит права доступа file1 к file2

Рекурсивно изменить права доступа к файлу

Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( —recursive ):

Например, чтобы изменить права доступа для всех файлов и подкаталогов в каталоге /var/www на 755 вы должны использовать:

Работа с символическими ссылками

Символические ссылки всегда имеют 777 разрешений.

По умолчанию, при изменении разрешений символической ссылки, chmod изменяет права доступа к файлу, на который указывает ссылка.

Скорее всего, вместо смены целевого владельца вы получите ошибку «Нет доступа к ‘символической ссылке’: в разрешении отказано».

Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks . 1 означает включен, а 0 отключен. Рекомендуется не отключать защиту символических ссылок.

Массовое изменение прав доступа к файлам

Иногда возникают ситуации, когда вам нужно массово изменить права доступа к файлам и каталогам.

Наиболее распространенный сценарий — рекурсивное изменение разрешений файла веб-сайта на 644 и разрешений каталога на 755 .

Команда find будет искать файлы и каталоги в /var/www/my_website и передавать каждый найденный файл и каталог команде chmod для установки разрешений.

Выводы

Команда chmod изменяет права доступа к файлу. Разрешения можно установить с помощью символьного или числового режима.

Чтобы узнать больше о chmod посетите страницу руководства chmod .

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Источник

Команда chmod linux описание

В UNIX-подобных операционных системах файл ассоциируется с набором свойств, который позволяет разграничить спектры потенциальных действий его владельца и всех остальных пользователей. Этот набор свойств называется правами доступа, а команда chmod позволяет вызывать соответствующую утилиту для его модификации.

Права доступа

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

  • владелец файла (user) — тот пользователь, который создал его.
  • группа владельцев файла (group) — другие пользователи, которые имеют такие же права, как и создавший файл пользователь.
  • все остальные пользователи (other).

Для обозначения этих групп обычно используются буквы u, g и o соответственно.

В соответствии с описанным разделением, файл может быть:

  • читаемым (readable) — содержимое файла может быть просмотрено.
  • записываемым (writeable) — содержимое файла может быть модифицировано.
  • исполняемым (executable) — бинарный файл может быть исполнен.

Для обозначения этих состояний также используются буквы r, w и x соответственно.

Другими атрибутами являются:

  • бит suid или sgid, обозначаемый с помощью буквы s.
  • бит sticky, обозначаемый с помощью буквы t (используется крайне редко).

Нотация

Утилита chmod может использоваться для установки прав доступа к директориям и находящимися в них файлам. Но как сообщить chmod о том, какие права доступа следует установить?

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

Буквенная нотация

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

Или предположим, что файл могут читать, модифицировать и исполнять все пользователи, а нам нужно ограничить доступ к нему со стороны этих пользователей:

В общем, описание прав доступа начинается с символа, соответствующего типу группы пользователей, затем идет символ + для установки или символ для снятия прав доступа, после чего описание заканчивается последовательностью символов, соответствующей правам доступа.

Числовая нотация

Числовое представление прав доступа имеет формат группы восьмеричных значений. В первую очередь вам следует уяснить, что каждое из шестнадцатеричных значений соответствует блоку из четырех двоичных значений, а каждое из восьмеричных значений — блоку из трех двоичных значений.

Также следует помнить о том, что при использовании команды ls -l права доступа к файлу выводятся в следующем формате:

-rwxr-xr-x 1 yourusername yourgroup 19 Oct 22 09:25 yourfile

Описание прав доступа -rwxr-xr-x в данном случае может рассматриваться как блок двоичных значений или битовое поле. После преобразования его в восьмеричное значение можно получить 0755, а в двоичное — 0111101101.

Мы можем представить права каждой группы пользователей с помощью отдельного восьмеричного значения.

Значение Представление Комментарий
400 -r——— Владелец может читать файл
040 —-r—— Участники группы владельцев могут читать файл
004 ——-r— Все остальные пользователи могут читать файл
200 —w——- Владелец может модифицировать файл
020 ——w—- Участники группы владельцев могут модифицировать файл
002 ———w- Все остальные пользователи могут модифицировать файл
100 —x—— Владелец может исполнять файл
010 ——x— Участники группы владельцев могут исполнять файл
001 ———x Все остальные пользователи могут исполнять файл
4000 s——— Для файла установлен бит suid
2000 s——— Для файла установлен бит sgid
1000 t——— Для файла установлен бит sticky

Эти числовые значения сами по себе не очень-то полезны, но мы можем складывать их для формирования числовых представлений прав доступа. Например, значение 4, соответствующее праву чтения (r—) для одной из групп пользователей и значение 2, соответствующее праву записи (-w-) опять же для одной из групп пользователей могут в сумме дать значение 6 или 100 в двоичном представлении, которое будет соответствовать правам чтения и записи. Также следует понимать, что в группе из трех восьмеричных чисел «место» каждого числа указывает на группу пользователей. Например, при установке восьмеричного значения прав доступа 600 или 0110000000 в двоичном представлении пользователь сможет читать и модифицировать файл, а участники группы владельцев и все остальные пользователи не смогут сделать с ним ничего. При установке восьмеричного значения прав доступа 060 или 0000110000 в бинарном представлении аналогичные права получат уже участники группы владельцев файла и так далее.

Например, если нам нужно разрешить чтение и модификацию файла владельцу и участникам группы владельцев и при этом запретить доступ к файлу всем остальным пользователям, мы можем использовать значение прав доступа 660.

Стоит упомянуть и о дополнительных битах: если четвертая цифра отброшена, chmod не будет изменять их значения. Для сброса битов suid, sgid и sticky вам придется добавить в начало значения прав доступа цифру 0.

Примеры использования

Установка прав доступа

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

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

Числовое значение прав доступа 755 может быть преобразовано в двоичное значение 0111101101, а также в буквенное представление -rwxr-xr-x и позволяет всем пользователям читать и исполнять файл, при этом участники группы владельцев и все остальные пользователи не могут модифицировать его.

Рекурсивная установка прав доступа

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

позволяет установить права доступа 755 для всех файлов из текущей директории.

Ограничение доступа третьих лиц к файлам из домашних директорий пользователей

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

# cd /home; chmod -R 750 *

позволяет осуществлять доступ к файлам из домашних директорий лишь их непосредственным владельцам.

Источник

Читайте также:  Оформление проводника windows 10
Оцените статью