Изучаем Linux, 302 (смешанные среды): Файловые службы

Создание и настройка общих файловых ресурсов в смешанной среде

Эта статья поможет вам подготовиться к сдаче экзамена 302 сертификационной программы института Linux Professional Institute (LPI). Из этой статьи вы узнаете о создании общих файловых ресурсов и настройке файловых служб Samba в смешанной среде.

Шон Уолберг, старший сетевой инженер, P.Eng

Шон Уолберг работал с Linux- и UNIX-системами с 1994 года в академических, корпоративных и "провайдерских" кругах. Он широко освещает вопросы системного администрирования в течение нескольких последних лет. С ним можно связаться по адресу sean@ertw.com.



10.05.2012

Об этой серии

Эта серия статьей поможет вам освоить задачи администрирования операционной системы Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3).

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-3. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит текущие (по состоянию на ноябрь 2010 года) цели экзаменов сертификации LPIC-3.

В этой статье рассматриваются следующие темы:

  • Создание и настройка общего доступа к файлам.
  • Планирование миграции файловых служб.
  • Скрытие административного общего ресурса IPC$.
  • Создание сценариев для поддержки работы пользователей и групп с общими файловыми ресурсами.
  • Использование инструментов командной строки для работы с общими файловыми ресурсами.

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 312.2 темы 312. Цель имеет вес 4.

Предварительные требования

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

Создание общих файловых ресурсов

В предыдущей статье говорилось о том, что все имена разделов в файле smb.conf, за исключением homes, printers и global, воспринимаются Samba как имена общих ресурсов. Помимо имени общего ресурса важным параметром является его сопоставление с директорией на диске. Ниже приведен пример простейшего общего ресурса, доступного для использования:

[tmpdir]
path = /var/tmp

О факультативном экзамене LPI-302

Как и многие другие программы, программа сертификации Linux Professional Institute (LPIC) предусматривает различные уровни сертификации, где для получения каждого последующего уровня необходимо обладать более глубокими знаниями и практическим опытом. Экзамен LPI-302 – это факультативный экзамен третьего уровня программы LPIC, требующий продвинутых знаний в области системного администрирования Linux.

Для получения сертификата LPIC третьего уровня (LPIC-3) необходимо успешно сдать два экзамена первого уровня (101 и 102), два экзамена второго уровня (201 и 202), а также базовый экзамен 301 третьего уровня (LPIC-3). Если вы получили сертификат третьего уровня, вы можете сдавать факультативные экзамены по определенным специализациям, например, экзамен LPI-302.

В этом примере был создан общий ресурс с именем tmpdir, сопоставленный с директорией /var/tmp на сервере Samba. Если бы, например, этот сервер назывался phoenix, то пользователи смогли бы получить доступ к файловому ресурсу, используя UNC-путь \\phoenix\tmpdir. Однако такая редко встречающаяся конфигурация не очень удобна: по умолчанию доступ к общим ресурсам предоставляется в режиме "только для чтения", поэтому запись данных в созданный нами общий ресурс невозможна.

Использование параметров безопасности

В Samba имеется множество параметров безопасности, которые определяют, какие ресурсы должны быть доступны и откуда. Многие из этих параметров влияют на взаимодействие Samba и разрешений файловой системы UNIX, и не рассматриваются в этой статье. Тем не менее, мы рассмотрим несколько основных параметров.

Серверы SMB (Server Message Block), включая собственные реализации Microsoft, имеют общий ресурс IPC$, являющийся общим ресурсом межпроцессного взаимодействия и использующийся для выполнения программных функций через сеть. Знак доллара ($) в конце имени ресурса означает, что этот ресурс является скрытым и не виден клиентам Microsoft, даже если сервер будет сообщать о его наличии.

Samba создает общий ресурс IPC$ даже если он не создан в файле smb.conf. Если вы создадите этот ресурс, то сможете управлять доступом к нему. Ниже приведен пример общего ресурса IPC$ с ограниченным доступом:

[IPC$]
  hosts allow = 192.168.1.0/255.255.255.0
  browsable = no

Создайте ваш собственный канал

Вы можете создать ваш собственный RSS, Atom или HTML канал обновлений и получать уведомления о новых или обновленных статьях нашего сайта. Для этого перейдите на страницу developerWorks RSS feeds, выберите зону Linux, установите флажок Статьи и введите в качестве ключевой фразы Linux Professional Institute, после чего выберите требуемый тип канала.

Этот фрагмент кода создает общий ресурс IPC$ и разрешает обращаться к нему только из подсети 192.168.1.0. Далее устанавливается параметр browsable, который определяет, должен ли этот ресурс быть видимым для клиентов, когда они запрашивают его, или нет.

Некоторое время назад было принято скрывать важные общие ресурсы, такие как IPC$, в надежде на то, что злоумышленники могли не заметить их. Этот подход не стоит ограничивать только ресурсом IPC$. Например, к ресурсу IPC$ необходимо подключаться для получения списка общих ресурсов сервера. Если вы посмотрите на пакеты отладки и трассировки Samba, то увидите, что параметр browsable ни на что не влияет. Здесь я рассказал о нем лишь только потому, что данный вопрос упоминается в программе экзамена. Гораздо лучше ограничивать доступ списком хостов, которым разрешено подключаться к ресурсу IPC$, а не пытаться спрятать его.

Пользователь может подключиться к общему ресурсу, не указывая свое имя, становясь, таким образом, гостем. По умолчанию гостевой доступ к общим ресурсам не разрешен, но его можно разрешить, установив параметр guest ok = yes на уровне общего ресурса. По умолчанию гостевым пользователям присваивается имя nobody, которое можно изменить с помощью глобального параметра guest account.

Для связи двух областей файловой системы в UNIX широко используются символические ссылки. Например, в домашней директории можно создать символическую ссылку на директорию системных временных файлов и использовать ее как часть дерева домашней директории. Samba разрешает переходить по таким символическим ссылкам, позволяя получать доступ к областям файловой системы, находящимся за пределами общего файлового ресурса. Если вы хотите запретить эту возможность, используйте параметр follow symlinks = no на уровне общего ресурса.

Если вы хотите ограничить доступ пользователей к общему ресурсу, используйте параметр valid users. Например, параметр valid users = sean, jon, isaac разрешает получать доступ к общему ресурсу, для которого он был установлен, только трем указанным пользователям. Этот параметр можно использовать в дополнение к файловым разрешениям для дополнительной защиты важных ресурсов.

Домашние директории

Обычно принято предоставлять пользователям домашние директории для хранения их личных файлов. Каждому пользователю, запись о котором присутствует в файле паролей UNIX, назначена домашняя директория. Используя раздел [homes], в Samba можно экспортировать любое количество домашних директорий без необходимости создавать отдельный раздел конфигурации для каждой домашней директории. Если кто-либо обращается к общему ресурсу с именем joe, то Samba начинает искать общий ресурс с таким именем. Если такой общий ресурс не найден, Samba выполняет поиск пользователя с тем же именем. Если этот пользователь обнаруживается, то Samba использует раздел [homes] конфигурационного файла в качестве шаблона для этого общего ресурса.

В листинге 1 показан типовой раздел [homes].

Листинг 1. Шаблон для домашних директорий пользователей
[homes]
 comment = Home Directories
 writable = yes
 browsable = yes
 valid users = %S

Каждая строка конфигурации в листинге 1 означает следующее:

  • Начало конфигурирования раздела homes.
  • Создание комментария, который будут видеть пользователи, просматривающие подробные сведения о доступных файловых ресурсах этого сервера.
  • Установка разрешения на запись, которое позволяет пользователям изменять содержимое их домашних директорий.
  • Установка флага, означающего, что этот ресурс будет виден в списке общих ресурсов, запрашиваемом пользователями; пользователи, указавшие свое имя, будут видеть как общий ресурс, так и домашнюю директорию.
  • Разрешает доступ к общему ресурсу только тому пользователю, которому этот ресурс принадлежит.

