Руководство по chmod

Введение Права доступа к файлам и безопасность лежат в основе операционных систем на базе * nix. Файловые объекты могут принадлежать пользователям и / или группам, и иногда они должны использоваться совместно с различными комбинациями этих двух. В системах * nix есть несколько способов повысить безопасность совместного использования этих объектов. > Мы используем утилиту chmod для изменения или модификации прав доступа к файлам. В этом руководстве обсуждаются права доступа к файлам и способы их изменения с помощью chmod. Хотя пояснения и код должны быть

Вступление

Разрешения на доступ к файлам и безопасность лежат в основе операционных систем на базе * nix. Файловые объекты могут принадлежать пользователям и / или группам, и иногда они должны использоваться совместно с различными комбинациями этих двух. В системах * nix есть несколько способов повысить безопасность совместного использования этих объектов.

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

В этом руководстве обсуждаются права доступа к файлам и способы их изменения с помощью chmod . Хотя пояснения и код должны работать почти для всех систем на базе * nix, это руководство было специально написано для Linux.

Право собственности и разрешения

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

Владельцы Символическое представление Описание


Пользователи ты Основной владелец объекта файла / каталога Группы грамм Пользователь может входить в одну или несколько групп. Другие о Другие пользователи, которые также не входят в группу

Этим владельцам может быть назначено одно или несколько из следующих разрешений доступа:

Разрешение Символическое представление Восьмеричное представление Описание


Читать р 4 Разрешение на чтение, копирование из каталога Писать ш 2 Разрешение на запись / редактирование, удаление, добавление новых файлов в каталог Выполнять Икс 1 Разрешение на выполнение двоичного файла

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

 $ touch temp.txt 

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

 $ ls -l temp.txt 
 -rw-r--r-- 1 ubuntu ubuntu 0 Apr 20 22:17 temp.txt 

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

Рис.1 Длинный список и объяснениеразрешений{.ezlazyload}

Разрешения можно разделить на три части, каждая из которых соответствует владельцам в следующем порядке - Пользователи, Группы и Другие . Вы также могли заметить имена владельцев, то есть пользователя и группу, к которой принадлежит объект.

Порядок разрешения для каждого кодона из 3 имеет структуру rwx . Если одно из этих разрешений недоступно, отсутствующее разрешение заменяется дефисом (-), например rw- . Остальные детали связаны с самим файлом: его размер, дата создания и имя.

Утилита chmod

chmod помогает нам назначать разрешения для объектов файлов / каталогов. У него есть специальный набор аргументов, соответствующий владению и разрешениям:

Разрешение Символическое представление Восьмеричное представление


читать р 4 написать ш 2 выполнять Икс 1 отсутствует разрешение на - 0

Для каждого владельца эти разрешения могут быть суммированы (для восьмеричного представления - например, 4 + 2 = 6 обозначают разрешения на чтение и запись) или объединены (для символического представления - например, rw обозначает разрешения на чтение и запись).

Это ключ к пониманию того, как работает команда chmod Давайте изменим права доступа к temp.txt файла и позволяют читать, писать и выполнять разрешения для пользователя, но запретить любой доступ к группе и другим.

Для этого вы можете использовать восьмеричное или символьное представление :

 $ chmod 700 temp.txt 

Рис.2 Изображениеchmod{.ezlazyload}

Восьмеричная запись - 700 может быть разбита как:

  • Первая восьмеричная целочисленная позиция соответствует пользователю, а само число 7 является восьмеричным представлением всех разрешений ( rwx ), то есть 4 + 2 + 1 = 7.
  • Вторая и третья позиции восьмеричного целого числа соответствуют Группе и Другим , где число 0 показывает, что нет никаких разрешений на доступ к объекту.

Давайте теперь посмотрим на права доступа к файлу temp.txt

 $ ls -l temp.txt 
 -rwx------ 1 ubuntu ubuntu 0 Apr 20 22:19 temp.txt 

Мы можем выполнить ту же команду и назначить разрешения практически таким же образом, если мы перепишем 700 используя символическую нотацию:

 $ chmod u+rwx,g-rwx,o-rwx temp.txt 

