Учебники

Unix / Linux — режим доступа к файлам / доступа

В этой главе мы подробно обсудим права доступа к файлам и режимы доступа в Unix. Владение файлами является важным компонентом Unix, который обеспечивает безопасный способ хранения файлов. Каждый файл в Unix имеет следующие атрибуты —

  • Права владельцаразрешения владельца определяют, какие действия владелец файла может выполнять с файлом.

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

  • Другие (мировые) разрешения — разрешения для других указывают, какое действие все остальные пользователи могут выполнять с файлом.

Права владельцаразрешения владельца определяют, какие действия владелец файла может выполнять с файлом.

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

Другие (мировые) разрешения — разрешения для других указывают, какое действие все остальные пользователи могут выполнять с файлом.

Индикаторы разрешений

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

$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir

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

Разрешения разбиты на группы по три, и каждая позиция в группе обозначает конкретное разрешение в следующем порядке: чтение (r), запись (w), выполнение (x) —

  • Первые три символа (2-4) представляют разрешения для владельца файла. Например, -rwxr-xr— означает, что владелец имеет права на чтение (r), запись (w) и выполнение (x).

  • Вторая группа из трех символов (5-7) состоит из разрешений для группы, к которой принадлежит файл. Например, -rwxr-xr— означает, что у группы есть права на чтение (r) и выполнение (x), но нет разрешения на запись.

  • Последняя группа из трех символов (8-10) представляет разрешения для всех остальных. Например, -rwxr-xr— означает, что есть разрешение только на чтение (r) .

Первые три символа (2-4) представляют разрешения для владельца файла. Например, -rwxr-xr— означает, что владелец имеет права на чтение (r), запись (w) и выполнение (x).

Вторая группа из трех символов (5-7) состоит из разрешений для группы, к которой принадлежит файл. Например, -rwxr-xr— означает, что у группы есть права на чтение (r) и выполнение (x), но нет разрешения на запись.

Последняя группа из трех символов (8-10) представляет разрешения для всех остальных. Например, -rwxr-xr— означает, что есть разрешение только на чтение (r) .

Режимы доступа к файлам

Права доступа к файлу — это первая линия защиты в системе Unix. Основными строительными блоками разрешений Unix являются разрешения на чтение , запись и выполнение , которые были описаны ниже:

Читать

Предоставляет возможность читать, т. Е. Просматривать содержимое файла.

Написать

Предоставляет возможность изменять или удалять содержимое файла.

казнить

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

Режимы доступа к каталогу

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

Читать

Доступ к каталогу означает, что пользователь может читать содержимое. Пользователь может посмотреть на имена файлов внутри каталога.

Написать

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

казнить

Выполнение каталога на самом деле не имеет смысла, так что думайте об этом как о обходном разрешении.

Пользователь должен иметь доступ к каталогу bin , чтобы выполнить команду ls или cd .

Изменение разрешений

Чтобы изменить права доступа к файлу или каталогу, вы используете команду chmod (режим изменения). Существует два способа использования chmod — символьный режим и абсолютный режим.

Использование chmod в символическом режиме

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

Sr.No. Chmod оператор и описание
1

+

Добавляет назначенные права доступа в файл или каталог.

2

Удаляет назначенные разрешения из файла или каталога.

3

знак равно

Устанавливает назначенное разрешение (я).

+

Добавляет назначенные права доступа в файл или каталог.

Удаляет назначенные разрешения из файла или каталога.

знак равно

Устанавливает назначенное разрешение (я).

Вот пример использования testfile . Запуск ls -1 в тестовом файле показывает, что права доступа к файлу следующие:

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Затем каждая тестовая команда chmod из предыдущей таблицы запускается в тестовом файле, после чего следует ls –l , чтобы вы могли видеть изменения разрешений —

$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Вот как вы можете объединить эти команды в одну строку —

$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Использование chmod с абсолютными разрешениями

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

Каждому разрешению присваивается значение, как показано в следующей таблице, и общее количество каждого набора разрешений предоставляет номер для этого набора.

Число Восьмеричное Представительство ссылка
0 Отсутствует разрешение
1 Выполнить разрешение —Икс
2 Разрешение на запись -w-
3 Разрешение на выполнение и запись: 1 (выполнить) + 2 (запись) = 3 -wx
4 Разрешение на чтение р—
5 Разрешение на чтение и выполнение: 4 (чтение) + 1 (выполнение) = 5 гх
6 Разрешение на чтение и запись: 4 (чтение) + 2 (запись) = 6 rw-
7 Все разрешения: 4 (чтение) + 2 (запись) + 1 (выполнение) = 7 RWX

Вот пример использования тестового файла. Запуск ls -1 в тестовом файле показывает, что права доступа к файлу следующие:

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Затем каждая тестовая команда chmod из предыдущей таблицы запускается в тестовом файле, после чего следует ls –l , чтобы вы могли видеть изменения разрешений —

$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

Смена владельцев и групп

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

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

  • chown — команда chown означает «сменить владельца» и используется для смены владельца файла.

  • chgrp — команда chgrp расшифровывается как «изменить группу» и используется для изменения группы файла.

chown — команда chown означает «сменить владельца» и используется для смены владельца файла.

chgrp — команда chgrp расшифровывается как «изменить группу» и используется для изменения группы файла.

Смена собственника

Команда chown меняет владельца файла. Основной синтаксис выглядит следующим образом —

$ chown user filelist

Значением пользователя может быть либо имя пользователя в системе, либо идентификатор пользователя (uid) пользователя в системе.

Следующий пример поможет вам понять концепцию —

$ chown amrood testfile
$

Меняет владельца данного файла на пользователя amrood .

ПРИМЕЧАНИЕ. — Суперпользователь root имеет неограниченную возможность изменять владельца любого файла, но обычные пользователи могут изменять владельца только тех файлов, которыми они владеют.

Изменение владельца группы

Команда chgrp меняет групповое владение файлом. Основной синтаксис выглядит следующим образом —

$ chgrp group filelist

Значением группы может быть имя группы в системе или идентификатор группы (GID) группы в системе.

Следующий пример поможет вам понять концепцию —

$ chgrp special testfile
$

Изменяет группу данного файла на специальную группу.

Разрешение файла SUID и SGID

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

Например, когда вы изменяете свой пароль с помощью команды passwd , ваш новый пароль сохраняется в файле / etc / shadow .

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

Дополнительные разрешения предоставляются программам с помощью механизма, известного как биты « Задать идентификатор пользователя (SUID)» и « Задать идентификатор группы (SGID)» .

Когда вы запускаете программу с включенным битом SUID, вы наследуете разрешения владельца этой программы. Программы, для которых не установлен бит SUID, запускаются с разрешениями пользователя, запустившего программу.

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

Биты SUID и SGID будут отображаться как буква «s», если разрешение доступно. Бит SUID «s» будет находиться в битах разрешений, где обычно находятся разрешения на выполнение владельцев.

Например, команда —

$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

Показывает, что установлен бит SUID и что команда принадлежит пользователю root. Заглавная буква S в позиции выполнения вместо строчных s указывает, что бит выполнения не установлен.

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

  • Владелец липкого каталога
  • Владелец удаляемого файла
  • Супер пользователь, root

Чтобы установить биты SUID и SGID для любого каталога, попробуйте следующую команду —