Средства контроля доступа

We use cookies. Read the Privacy and Cookie Policy

Средства контроля доступа

Многие из опций, которые указываются для каждого клиента в файле /etc/exports, предназначены для управления доступом. Как было сказано ранее, NFS использует механизм доверия, поэтому сервер не может проверить имя пользователя и пароль, как это происходит в системе Samba. Если клиент объявлен как заслуживающий доверия, то решение о предоставлении доступа принимается на основании сведений о принадлежности файла владельцу и правах. Некоторые из опций управления доступом, встречающиеся в файле /etc/exports, перечислены ниже.

• secure и insecure. По умолчанию сервер NFS считает, что запросы должны поступать с защищенных портов, номера которых не превышают 1023. В системах UNIX и Linux доступ к таким портам имеет только пользователь root (право работы через порты с номерами 1024 и выше предоставлено всем пользователям). Разрешая обращения клиентов, которые используют номера портов, превышающие 1023 (т.е. задавая опцию insecure), вы предоставляете пользователям, не обладающим привилегиями, дополнительный шанс осуществить несанкционированный доступ к серверу. В некоторых случаях, например при тестировании клиентских программ, использование опции insecure может быть оправдано.

• ro и rw. Опция ro разрешает только читать содержимое экспортируемого каталога, а опция rw предоставляет также возможность записывать данные в этот каталог. В сервере knfsd, использующем функции ядра, по умолчанию принимается опция ro, а в серверах, выпущенных ранее, по умолчанию предполагалось, что задана опция rw. Чтобы предотвратить возникновение ошибок, рекомендуется задавать требуемую опцию в явном виде.

• hide и nohide. Предположим, что на сервере NFS каталог /usr размещен в одном разделе, а каталог /usr/local — в другом. Если вы экспортируете каталог /usr, должен ли экспортироваться также и каталог /usr/local? Ответ на данный вопрос зависит от используемого сервера. В ядре 2.2.x для этого была предусмотрена специальная опция. В последних версиях сервера NFS вы можете управлять его поведением, задавая опции hide и nohide. Опция hide скрывает смонтированные разделы, а опция nohide выполняет противоположное действие. Некоторые клиенты допускают ошибки в работе со смонтированными разделами, поэтому в ряде случаев приходится задавать опцию hide. При этом клиент должен самостоятельно монтировать оба каталога.

• noaccess. Данная опция запрещает доступ к каталогу, даже если он является подкаталогом экспортируемого каталога. Предположим, например, что вы хотите экспортировать поддерево /home, за исключением каталога /home/abrown. Для этого надо создать в файле /etc/exports обычную запись для каталога /home и отдельную запись для каталога /home/abrown, указав в ней опцию noaccess. В результате пользователи не смогут обращаться к каталогу /home/abrown.

• subtree_check и no_subtree_check. В некоторых случаях приходится экспортировать не весь раздел, а лишь его часть. При этом сервер NFS должен выполнять дополнительную проверку обращений клиентов, чтобы убедиться в том, что они предпринимают попытку доступа лишь к файлам, находящимся в соответствующих подкаталогах. Такой контроль поддерева (subtree checks) несколько замедляет взаимодействие с клиентами, но если отказаться от него, могут возникнуть проблемы с безопасностью системы. Отменить контроль поддерева можно с помощью опции no_subtree_check. Опция subtree_check, включающая такой контроль, предполагается по умолчанию. Контроль поддерева можно не выполнять в том случае, если экспортируемый каталог совпадает с разделом диска.

• root_squash и no_root_squash. По умолчанию сервер NFS отвергает обращения, которые исходят от пользователя root, работающего на клиентском компьютере. Эти обращения интерпретируются как попытки доступа локального анонимного пользователя. Такая мера повышает уровень безопасности системы, предполагая, что привилегии root на удаленном компьютере могли быть получены незаконно. Если же вам необходимо выполнять администрирование сервера с удаленного узла, то, для того, чтобы иметь возможность работать с привилегиями локального пользователя root, надо задать опцию no_root_squash. Подобная мера может потребоваться, например, при создании резервных копий.

• all_squash и no_all_squash. В обычных условиях обращения от пользователей принимаются, но иногда приходится запрещать доступ к экспортируемым каталогам, содержащим важные данные. Сделать это можно с помощью опции all_squash. Опция no_all_squash отменяет действие all_squash.

• anonuid и anongid. Анонимным пользователем, обращения которого отвергаются, обычно считается пользователь nobody. Вы можете переопределить такую установку, указав идентификатор пользователя (UID) и идентификатор группы (GID). Сделать это позволяют соответственно опции anonuid и anongid. В этом случае пользователю root, работающему на удаленном клиенте, будет предоставлен доступ с привилегиями указанного пользователя. Эти опции также приходится указывать при работе с клиентами PC/NFS, которые поддерживают лишь одного локального пользователя. Такая опция должна сопровождаться знаком равенства и идентификатором пользователя или группы, например

Пример файла /etc/exports показан в листинге 8.1. В этом файле описаны два экспортируемых каталога: /usr/X11R6 и /home. Кроме того, в нем содержится третья запись, запрещающая с помощью опции noaccess обращения к каталогу /home/abrown. (Поскольку последняя запись лишь ограничивает доступ, в ней не указан конкретный узел; обращаться в данному каталогу не может ни один клиент.) Каталоги /usr/X11R6 и /home доступны для компьютера gingko и всех узлов сети 192.168.4.0/24, однако при экспортировании этих каталогов заданы различные опции. Каталог /usr/X11R6 доступен только для чтения, а в каталог /home клиенты имеют также право записывать данные. На компьютере gingko для доступа к /usr/X11R6 задан идентификатор анонимного пользователя, равный 514, а при обмене с каталогом /home не выполняется контроль поддерева.

Листинг 8.1. Пример файла /etc/exports

/usr/X11R6 gingko(ro,anonuid=504) 192.168.4.0/24(ro)

/home gingko(rw,no_subtree_check) 192.168.4.0/255.255.255.0(rw)

/home/abrown (noaccess)