Снимает разрешение , используя - знак, и добавил + . При использовании символического представления, владельцы отделены друг от друга запятыми , . Здесь мы добавили разрешение rwx u , но удалили его из g и o .

Это приводит к тем же правам доступа:

 $ ls -l temp.txt 
 -rwx------ 1 ubuntu ubuntu 0 Apr 20 22:19 temp.txt 

Теперь рассмотрим другую команду:

 $ chmod u+rwx,g-rw+x,o-rw+x temp.txt 

Здесь мы переплели плюсы и минусы:

  • 'u+rwx' означает, что пользователю предоставляются права на чтение, запись и выполнение.
  • 'g-rw+x' и 'o-rw+x' показывают, что Группе и Другим запрещено выполнять какие-либо операции чтения / записи, но им разрешено выполнять выполнение.

Это эквивалент chmod 711 temp.txt с использованием восьмеричного представления.

Давайте еще раз проверим файл:

 $ ls -l temp.txt 
 -rwx--x--x 1 ubuntu ubuntu 0 Apr 20 22:19 temp.txt 

Мы также можем использовать знак '=' для установки / перезаписи разрешений соответствующему владельцу. Вышеупомянутую команду можно также записать как:

 $ chmod u=rwx,g=x,w=x temp.txt 

Это опять же приводит к:

 $ ls -l temp.txt 
 -rwx--x--x 1 ubuntu ubuntu 0 Apr 20 22:19 temp.txt 

Расширенное использование chmod - SUID, GUID и липкие биты

Теперь, когда основы chmod ясны, давайте сделаем еще один шаг, рассмотрев дополнительный набор специальных разрешений только на выполнение / удаление, которые действуют как четвертый уровень безопасности для существующих разрешений на чтение, запись и выполнение. Это включает:

Специальное разрешение Символическое представление Восьмеричное представление Описание


SUID (установить идентификатор пользователя) рв ** дерьмо ------ 4 Разрешение только на выполнение, определенное на уровне пользователя . Он используется для предоставления пользовательских привилегий любому, кто запускает файл (ы) внутри объектов каталога. SGID (Установить GroupID) --- рв ** дерьмо --- 2 Разрешение только на выполнение, определенное на уровне группы . Он используется для предоставления групповых привилегий любому, кто запускает файл (ы) внутри объектов каталога. Липкий бит ------ гв ** т ** 1 Определяется на уровне других . Это предотвращает удаление файла или объекта. Только владелец или корень могут удалить файл или объект.

При вызове chmod и установке аргумента специальное разрешение предшествует обычным разрешениям. Если мы хотим добавить специальное разрешение к нашему обычному 700 , мы просто заранее добавляем цифру:

 $ chmod 5700 temp.txt 
 $ ls -l temp.txt 
 -rws-----T 1 ubuntu ubuntu 0 Apr 20 22:19 temp.txt 

Здесь 5 определяет сумму 4+1 , которая представляет собой комбинацию SUID и разрешения Sticky Bit. 700 представляет собой 'rwx' для Владельца . SUID отменяет разрешение владельца, и тот, кто запускает файл, всегда будет выполнять его как владелец файла . Кроме того, только владелец файла сможет удалить его. Обратите внимание на наличие символа 'T' в выводе, который означает, что установлен Sticky Bit .

Перепишем команду, используя символическое представление:

 $ chmod u+srwx,g-rwx,o+t-rwx temp.txt 
 $ ls -l temp.txt 
 -rws-----T 1 ubuntu ubuntu 0 Apr 20 22:19 temp.txt 

Разберем аргумент по запятым, так как он становится длинноватым:

  • u+srwx : у пользователя есть SUID вместе с rwx .
  • g-rwx : группа лишена разрешений rwx
  • o+t-rwx : +t обозначает добавление Sticky Bit а остальные лишены разрешений rwx

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

 $ sudo su unknown 
 $ rm temp.txt 
 rm: remove write-protected regular empty file 'temp.txt'? 

Заключение

В этом руководстве мы узнали о владении файлами и каталогами и разрешениях в Linux. Затем мы использовали chmod для их изменения. Эти команды могут быть весьма полезны для облегчения защиты файлов или каталогов в операционных системах на базе * nix.

comments powered by Disqus