Обратите внимание на макрос %S в листинге 1. Этот макрос преобразуется в имя общего ресурса. Поскольку имя пользователя и имя общего ресурса совпадают, то параметр valid users разрешает использовать ресурс только его владельцу.

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

Другая интересная особенность, связанная с домашними директориями, заключается в том, что подключаясь непосредственно к ресурсу \\server\homes, вы попадаете в свою собственную домашнюю директорию, как если бы вы подключались к ресурсу \\server\имя_пользователя. Эта дополнительная возможность была реализована командой разработчиков Samba для того, чтобы помочь пользователям, использующим компьютер совместно, и избавить от путаницы.

Сценарии для добавления пользователей и групп

Если вы посмотрите на список пользователей домена Microsoft, то может оказаться, что пользователь, подключающийся к вашему серверу, не имеет локальной учетной записи UNIX. Один из способов решения этой проблемы заключается в том, чтобы с помощью параметра add user script заставить Samba автоматически создавать для пользователя учетную запись при его подключении. Макрос %u преобразуется в имя подключающегося пользователя. Можно использовать системную утилиту useradd или написать собственные сценарии.

Для групп существует похожий параметр add group script, используемый при работе с инструментами Microsoft, предназначенными для управления экземпляром Samba. В этом случае также могут оказаться сценарии add user to group и delete. Полный список автоматизируемых задач вы можете найти на man-странице smb.conf.

Автоматическое создание пользователей по запросу не всегда является наилучшей идеей. Лучшим решением может оказаться использование механизмов аутентификации winbind или LDAP, позволяющих Samba и Linux использовать общую базу данных пользователей.

Символы в верхнем и нижнем регистре

В среде Microsoft регистр символов в именах файлов и директорий не имеет значения. Таким образом, FILE, file и FiLe указывают на один и тот же файл. Однако в Linux регистр символов имеет значение, и в данном случае FILE, file и FiLe – это три разных файла. Для разрешения конфликтов Samba должна знать, как в таких ситуациях следует сопоставлять имена различных сред. Процесс сопоставления регистров является частью более общего процесса под названием преобразование имен.

Преобразованием регистров имен файлов управляют несколько параметров. Самым важным из них является параметр case sensitive, который может принимать значения yes, no или auto. Если параметр case sensitive включен, то Samba использует символы в том регистре, в котором они указаны клиентами. Если этот параметр отключен, то Samba выполняет поиск в директории без учета регистра.

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

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

Параметры default case и preserve case работают в связке друг с другом. Если параметр preserve case установлен в yes, то используется регистр, указанный клиентом. Если параметр preserve case установлен в no, то для определения регистра вновь создаваемого файла используется значение, установленное параметром default.

Включение функции Usershare

С помощью функции Usershare пользователи могут создавать свои собственные общие ресурсы без необходимости редактирования файла smb.conf. После того, как администратор включит эту функцию, обычные пользователи могут использовать средства командной строки для экспорта выбранных ими директорий, а также для удаления общих ресурсов, если они станут не нужны.

Для включения функции Usershare сначала необходимо разрешить ее использование на глобальном уровне. В листинге 2 показан фрагмент файла smb.conf, включающий функцию Usershare.

Листинг 2. Включение функции Usershare
[global]
  usershare path = /var/lib/samba/usershares
  usershare max shares = 5
  usershare prefix allow list = /home
  usershare prefix deny list = /var, /usr

В листинге 2 настраиваются параметры раздела [global]. Сначала с помощью параметра usershare path определяется директория, которую Samba будет использовать для конфигурации пользовательских общих ресурсов. Для этой директории существует нисколько ограничений, о которых будет рассказано позже. Далее устанавливается ограничение на количество пользовательских общих ресурсов. Два последних параметра показывают, как задать ограничения для директорий, которые будут находиться в общем доступе. Параметр usershare prefix allow list ограничивает все общие ресурсы указанной директорией — в нашем случае общие ресурсы должны находиться в директории /home. Параметр usershare prefix deny list имеет противоположное значение и разрешает все за исключением указанных директорий.

