Linux глазами хакера

Флёнов Михаил Евгеньевич

Глава 6

В стиле Samba

 

 

Изначально для обмена файлами между компьютерами использовался FTP-протокол (об этом подробно поговорим в гл. 10). Но он неудобен, т.к. использует технологию "клиент-сервер". Чтобы получить с компьютера друга файл, он должен запустить у себя FTP-сервер, а вы с помощью специальной программы FTP-клиента должны подключаться к этому серверу и скачивать нужный файл.

Чтобы не утруждать себя настройками FTP-сервера, многие стали использовать специализированные обменники в своих локальных сетях. Для этого выделялся FTP-сервер с открытым доступом, который превращался в мусорную корзину.

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

Чтобы пользователи Windows могли видеть сервер Linux в своем сетевом окружении и работать с ним как с Windows-машиной, был разработан пакет Samba (чаще всего можно встретить сокращение smb), который состоит из двух программ. Сервер позволяет публиковать локальные папки для всеобщего просмотра, а с помощью клиента вы можете подключаться к другим компьютерам и работать с их открытыми ресурсами.

С помощью Samba можно сделать легко доступный и удобный в использовании файловый сервер. Раньше у меня на работе для этих целей использовался Windows 2000-сервер, который параллельно работал как сервер баз данных. Но файловый архив занимает слишком много места, отнимает ресурсы сети и сервера и понижает безопасность. Поэтому было принято решение перенести файловый архив на отдельный физический сервер. Использовать для этого Windows 2000 слишком дорого и неэффективно — это то же самое, что вывозить мусор из дома на расстояние 20 метров на Ford Mondeo. Для этих целей лучше подойдет Linux, который обходится дешевле и не требует обслуживания. Достаточно один раз настроить такой сервер, и можно использовать годами. Именно так мы и поступили.

Одно из мощнейших преимуществ Samba — возможность удаленного управления через SSH или SWAT (Samba Web-based Administrative Tool, набор администратора через Web для Samba).

 

6.1. Конфигурирование Samba

 

Основным конфигурационным файлом для Samba является smb.conf, который можно найти в директории /etc/samba (в некоторых дистрибутивах это может быть каталог /etc). Кроме него в этой директории можно найти файл lmhosts, с помощью которого происходит преобразование IP-адресов и имен компьютеров аналогично \etc\hosts в Linux, а Диск:\Windows\system32\drivers\etc\lmhosts.sam в Windows только используется сервером Samba.

Дополнительно вы можете создать следующие файлы (некоторые из них могут существовать):

□ smbusers — файл хранит список пользователей, которым разрешено подключаться к серверу Samba;

□ smbpasswd — пароли пользователей из файла smbusers;

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

Конфигурационный файл smb.conf содержит не так много директив, поэтому для удобства восприятия я привел небольшой пример (листинг 6.1), который поможет вам увидеть общую структуру такого файла. В дальнейшем нам предстоит рассматривать другие серверы Linux, где настроек намного больше.

Листинг 6.1. Фрагмент конфигурационного файла smb.conf

[global]

# Основные директивы

 workgroup = MYGROUP

 server string = Samba Server

; hosts allow = 192.168.1. 192.163.2. 127.

 load printers = yes

 printing = lprng

; guest account = pcguest

# Директивы журнала

 log file = /var/log/samba/%m.log

 max log size = 0

# Директивы безопасности

 security = user

; password server =

; password level = 8

; username level = 8

 encrypt passwords = yes

 smb passwd file = /etc/samba/smbpasswd

 unix password sync = Yes

 passwd program = /usr/bin/passwd %u

 passwd chat = *New*password* %n\n *Retype*new*password* %.

 *passwd:*all*authentication*tokens*updated*successfully*

 pam password change = yes

; username map = /etc/samba/smbusers

; include = /etc/samba/smb.conf.%m

 obey pam restrictions = yes

# Настройка сокета

 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_sndbuf=819

; interfaces = 192.168.12.2/24 192.168.13.2/24

# Настройка просмотра

; remote browse sync = 192.168.3.25 192.168.5.255

; remote announce = 192.168.1.255 192.168.2.44

; local master = no

; os level = 33

; domain master = yes

; preferred master = yes

# Работа с сервером

; domain logons = yes

; logon script = %m.bat

; logon script = %U.bat

; logon path = \\%L\Profiles\%U

; wins support = yes

# WINS-сервер

; wins server = w.x.y.z

; wins proxy = yes

 dns proxy = no

# Отображение файлов

; preserve case = no

; short preserve case = no

; default case = lower

; case sensitive = no

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

В большинстве конфигурационных файлов Linux и его программах для описания директив используется формат:

ИмяДирективы Значение

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

В Samba-сервере используется несколько иной формат:

ИмяДирективы=Значение

Значение директивы ставится после знака равенства. Таким образом, имя директивы может состоять из нескольких слов, содержать пробелы и различные символы (кроме знака равенства).

 

6.1.1. Основные настройки

Конфигурационный файл разбит на секции. Самой первой идет [global], в которой описываются глобальные настройки сервера. В ней можно увидеть следующие директивы:

□ workgroup = имя — содержит имя группы, в которую входит сервер. Когда в Windows вы входите в сетевое окружение, то можно увидеть все доступные ресурсы, разбитые на категории. В каждой группе могут быть свои компьютеры или серверы;

□ netbios name = имя — определяет имя, которое пользователи будут видеть в сетевом окружении для данного сервера, оно не должно совпадать с именем рабочей группы;

□ server string = описание — это свободный текст, который можно будет увидеть в поле Description (Комментарий) свойств сервера или окне сетевого окружения в режиме Details (Таблица). В этом поле вы можете поместить комментарий, описывающий содержимое сервера, например, "Файловый архив Сергея";

□ hosts allow = адреса — перечисление через пробел IP-адресов или сетей, которым разрешен доступ к Samba-серверу. Например, чтобы открыть доступ всем компьютерам сети 192.168.1.x и одному компьютеру из другой сети 192.168.2.1, надо написать следующую команду:

hosts allow = 192.168.1. 192.168.2.2

□ printcap name = файл — указывает файл описания принтеров, подключенных к системе. По умолчанию это /etc/printcap;

□ load printers = yes — задает (yes) автоматическое включение принтеров в список открытых ресурсов. Если в этом нет надобности, то укажите no;

□ printing = система — определяет тип системы печати. Здесь можно использовать одно из следующих значений: bsd, sysv, plp, lprng, aix, hpux или qnx.

 

6.1.2. Безопасность

В этом разделе мы рассмотрим директивы, которые напрямую или косвенно влияют на безопасность:

□ guest account = имя — указывается учетная запись, с правами которой пользователь сможет входить в систему. Если ваш сервер не содержит секретной информации и используется для открытого обмена файлами, то можно завести гостевую учетную запись, иначе такой вход не безопасен;

□ log file = файл — название файла-журнала, например, можно написать /var/log/samba/%m.log. Обратите внимание, что в имени присутствует символ процента, вместо которого во время работы будет подставляться имя пользователя, активность которого сохраняется. Так, например, для пользователя robert будет создан журнал /var/log/samba/robert.log;

□ max log size = n — определяет максимальный размер журнала в килобайтах. Укажите значение 0, если ограничения не должно быть;

□ security = уровень — определяет степень доступа, параметр может принимать одно из следующих значений:

 • user — на уровне пользователя;

 • share — аутентификация на основе имени и пароля;

 • server — задаст имя сервера, на котором хранятся пароли (с помощью директивы password server = ИмяСервера), т.к. пароли держатся на другом smb-сервере;

 • security = domain — включает сервер в домен Windows NT, пароль для доступа указывается в файле, определенном с помощью директивы smb passwd file = ИмяФайла;

□ encrypt passwords = yes — позволяет шифровать пароли, передаваемые по сети. Данная опция требует пояснении, потому что могут возникнуть проблемы при авторизации с компьютеров с Windows-системой.

