По умолчанию секция закрыта, и для разрешения доступа к ней необходимо убрать комментарии. Обратите внимание на путь к открытому каталогу. Это /tmp — каталог для хранения временных файлов пользователей. С помощью директив read only (значение no) и public (значение yes) мы указываем серверу Samba, что директория открытая, и в нее могут записывать и читать файлы все пользователи.
Несмотря на удобства, которые предоставляет этот каталог, я рекомендую использовать его только в закрытых сетях. Если у вас есть выход в Интернет, то с помощью сетевого экрана необходимо ограничить доступ к Samba. Так как в директорию могут писать любые пользователи, то злоумышленник может записать в нее свои файлы, которые помогут ему получить на сервере права администратора root.
6.2.5. Личные директории
Все разделы, которые мы рассматривали выше, имеют устоявшиеся имена и предназначены для решения определенных задач. Но в некоторых случаях вы можете изменить имя раздела, и на работе сервера это не скажется. Но я не рекомендую этого делать, потому что в одной версии Samba все будет работать хорошо, а при обновлении программ сервера все может измениться, и потом трудно будет найти ошибку, благодаря которой Samba работает неверно.
Но вы можете создавать собственные разделы, в которых будете описывать права. Например, вы можете захотеть организовать общую директорию, в которой файлы будут доступны всем пользователям, но записывать могут только члены определенной группы. Допустим, что в этом каталоге должны храниться какие-то картинки. Для решения этой задачи можно создать раздел [shareimages] следующим образом:
;[shareimages]
; comment = Share Images
; path = /home/samba/images
; public = yes
; writable = yes
; write list = @staff
; printable = no
Для данного раздела задаются следующие директивы:
□ path = /home/samba/images — директория, которую мы хотим открыть;
□ public = yes — признак доступности;
□ writable = yes — запись в каталог разрешена;
□ write list = @staff — определяет группу staff, которая может записывать в файл. Для всех остальных директория открыта только для чтения.
В таких объявлениях директорий можно описывать любые директивы, которые мы рассматривали в данной главе.
6.3. Управление пользователями
Для начала разберемся с именами пользователей. Для доступа к серверу Samba используются сведения из системного файла /etc/passwd. Но вы можете завести отдельные записи Samba-сервера, которые будут соответствовать реальным именам, но их можно будет использовать только для подключения к Samba, а не к системе.
Имена Samba-пользователей описываются в файле /etc/samba/smbusers, расположение и название которого могут быть изменены через директиву username map файла smb.conf. Содержимое файла может быть таким:
# Unix_name = SMB_name1 SMB_name2
root = administrator admin
nobody = guest pcguest smbguest
У списка имен несколько предназначений. Например, с его помощью вы можете спроецировать имена, привычные для пользователей DOS и Windows, на учетные записи Linux. Например, в Windows максимальные права принадлежат пользователю Administrator, а в Linux — это root. Во второй строке приведенного выше примера устанавливается соответствие имени administrator пользователю root.
Второе назначение файла — аккумулировать несколько имен на одной учетной записи. Например, у вас есть группа пользователей, которым необходимо назначить одинаковые права. Для этого создаем в Linux только одну учетную запись nobody (под ней будут работать пользователи), а в smb заводим несколько пользователей guest, pcguest и smbguest (под этими именами они будут входить в систему).
Несмотря на то, что мы отразили имена пользователей administrator и admin, и это разные учетные записи, для них будет использоваться один пароль — назначенный пользователю root.
Информация о пользователях, которым разрешен доступ, хранится в файле /etc/samba/smbpasswd. Его расположение и имя могут быть изменены через директиву smb passwd file файла smb.conf. Рассмотрим пример содержимого файла:
flenov:0:813D6593C13F1173ED93178CA975D79[UX ]:LCT-41FA818F
robert:500:813D6593C11F1173ED98178CA975D79:[UX ]:LCT-41FA818F
Сразу видно, что файл чем-то похож на /etc/passwd. Он также разделен на несколько колонок. Наиболее интересные из них первые три — имя пользователя, его UID в Linux-системе и пароль.
Но добавлять пользователей вручную не очень удобно, потому что нужно зашифровать и прописать пароль, что не так уж и просто. Чтобы облегчить задачу, в пакет Samba включена утилита smbpasswd, которая имеет следующие параметры:
□ a — добавить пользователя в Samba-систему. Учетная запись должна уже существовать в /etc/passwd. Например, давайте пропишем Роберта, с которым мы уже не раз работали:
smbpasswd -a robert
В ответ на это программа попросит вас дважды ввести пароль. Указанная вами комбинация никак не влияет на системный пароль и используется только для доступа к Samba. Таким образом, пароли могут отличаться, Я даже рекомендую сделать их различными. ОС Windows умеет запоминать пароли и хранить в своей системе, а версии Windows 9x делают это небезопасно. Если злоумышленник сможет украсть пароль на Samba, то он проникнет и в систему;
□ x — удалить пользователя. Чтобы исключить Роберта из системы, выполните команду: smbpasswd -х robert;
□ d — деактивировать пользователя. Если необходимо временно отключить доступ для пользователя, не удаляя его из системы, выполните команду: smbpasswd -d robert. Давайте посмотрим на строку, соответствующую Роберту. после выполнения этой команды:
robert:500:813D6593C11F1173ED98178CA975D79:[DUX ]:LCT-41FA818F
Обратите внимание, что в четвертой колонке в квадратных скобках появилась буква "D". Она как раз и указывает на то, что запись деактивирована. Таким образом, вы легко можете определить, какие записи активны, а какие нет.
□ е — активировать пользователя. С помощью этой команды можно подключить пользователя: smbpasswd -e robert.
Дополнительные параметры этой утилиты можно увидеть в файле помощи man.
Напоминаю, что файл /etc/samba/smbpasswd используется, если пароли передаются по сети в зашифрованном виде. В этом случае, чтобы предоставить доступ к Samba всем пользователям системы, необходимо для каждого выполнить команду smbpasswd. Есть сценарии, которые автоматизируют работу, но их использование не очень эффективно, потому что они не задают пароля и, чаще всего, перетаскивают всех пользователей, даже тех, кто не должен иметь доступ в систему. К таким пользователям относятся системные учетные записи типа bin, adm, daemon и др.
6.4. Использования Samba
Сервис Samba в основном создавался для пользователей Windows, но и поклонники Linux тоже оценили все преимущества этой технологии, тем более что Linux выполнила задачу разделения файлов по сети не хуже Windows, а где-то даже лучше. Для работы с Samba из ОС Linux используется команда smbclient.
Чтобы подключиться к серверу, необходимо, как минимум, указать два ключа: -L (адрес сервера) и -U (имя пользователя). В ответ на это программа запросит ввести пароль. Вели вы не используете шифрование, то необходимо ввести системный пароль, иначе воспользуйтесь тем, который вы указали при переносе пользователя в файл /etc/samba/smbpasswd (при запуске команды smbpasswd).
Итак, выполните следующую команду для тестирования сервера:
smbclient -L localhost -U root
После ввода пароля пользователя root вы должны увидеть все открытые ресурсы сервера. Результат выглядит примерно следующим образом:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.2.3a]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server)
ADMIN$ Disk IPC Service (Samba Server)
Server Comment
------ -------
FLENOVM Samba Server
Workgroup Master
--------- ------
MYGROUP FLENOVM
Вы должны учитывать, что в данном списке находятся не все директории. Например, у домашних каталогов из раздела [homes] файла конфигурации директива browseable установлена в значение no (см. разд. 6.2.1). Следовательно, таких каталогов не будет видно. Это вполне логично, потому что нельзя злоумышленнику давать возможность лицезреть имена директорий, особенно если они соответствуют именам пользователей или содержат конфиденциальные данные. Никогда не изменяйте этот параметр, чтобы хакер не знал, что он должен сломать.
Для подключения к открытому ресурсу сервера нужно написать команду smbclient, передав ей имя ресурса, которое задается в формате UNC (Universal Naming Convention, универсальное именование объектов) с применением следующего синтаксиса: