Брандмауэры и специальное программное обеспечение 8 Часть 4

Вид материалаРеферат

Содержание


Базовые разрешения на доступ к файлу
Подобный материал:
1   ...   13   14   15   16   17   18   19   20   ...   101

Базовые разрешения на доступ к файлу


Взгляните на еще один листинг:

-rwxr-xr-x I root root 3164 Jul 27 20:27 arch

-rwxr-xr-x 1 root root 317504 Jul 27 22:22 bash

-rwxr-xr-x 1 root root 464564 Jul 28 02:54 bash2

•rwxr-x--- 1 root root 34236 Jul 28 09:37 box

-rwxr-xr-x 1 root root 11856 Jul 28 09:37 build_menu

Irwxrwxrwx 1 root root 5 Aug 5 08:50 bunzip2 -> bzip2

Irwxrwxrwx 1 root root 5 Aug 5 08:50 bzcat -> bzip2

-rwxr-xr-x 1 root root 57404 Jul 27 20:11 bzip2

-rwxr-xr-x 1 root root 7152 Jul 27 20:11 bzip2recover

-rwxr-xr-x 1 root root 9240 Jul 27 21:12 cat

-rwxr-xr-x 1 root root 11692 Jul 27 21:38 chgrp

-rwxr-xr-x 1 root root 11820 Jul 27 21:38 chmod

-rwxr-xr-x 1 root root 12164 Jul 27 21:38 chown

-rwxr-xr-x 1 root root 28204 Jul 27 21:38 cp

-rwxr-xr-x 1 root root 47448 Jul 27 19:32 cpio

Irwxrwxrwx 1 root root 4 Aug 5 09:02 csh -> tcsh

-rwxr-xr-x 1 root root 38132 Jul 27 22:59 ctags

Как вы уже знаете, самый первый столбец (в этом примере в нем содержатся символы «-» или «l») позволяет определить тип файла. В данном случае мы имеем дело с обычными файлами и с символическими ссылками. Следующие девять столбцов можно разбить на три группы по три столбца каждая. Эти девять столбцов содержат информацию о разрешениях на доступ к файлу. В Linux эти сведения называются также режимом (mode) файла. Первые три столбца определяют режим доступа для владельца файла, следующие далее три столбца определяют режим доступа для группы, наконец, последние три столбца определяют режим доступа для всех остальных пользователей. Символ «г» означает право на чтение (Read), «w» — на запись (Write), «x» — выполнение (eXecute). Таким образом, для большинства файлов из этого листинга назначены следующие наборы разрешений: владельцу файла разрешается чтение, запись и выполнение (rwx), группе, обладающей файлом, разрешается чтение и выполнение (r-х), остальным пользователям также разрешается чтение и выполнение (г-х). На уровне индексного дескриптора файлов (inode) разрешения на доступ обозначаются тремя восьмеричными числами. Для обозначения разрешений на доступ к файлу используется диапазон значений от 0 до 7, или, в двоичной системе исчисления, от 000 до 111. Каждый из битов этого числа соответствует одному из трех разрешений: «rwx». Разрешению на выполнение соответствует первый (самый младший) бит, разрешению на запись соответствует второй бит, на чтение — третий. Если изначально все три бита сброшены, то чтобы разрешить исполнение файла, необходимо добавить к этому значению единицу (1), чтобы разрешить чтение, следует добавить двойку (2), а чтобы разрешить запись — следует добавить четверку (4). Сумма любых комбинаций этих трех значений дает значение из диапазона от 0 до 7. Таким образом, полный набор разрешений на доступ к файлу (режим файла) может быть идентифицирован числом из диапазона от 000 до 777. Первый разряд этого числа определяет права владельца файла, второй — права группы владельца, а третий — права всех остальных пользователей. Рассмотренному нами ранее набору разрешений «rwxr-xr-x» соответствует число 755. Такой режим доступа устанавливается для большинства утилит, доступных для всех пользователей системы. Чтобы назначить файлу этот набор разрешений, необходимо выполнить команду chmod 755 имя_файла. Описание разрешений на доступ содержится в табл. 3.2.

Таблица 3.2. Разрешения на доступ в восьмеричном виде
Разрешения на доступ Восьмеричный эквивалент Комментарии

-------- 000 Числа соответствуют трем группам

разрешений на доступ

- -х- -х—х 111 Каждое такое число получается путем

сложения чисел (4, 2 и 1), соответствующих установленным

разрешениям

-w - -w - - w - 222 rwxr-x--x = 751

-wx-wx-wx 333

r--r--r-- 444

r-xr-xr-x 555

rw-rw-rw- 666

rwxrwxrwx 777