Samba налагает два ограничения на пользовательские общие ресурсы. Во-первых, директория, указанная в параметре usershare path, должна быть доступна для записи пользователю, создающему общий ресурс, и иметь установленный бит закрепления (1000 или +t). Во-вторых, если параметр usershare owner only не установлен в false, то пользователь должен быть владельцем директории, к которой он предоставляет общий доступ.

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

# mkdir -p /var/lib/samba/usershares
# chown root:usershares /var/lib/samba/usershares
# chmod 1770 /var/lib/samba/usershares

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

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

net usershare add docs /home/me/Documents/ "My docs" Everyone:F

Эта команда экспортирует директорию /home/me/Documents в общих ресурс с именем docs и предоставляет всем полный доступ к ней. Другие команды, которые можно использовать:

  • net usershare list – выводит список общих ресурсов, созданных пользователем.
  • net usershare info docs – показывает конфигурацию общего ресурса docs.
  • net usershare delete docs – удаляет общий ресурс docs.

Инструменты командной строки

Samba содержит несколько инструментов командной строки. С помощью утилиты libsmbclient из состава Samba были созданы другие широко используемые утилиты SMB/ CIFS.

Одним из наиболее заметных отличий UNIX от Windows является то, что UNIX содержит одну большую файловую систему, тогда как в Windows имеется несколько обозначенных буквами дисков. Утилита smbclient позволяет просматривать удаленные общие ресурсы Windows, используя интерфейс, похожий на интерфейс протокола FTP, однако чтобы быть прозрачным для приложений, удаленный общий ресурс Windows должен монтироваться как любая другая файловая система.

В составе Samba имеется утилита smbmount, которая иногда переупаковывается в файл mount.cifs. Эту команду можно запустить непосредственно в командной строке либо вызвать через команду mount. В листинге 3 показан процесс монтирования в Linux удаленного общего ресурса CIFS в качестве обычной файловой системы.

Листинг 3. Монтирование удаленного общего ресурса CIFS
# mount -t cifs '\\192.168.1.134\docs' /mnt -o user=myuser
Password:
# mount
...
\\\\192.168.1.134\\docs on /mnt type cifs (rw)

Первая команда монтирует файловую систему CIFS по указанному UNC-пути в точку монтирования /mnt. За исключением использования UNC-пути эта команда выглядит как обычная команда mount. Параметры передаются с помощью опции -o. Единственной опцией, которая здесь нужна, является имя пользователя. Man-страница mount.cifs содержит полный список всех опций, среди которых могут содержаться пароль и имя домена. Если вы не указываете пароль, вам будет предложено ввести его. Наконец, команда mount показывает смонтированную файловую систему.

Другая команда – это smbsh. Вместо монтирования файловой системы стандартными средствами UNIX smbsh перехватывает библиотечные вызовы обращений к файлам и при необходимости перенаправляет запросы к общему ресурсу CIFS. В настоящее время в большинстве систем эта команда отсутствует, поскольку она не так надежна, как монтирование файловой системы.

Перемещение общих файловых ресурсов

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

Для добавления псевдонима сервера используется глобальный параметр netbios aliases. Если вы хотите изменить имя сервера Samba на какое-то другое имя, отличное от UNIX-имени сервера, используйте параметр netbios name.

Команды, относящиеся к монтированию файловых систем, о которых вы уже знаете к этому моменту, также могут пригодиться для копирования файлов с одного сервера на другой в рамках подготовки к миграции. Также могут оказаться полезными утилиты UNIX наподобие rsync.


Что дальше

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

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=813919
ArticleTitle=Изучаем Linux, 302 (смешанные среды): Файловые службы
publish-date=05102012