В Linux права доступа к файлам, атрибуты и владение управляют уровнем доступа, который система обрабатывает, а пользователи имеют к файлам. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к определенным файлам и каталогам.
Базовая модель разрешений Linux работает, связывая каждый системный файл с владельцем и группой и назначая права доступа для трех разных классов пользователей:
Собственности файла можно изменить с помощью команд chown и chgrp.
К каждому классу пользователей применяются три типа прав доступа к файлам:
Эта концепция позволяет вам контролировать, какие пользователи могут читать файл, записывать в файл или выполнять файл.
Чтобы просмотреть права доступа к файлу, используйте команду ls:
ls -l file_name
-rw-r--r-- 12 andreyex users 12.0K Apr 30 17:05 file_name |[-][-][-]- [------] [---] | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Владелец | | | | +--------------------------> 5. Альтернативный способ доступа | | | +----------------------------> 4. Другие разрешения | | +-------------------------------> 3. Групповые разрешения | +----------------------------------> 2. Разрешения владельца +------------------------------------> 1. Тип файла
Первый символ указывает тип файла. Это может быть обычный файл (-), каталог (d), символическая ссылка (l) или другие специальные типы файлов. Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных.
В приведенном выше примере (rw-r—r—) означает, что владелец файла имеет права на чтение и запись (rw-), а группа и другие пользователи имеют только права на чтение (r—).
Права доступа к файлам имеют разное значение в зависимости от типа файла.
Каждый из трех триплетов разрешений может состоять из следующих символов и иметь разные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Разрешение | Персонаж | Значение в файле |
---|---|---|
Читать | — | Файл не читается. Вы не можете просматривать содержимое файла. |
r | Файл доступен для чтения. | |
Писать | — | Файл не может быть изменен или изменен. |
w | Файл можно изменить или модифицировать. | |
Выполнять | — | Файл не может быть выполнен. |
x | Файл можно запустить. | |
s | Если он находится в userтриплете, он устанавливает setuidбит. Если он находится в groupтриплете, он устанавливает бит setgid. Это также означает, что xфлаг установлен. Когда для исполняемого файла установлены флаги setuidили setgid, файл выполняется с правами владельца и / или группы. | |
S | То же, что s, но xфлаг не установлен. Этот флаг редко используется для файлов. | |
t | Если он находится в othersтриплете, он устанавливает stickyбит. Это также означает, что xфлаг установлен. Этот флаг бесполезен для файлов. | |
T | То же, tно xфлаг не установлен. Этот флаг бесполезен для файлов. |
Каталоги — это особые типы файлов, которые могут содержать другие файлы и каталоги.
Разрешение | Персонаж | Значение в каталоге |
---|---|---|
Читать | — | Содержимое каталога не может быть отображено. |
r | Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью ls.) | |
Писать | — | Содержимое каталога не может быть изменено. |
w | Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) | |
Выполнять | — | Каталог не может быть изменен на. |
x | По каталогу можно перемещаться с помощью cd. | |
s | Если он находится в userтриплете, он устанавливает setuidбит. Если он находится в groupтриплете, он устанавливает setgidбит. Это также означает, что xфлаг установлен. Когда setgid для каталога установлен флаг, новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. setuidне влияет на каталоги. | |
S | То же, что s, но xфлаг не установлен. Этот флаг бесполезен для каталогов. | |
t | Если он находится в othersтриплете, он устанавливает бит sticky. Это также означает, что xфлаг установлен. Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь могут удалять или переименовывать файлы в каталоге. | |
T | То же, что t, но xфлаг не установлен. Этот флаг бесполезен для каталогов. |
Права доступа к файлу можно изменить с помощью команды chmod. Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod, особенно при рекурсивном изменении разрешений. Команда может принимать в качестве аргументов один или несколько файлов и/или каталогов, разделенных пробелом.
Разрешения можно указать с помощью символьного режима, числового режима или справочного файла.
Синтаксис chmodкоманды при использовании символьного режима имеет следующий формат:
chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...
Первый набор flags ([ugoa…]), флаги пользователей, определяет классы пользователей, для которых изменяются права доступа к файлу.
Если флаг пользователя опущен, по умолчанию используется a.
Второй набор flags ([-+=]), флаги операции, определяет, следует ли удалить, добавить или установить разрешения:
Разрешения (perms…) явно устанавливается с помощью либо ноль , либо один или несколько из следующих букв: r, w, x, X, s, и t. Используйте одну букву из набора u, gи oпри копировании разрешений из одного класса пользователей в другой.
При настройке разрешений для более чем одного пользовательского класса ([,…]) используйте запятые (без пробелов) для разделения символьных режимов.
Вот несколько примеров того, как использовать chmodкоманду в символьном режиме:
chmod g=x filename
chmod a-w filename
chmod -R o-x dirname
chmod og-rwx filename
То же самое можно сделать, используя следующую форму:
chmod og= filename
chmod u=rwx,g=r,o= filename
Синтаксис chmodкоманды при использовании символьного режима имеет следующий формат:
chmod [OPTIONS] NUMBER FILE...
При использовании числового режима вы можете установить разрешения для всех трех классов пользователей (владельца, группы и всех остальных) одновременно.
Номер разрешения может быть трех- или четырехзначным. Когда используется трехзначный номер, первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
Количество разрешений определенного класса пользователей представлено суммой значений разрешений для этой группы.
Чтобы узнать права доступа к файлу в числовом режиме, просто подсчитайте итоговые значения для всех классов пользователей. Например, чтобы предоставить права на чтение, запись и выполнение владельцу файла, права на чтение и выполнение для группы файла и только на чтение для всех остальных пользователей, вы должны сделать следующее:
Используя описанный выше метод, мы подходим к числу 754, которое представляет желаемые разрешения.
Для того, чтобы настроить флаги setuid, setgid и sticky bit, используйте номер четыре цифры.
Когда используется четырехзначный номер, первая цифра имеет следующее значение:
Следующие три цифры имеют то же значение, что и при использовании трехзначного номера.
Если первая цифра равна 0, ее можно не указывать, а режим можно представить тремя цифрами. Числовой режим 0755 такой же, как 755.
Для вычисления числового режима вы также можете использовать другой метод (двоичный метод), но он немного сложнее. Знания, как вычислить числовой режим с использованием 4, 2 и 1, достаточно для большинства пользователей.
Вы можете проверить права доступа к файлу в числовом формате с помощью stat команды:
stat -c "%a" file_name
Вот несколько примеров того, как использовать команду chmod в числовом режиме:
chmod 644 dirname
chmod 750 dirname
chmod 1777 dirname
chmod -R 700 dirname
В Linux доступ к файлам ограничен разрешениями, атрибутами и правами собственности на файлы. Чтобы изменить права доступа к файлу, используйте команду chmod.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.