Вслед за разрешениями на доступ в листинге располагается столбец числа ссылок, за которым следуют столбцы имен владельца и группы (в оставшихся столбцах выводится размер, дата и время модификации, а также имя файла). Когда ядро операционной системы получает от пользователя, программы или командной оболочки запрос на доступ к файлу, оно первым делом смотрит на UID субъекта, запросившего доступ. Если этот UID совпадает с идентификатором (не именем) владельца файла, ядро определяет набор допустимых операций в отношении файла на основании того, какие из первых трех битов набора разрешений для данного файла установлены. Если UID обращающегося к файлу субъекта не совпадает с UID владельца файла, осуществляется сравнение GID субъекта, обращающегося к файлу с GID группы, к которой принадлежит файл. Если эти два идентификатора совпадают, для определения набора допустимых операций используются разрешения, предоставленные группе, владеющей файлом. Если ни UID, ни GID не совпадают, то субъект, запросивший доступ к файлу, попадает в категорию «остальные». В этом случае используются разрешения, определяемые третьей группой битов. В качестве примера рассмотрим четвертую строку листинга. Разрешения на доступ здесь таковы: владелец — чтение, запись, выполнение; группа — чтение, выполнение; «остальные» — прав нет (для данного примера я немного изменил эту строку). Таким образом, режим доступа к файлу равен 750. Владельцем файла является пользователь root, поэтому если доступ к файлу box запросит пользователь с нулевым значением UID (например, пользователь root), ему будет предоставлено разрешение на чтение, запись и выполнение этого файла. Если UID запросившего доступ не равен нулю, анализу подвергается его GID. Если GID запросившего доступ равен нулю, пользователь сможет читать и выполнять файл, однако не сможет записывать в него данные. Если ни UID, ни GID обратившегося к файлу пользователя не равны нулю, этому пользователю будет отказано в доступе, так как для категории «остальные» никаких разрешений на доступ к этому файлу не предоставляется.


ПРИМЕЧАНИЕ

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

При анализе набора разрешений сравнение идентификаторов выполняется до тех пор, пока не будет найдено первое совпадение. Это означает, что если UID пользователя совпадает с UID владельца файла и этот пользователь пытается получить доступ к файлу с режимом 055, ему будет отказано в доступе, даже если этот пользователь принадлежит к группе, владеющей файлом. Режим доступа 055 означает, что владельцу файла не предоставлено никаких разрешений на доступ к файлу, при этом группе, владеющей файлом (впрочем, как и всем остальным пользователям), предоставлены разрешения на чтение и выполнение файла. Определение прав на доступ, предоставленных пользователю, завершится на первом совпадении идентификаторов, поэтому если пользователь является владельцем файла, групповые права для него рассмотрены не будут. Таким образом, возможны ситуации, когда пользователь является владельцем файла, но доступ к нему получить не может.

Однако удалить такой файл все равно можно. При отсутствии у владельца доступа на запись в файл попытка его удаления приведет к выдаче ядром запроса «Delete file overriding mode 0055? (y/n)», что в переводе означает: «удалить файл несмотря на режим доступа 0055 (да/нет)». В результате положительного ответа на этот запрос файл будет удален. Однако в данном случае владелец файла не сможет выполнить в отношении этого файла никаких других операций.

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

perl myperlsript.pl

или sh myshellscript.sh


ПРИМЕЧАНИЕ

Имя сценария оболочки не обязано заканчиваться на «.sh», равно как и имя сценария на языке Perl — на «.pl». Это просто соглашение, используемое автором, чтобы отличать файлы сценариев оболочки от файлов сценариев на языке Perl.

Определить, чем является данный файл — исполняемым бинарным файлом, сценарием оболочки, текстовым документом или чем-то еще, поможет программа file. Признаки, по которым программа определяет вид файла, хранятся в /usr/ share/misc/magic. Определения новых видов файлов следует помещать в /etc/magic.

Разрешения на доступ для каталогов трактуются несколько иначе, чем для файлов. Как и у любого другого файла, у каталога есть владелец и группа. Однако для каталогов права на запись, чтение и выполнение имеют другое значение, не такое, как для файлов. Наличие права на чтение позволяет тому, для кого оно установлено, то есть владельцу, группе и/или остальным пользователям просматривать содержимое каталога. Иными словами, если вы обладаете правом чтения каталога, значит, вы можете получить список имен файлов, содержащихся в этом каталоге. Но то обстоятельство, что вы можете прочитать имя файла, вовсе не означает, что вы можете прочитать его содержимое. Сами файлы, содержащиеся в этом каталоге, могут оказаться недоступными для чтения.

Разрешение на запись позволяет тому, для кого оно установлено, записывать что-либо в каталог. Этого разрешения может оказаться, однако, недостаточно для изменения уже существующего файла или его удаления. Возможность изменения или удаления файла определяется специальными разрешениями, устанавливаемыми для этого конкретного файла. Но вы можете создавать в каталоге новые файлы.

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

Примером каталога, для которого имеет смысл не устанавливать все разрешения одновременно, является каталог incoming на ftp-сервере. Обычно этому каталогу назначают следующие разрешения на доступ:

drwx-wx-wx 2 root ftp 1024 Jul 8 12:47 incoming

При таких правах любой пользователь ftp-сервера сможет поместить файлы в этот каталог, но видны они будут только суперпользователю и только суперпользователь сможет прочесть их. Для любого другого пользователя каталог будет выглядеть пустым. Это позволяет оградить ftp-сервер, поддерживающий закачку файлов, от нежелательного использования этой возможности анонимными пользователями (например, для обмена файлами через него, когда один пользователь закачивает их, а другой после скачивает).


ПРИМЕЧАНИЕ

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