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

12 set 2022 5 min di lettura
Как использовать команду Chmod (права доступа к файлам) в Linux
Indice dei contenuti

Введение

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

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

Права доступа к файлам

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

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

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

Существует три типа прав доступа к файлам, применимых к каждому классу:

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

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

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

ls -l filename.txt
-rw-r--r-- 12 noviello root 1239291 Aug  8 03:04 filename.log
|[-][-][-]-   [------] [---]
| |  |  | |      |       |
| |  |  | |      |       +-----------> 7. Group
| |  |  | |      +-------------------> 6. Owner
| |  |  | +--------------------------> 5. Alternate Access Method
| |  |  +----------------------------> 4. Others Permissions
| |  +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type

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

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

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

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

Использовать chmod

Общая форма команды chmod выглядит следующим образом:

chmod [OPTIONS] MODE FILE

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

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

Символический метод

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

chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE

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

  • u - владелец файла.
  • g - Пользователи, которые являются членами группы.
  • или - Все остальные пользователи.
  • a - Все пользователи, идентичные ugo .

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

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

  • -   Удаляет указанные разрешения.
  • + Добавить указанные разрешения.
  • = Modifica i permessi correnti nei permessi specificati. Se non vengono specificati i permessi dopo il simbolo "=", tutti i permessi della classe utente specificati vengono rimossi.

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

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

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

chmod g=r filename

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

chmod a-x filename

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

chmod -R o-w dirname

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

chmod og-rwx filename

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

chmod og= filename

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

chmod u=rwx,g=r,o= filename

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

chmod g+u filename

Чтобы добавить липкий бит к данному каталогу:

chmod o+t dirname

Численный метод

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

chmod [OPTIONS] NUMBER FILE...

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

НОМЕР может быть трех- или четырехзначным числом.

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

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

  • г (чтение) = 4
  • ш (запись) = 2
  • х (выполнение) = 1
  • нет разрешения = 0

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

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

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

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

Чтобы установить флаги setuid , setgid и sticky bit , используйте четыре цифры.

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

  • установить время = 4
  • setgid = 2
  • липкий = 1
  • без изменений = 0

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

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

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

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

stat -c "%a" filename
644

Давайте посмотрим на некоторые примеры числового режима.

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

chmod 644 dirname

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

chmod 750 dirname

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

chmod 1777 dirname

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

chmod -R 700 dirname

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

Опция --reference = ref_file позволяет вам установить права доступа к файлу такими же, как у указанного эталонного файла ref_file .

chmod --reference=REF_FILE FILE

Например, следующая команда назначит права файла1 файлу2 .

chmod --reference=file1 file2

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

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

chmod -R MODE DIRECTORY

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

chmod -R 755 /var/www

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

Символические ссылки всегда имеют права доступа 777 .

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

chmod 755 symlink

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

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

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

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

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

Используя численный метод:

find /var/www/my_website -type d -exec chmod 755 {} \;
find /var/www/my_website -type f -exec chmod 644 {} \;

Используя символический метод:

find /var/www/my_website -type d -exec chmod u=rwx,go=rx {} \;
find /var/www/my_website -type f -exec chmod u=rw,go=r {} \;

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

Вывод

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

Чтобы узнать больше о команде chmod , введите следующую команду:

man chmod
Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.