Суть в том, что Windows так шифрует пароли, что они могут быть восстановлены. Зашифрованный пароль передается по сети, и на сервере происходит его дешифровка. Linux же использует необратимую схему хэширования по алгоритму MD5. Для проверки правильности пароля он шифруется по тому же алгоритму, а затем сравнивается результат (хэш-сумма). Таким образом, шифрование Linux и Windows не совместимы.

Чтобы пользователи Windows смогли авторизоваться на Samba-сервере, необходимо передавать пароль в незашифрованном виде. Для этого значение encrypt passwords должно быть равно no. При этом в Windows-системе необходимо в реестре изменить параметр EnablePlainTextPassword, установив в нем значение 1. В Windows 9х этот параметр находится в реестре по адресу:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD\VNETSUP

Для Windows NT это:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parametrs

В Windows 2000:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters

Если соответствующего параметра не существует, то его следует создать. Он должен иметь тип dword.

Если возникли проблемы с входом в систему, то переключите систему в режим работы с незашифрованными паролями. В этом случае Samba использует для авторизации файлы /etc/passwd и /etc/shadow. Полученный открытый пароль шифруется по алгоритму MD5 и сравнивается со значениями из этого файла.

Если вы используете шифрованный пароль, то при авторизации будет использоваться файл /etc/samba/smbpasswd (можно изменить с помощью директивы smb passwd file). Он необходим из-за отличий в шифровании Windows и Linux.

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

□ smb passwd file = файл — указывает на расположения файла с паролями. По умолчанию это та же директория, где расположены конфигурационные файлы Samba;

□ ssl CA certFile = файл — указывает на файл сертификата, необходимый для работы протокола SSL, гарантирующего безопасность передачи данных;

□ unix password sync = yes — разрешает пользователям Windows менять пароль Samba, одновременно обновляя системные пароли в Linux. Если нет такой необходимости, то установите значение параметра no. Для работы этой директивы нужно указать программы, которые будут изменять пароли (команда passwd program) и сообщения, появляющиеся перед пользователем (команда passwd chat). Приведу пример использования:

unix password sync = Yes

passwd program = /usr/bin/passwd %u

passwd chat = *New*password* %n\n *Retype*new*password* %n\n

*passwd:*all*authentication*tokens*updated*successfully*

Помимо этого, необходимо использовать директивы encrypt passwords и smb passwd file;

□ username map = файл — указание на файл, где хранится список пользователей Samba-сервера для Windows 9x-клиентов (о нем подробнее мы поговорим в разд. 6.3).

 

6.1.3. Сеть

В этом разделе нам предстоит рассмотреть директивы настройки сетевого протокола:

□ include = файл — позволяет подключить конфигурационный файл smb.conf с другого компьютера. Имя файла задается в формате путь.%m. В данном случае путь — это полное имя файла на удаленной машине, а %m — это NetBIOS-имя компьютера. Например: /etc/samba/smb.conf.robert;

□ socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 — задает параметры протокола и размер входного и выходного буфера.

В данном случае:

 • TCP_NODELAY — позволяет быстрее передавать данные (без задержек);

 • SO_RCVBUF — размер принимающего буфера;

 • SO_SNDBUF — размер передающего буфера;

□ interfaces = интерфейсы — если у вас установлено две сетевые карты, которые направлены на разные сети, то с помощью этой директивы можно позволить работать с Samba пользователям из обеих сетей.

 

6.1.4. Как домен

Если проанализировать все параметры, которые мы будем рассматривать в этом разделе, то станет очевидно, что Samba способна заменить Windows- сервер, и рабочие станции на базе Windows не заметят неудобств:

□ local master = yes — позволяет сделать ваш Samba-сервер основным браузером сети;

□ domain master = yes — позволяет сделать Samba-сервер главным браузером домена. Не устанавливайте значение yes, если в вашей сети есть Windows NT контроллер домена;

□ domain logons = yes— если включить эту опцию, то Samba сможет работать как сервер для входа в систему компьютеров с ОС Windows 95. При загрузке компьютера с Windows можно будет вводить пароли из Samba;

□ logon script = файл — если директива domain logons включена, то в этой команде можно указать файлы bat-сценариев, которые будут выполняться на компьютере клиента при входе в систему. Сценарий может задаваться в виде %m.bat (заменяется именем компьютера) или %U.bat (подменяется на имя пользователя);

□ logon path = путь — определяет место хранения пользовательских профилей. Для использования этой директивы необходимо убрать комментарии с секции [Profiles], которую можно найти в файле конфигурации по умолчанию.

 

6.1.5. Поддержка WINS

WINS (Windows Internet Naming Service, служба имен Интернета для Windows) — это сервис для сопоставления имен компьютеров и IP-адресов. База данных WINS чем-то напоминает DNS (Domain Name Service), только в ней хранятся NetBIOS-имена компьютеров, a DNS использует доменные имена.

Для настройки работы через WINS используются следующие директивы:

□ wins support = yes — разрешить использование WlNS-сервера;

□ wins server = w.x.y.z — адрес WINS-сервера;

□ DNS Proxy = yes — если эта опция разрешена, то не распознанные NetBIOS-имена можно попытаться определить через DNS-сервер.

 

6.1.6. Отображение файлов

В Linux и Windows используются разные правила именования файлов. Например, в Linux названия чувствительны к регистру, а в Windows — нет. Это значит, что файлы DATA.TXT и data.txt в Windows будут восприняты, как один и тот же файл. Для решения этой проблемы есть несколько команд:

□ case sensitive = no — позволяет не принимать во внимание чувствительность к регистру;

□ default case = lower — отображать все файлы в нижнем регистре;

□ preserve case = no и short preserve case = no — эти директивы позволяют сохранять информацию с учетом регистра.

Если у вас в сети работают пользователи Windows-систем, то рекомендуется оставить указанные выше значения. Для однородной Linux-сети можно разрешить сохранять регистр.

 

6.2. Описание объектов

 

После того как вы определили основные параметры Samba-сервера, можно описывать объекты, к которым может получать доступ пользователь. Эти делается в отдельных разделах, которые идут после секции [Global], которую мы рассмотрели в разд. 6.1.

 

6.2.1. Пора домой

Конечно же, любой пользователь захочет работать со своей директорией. Для этого он должен иметь учетную запись в Linux, с которой и будет связан его каталог. Обращение к такой директории будет выглядеть как //сервер/имя, где сервер — это имя сервера или его IP-адрес, а имя — это имя пользователя, домашнюю директорию которого необходимо увидеть.

Для того чтобы разрешить пользователям работать с собственными директориями, нужно описать раздел [homes]. Рассмотрим пример такой секции:

[homes]

 comment = Home Directories

 browseable = no

 writable = yes

 valid users = %S

 create mode = 0664

 directory mode = 0775

В данной секции вы можете видеть следующие директивы:

□ comment — текстовый комментарий, который не влияет на работу;

□ browseable = no — режим отображения ресурса в списке просмотра. Если указать yes, то в сетевом окружении будут видны папки пользователей;

□ writable = yes — предикат записи в домашнюю директорию. При значении no создание и изменение файлов станет невозможным;

□ create mode = 0750 — права доступа для создаваемых файлов. В данном случае владелец файла имеет полные права, пользователи группы могут читать и выполнять его, а остальные — бесправны. Иногда следует понизить значение параметра до 740, чтобы пользователи группы могли хотя бы читать;

□ directory mode = 0775 — права доступа для создаваемых каталогов. В данном случае у пользователей группы тоже слишком высокие права, и я бы понизил их до 755. чтобы запретить создавать в новой директории файлы. Остальные могут только просматривать каталог, но и по может оказаться лишним, и для большей безопасности лучшим решением будет значение 750;

□ valid users = пользователи — указывается список пользователей, которым разрешен доступ к домашним директориям. Значения разделяются пробелом. Но умолчанию доступ имеют все, но в реальных условиях это необходимо только некоторым. Поэтому я рекомендую в явном виде прописать имена тех пользователей, которые нуждаются в работе со своим домашним каталогом.

 

6.2.2. Доменный вход

Если вы настроили сервер Linux так, чтобы пользователи Windows могли входить в систему через smb, используя его как домен, то необходимо убрать комментарии с секции [netlogon]:

; [netlogon]

; comment = Network Logon Service

; path = /usr/local/samba/lib/netlogon

; guest ok = yes

; writable = no

В этой секции так же присутствует комментарий и директива writable. Пользователи не должны иметь право записи в эту директорию, потому что здесь хранятся их сценарии, которые выполняются при входе в систему. Файлы из этого каталога должен изменять только администратор.

Помимо этого, есть еще две команды:

□ path = путь — полный путь к директории netlogon;

□ guest ok = yes — такую же директиву мы рассматривали в разд. 6.1. В данном случае она позволяет гостевой вход. Помимо этого, нужно убрать комментарии в секции [Profiles], которая выглядит следующим образом:

; [Profiles]

; path = /usr/local/samba/profiles

; browseable = no

; guest ok = yes

В этой директории хранятся профили пользователей, и она не должна быть видна в сетевом окружении Windows, поэтому директива browseable = no запрещает отображение.

 

6.2.3. Распечатка

Для того чтобы пользователям стали доступны принтеры, подключенные к Linux-серверу, нужно настроить следующую секцию:

[printers]

 comment = All Printers

 path = /var/spool/samba

 browseable = no

 guest ok = no

 writable = no

 printable = yes

Обратите внимание, что по умолчанию секция открыта, и зарегистрированные пользователи уже имеют доступ к принтерам. Если вы хотите, чтобы "гости" смогли использовать принтер, то добавьте строку public = yes. Я не рекомендую этого делать, потому что это предоставит пользователям лишнюю возможность для подшучивания. Например, в моей сети был случай, когда сотрудник рассылал через принтер разные картинки на все компьютеры. Вроде безобидно, а работу тормозит, и идет бесполезный расход картриджа.

 

6.2.4. Общий доступ

Чаще всего, на сервере необходима директория, через которую любой пользователь сможет обмениваться файлами с другими участниками сети. Для настройки такой папки используется секция [tmp]:

;[tmp]

; comment = Temporary file space

; path = /tmp

; read only = no

; public = yes

По умолчанию секция закрыта, и для разрешения доступа к ней необходимо убрать комментарии. Обратите внимание на путь к открытому каталогу. Это /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, универсальное именование объектов) с применением следующего синтаксиса:

\\ИмяСервера\ресурс

Например, вы хотите подключить домашнюю директорию пользователя flenov. Ее адрес будет \\192.168.1.1\flenov.

Но здесь надо сделать одно замечание — в Linux обратный слэш ("\") является служебным, поэтому каждый такой знак должен заменяться двумя символами. Так как в начале UNC-имени идет то они подменяются на четыре обратных слэша, и адрес, приведенный выше, должен выглядеть как \\\\192.168.1.1\\flenov.

Итак, для подключения к ресурсу выполняем команду:

smbclient \\\\192.168.1.1\\flenov

Если вы обращаетесь к ресурсу, который требует авторизации, то необходимо указать имя пользователя, обладающего правами:

smbclient \\\\192.168.1.1\\flenov -U flenov

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

Smb: \>

Чтобы узнать, какие команды доступны, введите директиву help или знак вопроса "?". Команды, которые вы увидите, очень похожи на FTP (более подробно с FTP мы познакомимся в гл. 10). Для отключения от ресурса необходимо выполнить команду exit.

Большинство дистрибутивов Linux включают стандартный Samba-пакет, и ничего больше. А ведь в Интернете есть сторонние разработки, которые позволяют монтировать открытые ресурсы в файловую систему Linux как дискету или CD-ROM или работать с общими ресурсами в графическом режиме, как это делается в Windows.