Владение и разрешения

Владение и разрешения

Ранее в этой главе, когда вы пытались с помощью cd перейти в домашний каталог пользователя root вы получали следующее сообщение:

[newuser@localhost newuser]$ cd /root
bash: /root: Permission denied

[newuser@localhost newuser]$

При этом вам были показаны возможности защиты системы Linux. Linux, как и UNIX, многопользовательская система, и файловые разрешения в ней представляют собой средство защиты системы от любого вида повреждений.

Есть один способ получить доступ к защищённой информации - стать с помощью su пользователем root, что вы и делали ранее. Вот почему каждый, кто знает пароль пользователя root, имеет полный контроль над системой.

[newuser@localhost newuser]$ su
Password: ваш пароль root 
[root@localhost newuser]# cd /root 
[root@localhost /root]#

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

Все файлы и каталоги "принадлежат" человеку, создавшему их. Вы создавали файл sneakers.txt (как описано в разделе Использование перенаправления) в своём домашнем каталоге, поэтому файл sneakers.txt "принадлежит" вам.

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

Чтение, запись и выполнение - это три основных разрешения.

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

Взгляните внимательнее на файл sneakers.txt , выполнив команду ls с параметром -l (long) (как показано на Рисунке 10-12).

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Здесь показана подробная информация. Вы видите кто может читать (r) и писать (w) в файл, а также кто создал файл (newuser) и в какую группу входит владелец (newuser).

ПодсказкаВаша группа по умолчанию
 

Запомните, по умолчанию имя вашей группы совпадает с именем вашей учётной записи.

Рисунок 10-12. Разрешения файла sneakers.txt

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

-rw-rw-r--

В первой колонке (показанной выше) показаны текущие разрешения; она занимает десять позиций. В первой позиции указывается тип файла. Остальные девять позиций отведены под три набора разрешений для трех различных категорий пользователей.

Эти три набора таковы: владелец файла, группа, в которую он входит, и "остальные", то есть пользователи, не являющиеся владельцами файла (newuser), и не входящие в его группу (также newuser).

-    (rw-)   (rw-)  (r--)    1 newuser newuser
|      |       |      |
тип владелец группа остальные

Первый символ, определяющий тип файла, может быть таким:

Кроме этого, в следующих трёх наборах, вы можете встретить следующие символы:

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

Взгляните ещё раз на первый столбец файла sneakers.txt и определите его разрешения. (Смотрите Рисунок 10-13)

[newuser@localhost newuser]$ ls -l sneakers.txt
-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt
[newuser@localhost newuser]$

Рисунок 10-13. Детальное рассмотрение разрешений

Владелец файла (в этом случае, newuser) имеет разрешение на чтение и запись в файл. Это не программа, поэтому пользователь newuser не имеет разрешения на выполнение. Группа newuser также имеет разрешение на чтение и запись в файл sneakers.txt. Учитывая уже сделанное для владельца newuser замечание, группа newuser также не имеет разрешения на выполнение.

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

Измените разрешения файла sneakers.txt с помощью команды chmod.

Первоначальный файл выглядит так, с начальными настройками разрешений:

-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

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

В данный момент владелец может читать и писать в файл. Все остальные могут только читать файл (r--).

ВниманиеРазрешения необходимы
 

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

В следующем примере вы позволите всем записывать в файл, чтобы они могли прочитать его, внести свои замечания, а затем сохранить его. Это означает что вы должны изменить раздел файловых разрешений "другие".

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

ls -l sneakers.txt

Эта команда отображает следующую информацию:

-rw-rw-r--    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

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

chmod o+w sneakers.txt

Чтобы проверить результат, снова просмотрите информацию о файле. Теперь она выглядит следующим образом:

-rw-rw-rw-    1 newuser newuser     150 Mar 19 08:08 sneakers.txt

Теперь все могут читать и писать в этот файл (Рисунок 10-14).

Рисунок 10-14. Изменение разрешений файла sneakers.txt

Команда o+w указывает системе дать остальным разрешение на запись в файл sneakers.txt.

Чтобы удалить разрешение на чтение и запись файла sneakers.txt, воспользуйтесь командой chmod чтобы отобрать оба разрешения следующим образом:

chmod go-rw sneakers.txt

в результате на экране будет отображаться:

-rw-------    1 newuser newuser    150 Mar 19 08:08 sneakers.txt

Выполнив команду go-rw, вы указали системе лишить разрешения на чтение и запись файла sneakers.txt группу и остальных.

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

Ниже привёден список этих сокращений:

Объекты

u — пользователь (user), владеющий файлом (другими словами, его владелец)

g — группа (group), которой принадлежит пользователь

o — остальные (others) (не владелец и не члены его группы)

a — все (all) (u, g, и o вместе)

Разрешения

r — доступ на чтение

w — доступ на запись

x — доступ на исполнение

Действия

+ — дать разрешение

- — отобрать разрешение

=—сделать это разрешение единственным

ЗамечаниеДополнительное разрешение
 

Дополнительным разрешением является символ t, метка "приклеенного" файла. Если файл помечен как "приклеенный", чтобы удалить такой файл необходимо владеть файлом, владеть каталогом и иметь разрешение на запись, или быть пользователем root (как описано в разделе Свойства файла в Главе 11).

Хотите проверить, как вы поняли разрешения? Уберите все разрешения файла sneakers.txt — для всех.

chmod a-rwx sneakers.txt

Теперь посмотрите, можете ли вы прочитать файл:

[newuser@localhost newuser]$ cat sneakers.txt
cat: sneakers.txt: Permission denied
[newuser@localhost newuser]$

Это работает. Но так как файл принадлежит вам, вы всегда можете изменить разрешения на прежние (как показано на Рисунке 10-15).

[newuser@localhost newuser]$ chmod u+rw sneakers.txt
[newuser@localhost newuser]$ cat sneakers.txt
buy some sneakers
then go to the coffee shop
then buy some coffee
bring the coffee home
take off shoes
put on sneakers
make some coffee
relax!
[newuser@localhost newuser]$

Рисунок 10-15. Удаление и восстановление разрешений

Ниже приведены некоторые распространенные варианты параметров, используемых с chmod:

Добавив ключ -R, вы можете сменить разрешения для всего дерева каталогов.

Так как вы не "исполняете" каталог как приложение, право исполнения, установленное или отсутствующее для каталога, в действительности, разрешает (или запрещает) поиск в этом каталоге.

Чтобы каждый смог получить доступ ко всем файлам в каталоге tigger, расположенному в вашем домашнем каталоге, введите:

chmod -R a+rw tigger

Но … если вы не дадите остальным разрешение на "выполнение" каталога tigger, не важно кто имеет доступ на чтение и запись, так как никто не сможет проникнуть в каталог - если только он не знают точное имя нужного файла.

Например введите:

chmod a-x tigger

чтобы отобрать у всех разрешение на исполнение.

Вот что произойдет теперь если вы попытаетесь с помощью cd перейти в каталог tigger:

[newuser@localhost newuser]$ cd tigger
bash: tigger: Permission denied
[newuser@localhost newuser]$

Восстановите свои собственные и вашей группы права доступа.

chmod ug+x tigger

Теперь, если вы выполните команду ls -dl, вы увидите что, доступ к каталогу tigger закрыт только для остальных.