Поиск по сайту:
Дать мало от малого — похвальнее, чем много от многого (Ибн Абд Раббихи).

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

30.04.2021
Примеры команд Chmod в Linux

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

 

Права доступа к файлам в 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флаг не установлен. Этот флаг бесполезен для файлов.
Читать  Пример Laravel Eloquent firstOrCreate

 

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

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

РазрешениеПерсонажЗначение в каталоге
ЧитатьСодержимое каталога не может быть отображено.
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…]), флаги пользователей, определяет классы пользователей, для которых изменяются права доступа к файлу.

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

Если флаг пользователя опущен, по умолчанию используется 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...

 

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

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

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

  • 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
  • sticky= 1
  • без изменений = 0

 

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

Если первая цифра равна 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.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
В программировании или написании сценариев цикл - одна из самых…

Спасибо!

Теперь редакторы в курсе.