Unix / Linux - Разрешения / режимы доступа к файлам

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

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

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

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

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

При использовании 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-- представляет, что есть read (r) только разрешение.

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

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

Читать

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

Написать

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

Выполнить

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

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

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

Читать

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

Написать

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

Выполнить

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

Пользователь должен иметь execute доступ к 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 rx
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 он назначает owner ID и group IDкаждому пользователю. Все упомянутые выше разрешения также назначаются на основе Владельца и Группы.

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

  • chown - The chown команда означает "change owner" и используется для смены владельца файла.

  • chgrp - The chgrp команда означает "change group" и используется для изменения группы файла.

Смена владельца

В chownкоманда меняет владельца файла. Основной синтаксис следующий -

$ chown user filelist

Ценность пользователя может быть либо name of a user в системе или user id (uid) пользователя в системе.

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

$ chown amrood testfile
$

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

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

Изменение группового владения

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

$ chgrp group filelist

Ценность группы может быть name of a group в системе или the group ID (GID) группы в системе.

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

$ chgrp special testfile
$

Изменяет группу данного файла на special группа.

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

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

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

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

Дополнительные разрешения предоставляются программам через механизм, известный как Set User ID (SUID) и Set Group ID (SGID) биты.

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

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

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

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

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

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

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

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

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

$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$