- Команда Chmod в Linux (Права доступа к файлам)
- Chmod Command in Linux (File Permissions)
- В этом руководстве рассказывается, как использовать chmod команду для изменения прав доступа к файлам и каталогам.
- Linux File Permissions
- С помощью chmod
- Символьный (текстовый) метод
- Численный метод
- Использование справочного файла
- Рекурсивно изменить права доступа к файлу
- Работа с символическими ссылками
- Изменение прав доступа к файлам навалом
- Вывод
- chmod в Linux
- Синтаксис chmod
- Параметры chmod
- Техническое описание
- Биты Setuid и Setgid
- Флаг ограниченного удаления (или «Sticky Bit»)
- Как посмотреть разрешения файла
- Примеры использования chmod
- Связанные команды
Команда Chmod в Linux (Права доступа к файлам)
Chmod Command in Linux (File Permissions)
В этом руководстве рассказывается, как использовать chmod команду для изменения прав доступа к файлам и каталогам.
В Linux доступ к файлам управляется через права доступа, атрибуты и владение файлами. Это обеспечивает доступ к файлам и каталогам только авторизованным пользователям и процессам.
Linux File Permissions
Прежде чем идти дальше, давайте объясним основную модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и ему назначены права доступа для трех разных классов пользователей:
- Владелец файла.
- Участники группы.
- Другие (все остальные).
Собственности файла можно изменить с помощью chown и chgrp команды.
Существует три типа прав доступа к файлам, которые применяются к каждому классу:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет вам указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Права доступа к файлам можно просмотреть с помощью ls команды:
Первый символ показывает тип файла. Это может быть обычный файл ( — ), каталог ( d ), символическая ссылка ( l ) или любой другой тип файла.
Следующие девять символов представляют права доступа к файлу, три тройки по три символа в каждом. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения всех остальных. Разрешения могут иметь различное значение в зависимости от типа файла.
В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет права на чтение и запись ( rw- ), группа и другие пользователи имеют только права на чтение ( r— ).
Каждая из трех разрешений может состоять из следующих символов и иметь разные эффекты в зависимости от того, заданы они для файла или для каталога:
Влияние разрешений на файлы
разрешение | символ | Значение в файле |
---|---|---|
Read | — | Файл не читается. Вы не можете просматривать содержимое файла. |
r | Файл доступен для чтения. | |
Write | — | Файл не может быть изменен или изменен. |
w | Файл может быть изменен или изменен. | |
Execute | — | Файл не может быть выполнен. |
x | Файл может быть выполнен. | |
s | Если он найден в user триплете, он устанавливает setuid бит. Если он найден в group триплете, он устанавливает setgid бит. Это также означает, что x флаг установлен. Когда в исполняемом файле установлены флаги setuid или setgid , файл исполняется с правами владельца и / или группы. | |
S | То же самое, s но x флаг не установлен. Этот флаг редко используется в файлах. | |
t | Если он найден в others триплете, он устанавливает sticky бит. Это также означает, что x флаг установлен. Этот флаг бесполезен для файлов. | |
T | То же самое, t но x флаг не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
В Linux каталоги — это специальные типы файлов, которые содержат другие файлы и каталоги.
разрешение | символ | Значение в каталоге |
---|---|---|
Read | — | Содержимое каталога не может быть показано. |
r | Содержимое каталога может быть показано. (Например, вы можете перечислить файлы внутри каталога с помощью ls .) | |
Write | — | Содержимое каталога не может быть изменено. |
w | Содержимое каталога может быть изменено. (Например, вы можете создавать новые файлы , удалять файлы .. и т. д.) | |
Execute | — | Каталог не может быть изменен на. |
x | Каталог может быть перемещен с помощью cd . | |
s | Если он найден в user триплете, он устанавливает setuid бит. Если он найден в group триплете, он устанавливает setgid бит. Это также означает, что x флаг установлен. Когда в setgid каталоге установлен флаг, новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. setuid не влияет на каталоги. | |
S | То же самое, s но x флаг не установлен. Этот флаг бесполезен для каталогов. | |
t | Если он найден в others триплете, он устанавливает sticky бит. Это также означает, что x флаг установлен. Если для каталога установлен бит закрепления, только владелец файла, владелец каталога или пользователь с правами администратора могут удалять или переименовывать файлы в каталоге. | |
T | То же самое, t но x флаг не установлен. Этот флаг бесполезен для каталогов. |
С помощью 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-значное число.
Когда используется 3-значное число, первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
- 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 флаги используют четыре цифры номера.
Когда используется 4-значный номер, первая цифра имеет следующее значение:
- УИП = 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 в Linux
Команда chmod используется для изменения прав доступа к файлам или каталогам.
В Linux и других Unix-подобных операционных системах для каждого файла существует набор правил, которые определяют, кто и как может получить доступ к этому файлу. Эти правила называются правами доступа к файлам или режимами файлов. Имя команды chmod означает «режим изменения» и используется для определения способа доступа к файлу.
В общем виде команды chmod выглядят так:
chmod параметры разрешения имя файла
Если параметры не указаны, chmod изменяет разрешения файла, указанного в имени файла, на разрешения, указанные в разрешениях.
Разрешения определяют права доступа для владельца файла («пользователь»), членов группы, владеющей файлом («группа»), и всех остальных («другие»). Существует два способа представления этих разрешений: с помощью символов (буквенно-цифровых символов) или восьмеричных чисел (цифры от 0 до 7).
Допустим, вы являетесь владельцем файла с именем myfile и хотите установить его разрешения так, чтобы:
- пользователь (user) мог читать (read), писать (write) и выполнять (xecute) его;
- члены группы (group) могут прочитать (read) и выполнить (xecute) его;
- а также другие (others) могут только читать (read) его.
Эта команда будет выглядеть вот так:
chmod u=rwx,g=rx,o=r myfile
В этом примере используется символьная запись разрешений. Буквы u, g и o обозначают «пользователь», «группа» и «другое». Знак равенства («=») означает «установить права доступа именно так», а буквы «r», «w» и «x» означают «чтение», «запись» и «выполнение» соответственно. Запятые разделяют различные классы разрешений, и между ними нет пробелов.
Вот эквивалентная команда, использующая восьмеричное обозначение разрешений:
chmod 754 myfile
Здесь цифры 7, 5 и 4 каждая по отдельности представляют разрешения для пользователя, группы и других в этом порядке. Каждая цифра представляет собой комбинацию чисел 4, 2, 1 и 0:
- 4 означает «читать»,
- 2 означает «записать»,
- 1 означает «выполнить»,
- 0 означает «нет разрешения».
Таким образом, 7 представляет собой комбинацию разрешений 4 + 2 + 1 (read, write, and execute), 5 — это 4 + 0 + 1 (read, no write, and execute), а 4 — 4 + 0 + 0 (read, no write, and no execute).
Синтаксис chmod
Параметры chmod
-c, —changes Подобно —verbose, но выдает подробный вывод только тогда, когда изменение действительно сделано.
-f, —silent, —quiet Бесшумный режим; подавлять большинство сообщений об ошибках.
-v, —verbose Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.
—no-preserve-root Не обрабатывать ‘/’ (корневой каталог) каким-либо особым образом, который является настройкой по умолчанию.
—preserve-root Не работать рекурсивно на «/».
—reference=RFILE Установить разрешения, соответствующие разрешениям файла RFILE, игнорируя любой указанный РЕЖИМ.
-R, —recursive Менять файлы и каталоги рекурсивно.
—help Показать справочное сообщение и выйти.
—version Вывести информацию о версии и выйти.
Техническое описание
chmod изменяет режим файла каждого указанного ФАЙЛА в соответствии с MODE, который может быть либо символическим представлением вносимых изменений, либо восьмеричным числом, представляющим битовую комбинацию для битов нового режима.
Формат символического режима:
где perms — это ноль или более букв из набора r, w, x, X, s и t, или одна буква из набора u, g и o. Можно указать несколько символьных режимов, разделенных запятыми.
Комбинация букв u, g, o и элементов управления, которые изменят доступ пользователей к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, которых нет в файле группа (o) или все пользователи (a). Если ничего из этого не дано, эффект будет таким, как если бы был задан a, но биты, которые установлены в umask, не затрагивались.
Оператор (+) вызывает добавление выбранных битов режима файла к существующим битам режима файла каждого файла; » -» вызывает их удаление; и «=» вызывает их добавление и приводит к удалению не упомянутых битов, за исключением того, что неизменяемые установленные пользователем биты каталога и идентификаторы группы не затрагиваются.
Буквы r, w, x, X, s и t выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (x), выполнение только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X) установите идентификатор пользователя или группы при выполнении (s), флаг ограниченного удаления или фиксированный бит (t). Для каталогов параметры выполнения X и X определяют разрешение на просмотр содержимого каталога.
Вместо одной или нескольких из этих букв вы можете указать одну из букв u, g или o: разрешения, предоставленные пользователю, которому принадлежит файл (u), разрешения, предоставленные другим пользователям, которые являются членами группы файла (g) и разрешения, предоставленные пользователям, которые не входят ни в одну из двух предыдущих категорий (o).
Числовой режим — от одной до четырех восьмеричных цифр (0-7), полученных путем сложения битов со значениями 4, 2 и 1. Предполагается, что пропущенные цифры являются ведущими нулями. Первая цифра выбирает заданный идентификатор пользователя (4) и заданный идентификатор группы (2) и атрибуты ограниченного удаления или закрепления (1). Вторая цифра выбирает права доступа для пользователя, которому принадлежат операции чтения (4), записи (2) и выполнения (1); третий выбирает права доступа для других пользователей в группе файла с теми же значениями; и четвертый для других пользователей, не входящих в группу файла, с теми же значениями.
chmod никогда не меняет права доступа к символическим ссылкам; системный вызов chmod не может изменить их разрешения. Но это не проблема, поскольку разрешения символических ссылок никогда не используются. Однако для каждой символической ссылки, указанной в командной строке, chmod изменяет права доступа к указанному файлу. Напротив, chmod игнорирует символические ссылки, встречающиеся во время рекурсивных обходов каталогов.
Биты Setuid и Setgid
chmod очищает бит set-group-ID обычного файла, если идентификатор группы файла не совпадает с эффективным идентификатором группы пользователя или одним из идентификаторов дополнительной группы пользователя, если только у пользователя нет соответствующих привилегий. Дополнительные ограничения могут привести к игнорированию битов set-user-ID и set-group-ID в MODE или RFILE. Это поведение зависит от политики и функциональности основного системного вызова chmod. В случае сомнений проверьте поведение системы.
chmod сохраняет биты set-user-ID и set-group-ID каталога, если вы не укажете иное. Вы можете установить или очистить биты с помощью символических режимов, таких как u + s и g-s, и вы можете установить (но не очистить) биты с помощью числового режима.
Флаг ограниченного удаления (или «Sticky Bit»)
Ограниченный флаг удаления или закрепленный бит — это один бит, интерпретация которого зависит от типа файла. Это предотвращает удаление или переименование файла в каталоге пользователям, которые не владеют файлом или каталогом; это называется флагом ограниченного удаления для каталога и обычно встречается в каталогах, доступных для записи во всем мире, таких как / tmp. Для обычных файлов в некоторых старых системах этот бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске он загружается быстрее; это называется липким битом.
Как посмотреть разрешения файла
Быстрый и простой способ составить список прав доступа к файлу с помощью опции длинного списка (-l) команды ls. Например, чтобы просмотреть разрешения для file.txt, вы можете использовать команду:
. который будет отображать вывод, который выглядит следующим образом:
Примеры использования chmod
Устанавливает для файла file.htm права «владелец может читать и писать; группа может только читать; другие могут только читать».
Рекурсивно (-R) меняет разрешения для каталога myfiles и всех его папок и файлов на режим 755. Пользователь может читать, записывать и выполнять; члены группы и другие пользователи могут читать и выполнять, но не могут писать.
Меняет разрешения для владельца example.jpg, чтобы владелец мог читать и записывать файл. Не меняет права доступа для группы или для других.
Устанавливает бит «Set-User-ID» файла comphope.txt, чтобы каждый, кто пытается получить доступ к этому файлу, сделал это так, как если бы он был владельцем файла.
Противоположность вышеупомянутой команды; снимает бит SUID
Устанавливает разрешения для file.cgi на «чтение, запись и выполнение владельцем» и «чтение и выполнение группой и всеми остальными».
Устанавливает разрешение file.txt на «чтение и запись всеми».
Выполняет то же самое, что и вышеприведенная команда, используя символическую запись.
Связанные команды
chown — Изменить владельца файлов или каталогов.
getfacl — Показать списки контроля доступа к файлам.
ls — список содержимого каталога или каталогов.
Источник