Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
Скачать 3.69 Mb.
|
Глава 6 В стиле Samba Изначально для обмена файлами между компьютерами использовался прото- кол FTP (об этом мы подробно поговорим в главе 10). Но он неудобен, так как использует технологию "клиент-сервер". Чтобы вы могли получить с компьютера друга файл, он должен запустить у себя FTP-сервер, а вы с по- мощью специальной программы, называемой FTP-клиентом, должны под- ключиться к этому серверу и скачать нужный файл. Сложность заключается не только в необходимости установки и настройки различных программ, но и в контроле доступа. Чтобы не утруждать себя настройками FTP-сервера, многие стали использо- вать специализированные обменники в своих локальных сетях. Для этого вы- делялся FTP-сервер с открытым доступом, который быстро превращался в мусорную корзину. В Windows появился более удобный способ публиковать свои файлы — "Сетевое окружение", с помощью которого удаленный пользователь может зайти на любой компьютер и использовать его открытые ресурсы. Это дейст- вительно хорошая возможность, и пользователи привыкли к ней, несмотря на то , что работа с открытыми ресурсами была небезопасной. Чтобы пользователи Windows могли видеть сервер Linux в своем сетевом окружении и работать с ним как с Windows-машиной, был разработан пакет Samba (часто можно встретить сокращение smb), который состоит из двух программ . Сервер позволяет публиковать локальные папки для всеобщего просмотра , а с помощью клиента вы можете подключаться к другим компью- терам и работать с их открытыми ресурсами. С помощью Samba можно сделать легкодоступный и удобный в использова- нии файловый сервер. Раньше у меня на работе для этих целей использовался сервер Windows 2000, который параллельно работал как сервер баз данных. Глава 6 220 Но файловый архив занимает слишком много места, отнимает ресурсы сети и сервера, а также понижает безопасность. К тому же, использовать дорого- стоящую ОС Windows как файловое хранилище просто глупо. Поэтому было принято решение перенести файловый архив на отдельный физический сервер с бесплатной ОС. Использовать для этого 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. Дополнительно в этой же директории можно создать следующие файлы (не- которые из них могут существовать): smbusers — список пользователей, которым разрешено подключаться к серверу Samba; smbpasswd — пароли пользователей из файла smbusers; Как видите, у Samba свои конфигурационные файлы для хранения списка пользователей . Если вы создаете их вручную, то убедитесь, что права на чтение и запись установлены правильно. Файл должен быть доступен толь- ко администратору, то есть владельцем может быть только root и никто иной Конфигурационный файл smb.conf содержит не так много директив, поэто- му для удобства восприятия я привел в листинге 6.1 небольшой пример, который поможет вам увидеть общую структуру такого файла. В дальней- шем нам предстоит рассматривать другие серверы Linux, где настроек на- много больше. В стиле Samba 221 Листинг 6.1. Фрагмент конфигурационного файла smb.conf [global] # Основные директивы workgroup = MYGROUP server string = Samba Server ; hosts allow = 192.168.1. 192.168.2. 127. load printers = yes printing = lprng ; guest account = pcguest # Директивы журнала log file = /var/log/samba/%m.log max log size = 0 syslog only = no # Директивы безопасности security = user ; password server = ; password level = 8 ; username level = 8 encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd ; usershare max shares = 100 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* 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=8192 ; interfaces = 192.168.12.2/24 192.168.13.2/24 Глава 6 222 ; bind interfaces only = yes # Настройка просмотра ; 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 support = no wins server = w.x.y.z dns proxy = no name resolve order = lmhosts host wins bcast # Отображение файлов ; preserve case = no ; short preserve case = no ; default case = lower ; case sensitive = no Реальный файл в вашей системе будет намного больше, потому что он со- держит множество комментариев с описаниями и примерами конфигуриро- вания открытых директорий. Я все это удалил, чтобы вам проще было ориен- тироваться , когда мы будем рассматривать назначение команд. В большинстве конфигурационных файлов Linux и его программах для опи- сания директив используется формат: ИмяДирективы Значение Имя директивы в данном случае должно состоять из одного слова и не может содержать пробелы. После имени ставится пробел, за которым идет значение директивы В стиле Samba 223 В Samba-сервере используется несколько иной формат, приближенный к фай- лам настроек Windows: ИмяДирективы=Значение Значение директивы ставится после знака равенства. Таким образом, имя ди- рективы может состоять из нескольких слов, содержать пробелы и различные символы (кроме знака равенства). Строки, начинающиеся с точки с запятой ( ; ) или с диеза ( # ), рассматриваются как комментарии. 6.1.1. Основные настройки Конфигурационный файл разбит на секции. Самой первой идет [global] , в которой описываются глобальные настройки сервера. В ней можно увидеть следующие директивы: workgroup = имя — имя группы, в которую входит сервер. Когда в Win- dows вы входите в сетевое окружение, то можно увидеть все доступные ресурсы , разбитые на категории. В каждой группе могут быть свои ком- пьютеры или серверы; netbios name = имя — имя, которое пользователи будут видеть в сетевом окружении для данного сервера, оно не должно совпадать с именем рабо- чей группы; server string = описание — свободный текст, который можно будет увидеть в поле Description (Комментарий) свойств сервера или окне сете- вого окружения в режиме Details (Таблица). В этом поле вы можете по- местить комментарий, описывающий содержимое сервера, например, "Файловый архив Сергея"; hosts allow = адреса — перечисление (через пробел) IP-адресов или се- тей , которым разрешен доступ к Samba-серверу. Например, чтобы открыть доступ всем компьютерам сети 192.168.1.x и одному компьютеру с адре- сом 192.168.2.2 из другой сети надо написать следующую строку: 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 224 6.1.2. Безопасность В этом разделе мы рассмотрим директивы, которые напрямую или косвенно влияют на безопасность: guest account = имя — указывает учетную запись, с правами которой пользователь сможет входить в систему. Если ваш сервер не содержит секретной информации и используется для открытого обмена файлами, то можно завести гостевую учетную запись, иначе такой вход не безопасен; log file = файл — задает название файла-журнала, например, можно написать /var/log/samba/%m.log. Обратите внимание, что в имени присут- ствует символ процента, за которым следует буква m. Эта комбинация во время работы будет заменена именем пользователя, активность которого сохраняется . Так, например, для пользователя robert будет создан журнал /var/log/samba/robert.log; max log size = n — определяет максимальный размер журнала в кило- байтах . Укажите значение 0 , если ограничения не должно быть; syslog only — инструктирует использовать только syslog для журнали- рования ; security = уровень — определяет степень доступа. Параметр уровень может принимать одно из следующих значений: • user — доступ на уровне пользователя; • share — аутентификация на основе имени и пароля; • server — проверка пароля производится сторонним smb-сервером. Имя сервера, на котором хранятся пароли, задается с помощью дирек- тивы password server = ИмяСервера , что позволяет держать пароли на другом smb-сервере, который и будет осуществлять проверку пароля; • domain — включает сервер в домен Windows NT, а пароль для доступа указывается в файле, определенном с помощью директивы smb passwd file = ИмяФайла ; encrypt passwords = yes — позволяет шифровать пароли, передаваемые по сети. Данная опция требует пояснений, потому что могут возникнуть проблемы при авторизации с компьютеров с системой Windows. Суть в том, что Windows 95 вообще не шифровал пароли, и они передава- лись в открытом виде. Начиная с Windows 98 по умолчанию система стала шифровать пароли. Зашифрованный пароль передается по сети, и на сер- вере происходит дешифровка. Если система ожидает зашифрованного па- роля , а клиент посылает незашифрованный, то с соединением возникают серьезные проблемы. В стиле Samba 225 Современные версии Windows шифруют пароль, но вы можете отключить эту возможность. Для этого в реестре нужно изменить параметр EnablePlainTextPassword , установив в нем значение 1 . В Windows 9x этот параметр находится в реестре по адресу: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD\ VNETSUP Для Windows NT это: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\ Parameters В 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 . Для работы этой директивы нужно указать программы, которые будут изменять паро- Глава 6 226 ли (параметр 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); usershare max shares — максимальное количество пользовательских директорий , которые могут быть открыты для общего доступа; usershare allow guests = yes — если этот параметр включен, то гости системы смогут получить доступ к открытым ресурсам. По умолчанию этот параметр отключен, чтобы доступ к открытым ресурсам получали только авторизованные пользователи. 6.1.3. Сеть В этом разделе мы изучим директивы настройки сетевого протокола: include = файл — позволяет подключить дополнительный конфигураци- онный файл, например, с другого компьютера, или содержащий настройки для конкретного подключающегося компьютера. В последнем случае имя файла обычно задается в формате путь.%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 пользователям из какой-то конкретной или из обеих сетей; В стиле Samba 227 bind interfaces only — позволяет привязаться только к именованным интерфейсам или сетям, перечисленным в параметре interfaces . Если ваша сеть не защищена сетевым экраном, то настоятельно рекомендуется использовать этот параметр, чтобы доступ к серверу Samba имели только компьютеры из вашей сети, а не любой удаленный пользователь из Ин- тернета 6.1.4. Замена сервера Windows Если посмотреть на параметры, которые мы рассматриваем в этом разделе, можно увидеть, что 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 и DNS WINS (Windows Internet Naming Service, служба имен Интернет для Windows) — это сервис для сопоставления имен компьютеров и IP-адресов. База данных WINS чем-то напоминает DNS (Domain Name Service), только в ней хранятся NetBIOS-имена компьютеров, а DNS обслуживает доменные имена. Для настройки работы через WINS используются следующие директивы: wins support = yes — разрешить использование WINS-сервера; wins server = w.x.y.z — IP-адрес WINS-сервера; Глава 6 228 DNS Proxy = yes — если эта опция разрешена, то не распознанные Net- BIOS-имена можно попытаться определить через DNS-сервер; name resolve order — последовательность, в которой будет произво- диться поиск адреса хоста по его имени. В конфигурационном файле можно найти следующий пример: name resolve order = lmhosts host wins bcast Если использовать это значение, то при поиске адреса система сначала будет искать имя хоста в файле lmhosts, потом в hosts, потом будет задей- ствован wins, и последним будет использоваться bcast (broadcast или ши- роковещательный запрос). 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-адрес, а имя — это имя пользовате- ля , домашнюю директорию которого необходимо увидеть. В стиле Samba 229 Для того чтобы разрешить пользователям работать с собственными директо- риями , нужно описать раздел [homes] . Рассмотрим пример такой секции: [homes] comment = Home Directories browseable = no writable = yes valid users = %S ; %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 Глава 6 230 ; path = /usr/local/samba/lib/netlogon ; guest ok = yes ; writable = no В этой секции также присутствуют комментарий и директива writable Пользователи не должны иметь право записи в эту директорию, потому что здесь хранятся сценарии, которые выполняются при входе в систему. Файлы из этого каталога должен изменять только администратор. Помимо этого, есть еще две команды: path = путь — полный путь к директории netlogon; guest ok = yes — разрешение гостевого входа. Помимо этого, нужно убрать комментарии в секции [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 . Я не рекомендую этого делать, потому что это предоставит пользователям лиш- нюю возможность для подшучивания. Например, в моей сети был случай, когда сотрудник рассылал через принтер разные картинки на все принтеры с общим доступом. Вроде безобидно, а работу тормозит, и бесполезно расхо- дуется картридж. В стиле Samba 231 6.2.4. Общий доступ Чаще всего на сервере необходима директория, через которую любой поль- зователь сможет обмениваться файлами с другими участниками сети. Для настройки такой папки используется секция [tmp] : ;[tmp] ; comment = Temporary file space ; path = /tmp ; read only = no ; public = yes По умолчанию секция закрыта, и для разрешения доступа к ней необходимо убрать комментарии. Обратите внимание на путь к открытому каталогу. Это /tmp — каталог для хранения временных файлов пользователей. С помощью директив read only (значение no ) и public (значение yes ) мы указываем сер- веру Samba, что директория открытая, и в нее могут записывать файлы и чи- тать все пользователи. Несмотря на удобства, которые предоставляет этот каталог, я рекомендую использовать его только в закрытых сетях. Если у вас есть выход в Интернет, то с помощью сетевого экрана необходимо ограничить доступ к Samba. Так как в директорию могут писать любые пользователи, то злоумышленник мо- жет записать в нее свои файлы, которые помогут ему получить на сервере права администратора. 6.2.5. Личные директории Все разделы, которые мы рассматривали выше, имеют устоявшиеся имена и предназначены для решения определенных задач. Но в некоторых случаях вы можете изменить имя раздела, и на работе сервера это не скажется. Однако я не рекомендую этого делать, потому что в одной версии Samba все будет ра- ботать хорошо, а при обновлении программ сервера все может измениться, и потом трудно будет найти ошибку, из-за которой Samba работает неверно. Но вы можете создавать собственные разделы, в которых будете описывать права . Например, пусть вам нужно организовать общую директорию, в кото- рой файлы будут доступны всем пользователям, но записывать туда смогут только пользователи определенной группы. Допустим, что в этом каталоге должны храниться какие-то картинки. Для решения этой задачи можно соз- дать раздел [shareimages] следующим образом: [shareimages] comment = Share Images path = /home/samba/images Глава 6 232 public = yes writable = yes write list = @staff printable = no Для данного раздела задаются следующие директивы: path = /home/samba/images — директория, которую мы хотим открыть; public = yes — признак доступности; writable = yes — запись в каталог разрешена; write list = @staff — определяет группу staff , которая может записы- вать файлы. Для всех остальных директория открыта только для чтения. В таких объявлениях директорий можно использовать любые директивы, ко- торые мы рассматривали в данной главе. 6.2.6. CD-ROM Отдельным разделом в файле конфигурации идут настройки прав доступа к CD-ROM. Пример этих настроек показан ниже: ;[cdrom] ; comment = Samba server's CD-ROM ; read only = yes ; path = /cdrom ; guest ok = yes Обратите внимание, что в начале каждой строки стоит символ точки с запя- той . Я не случайно оставил их на месте, чтобы указать, что по умолчанию они есть (по крайней мере у меня). Если у вас их нет, то срочно подумайте о том, чтобы проштудировать всю систему очень подробно, мало ли что еще ваш производитель разрешил по умолчанию. Итак , все отключено, а значит компакт-диск не будет виден по сети. Если нужно открыть к нему доступ, настройте следующие параметры: comment = Samba server's CD-ROM — комментарий; read only = yes — файлы доступны только для чтения; path = /cdrom — путь к диску. Если у вас два и более дисков, нужно ука- зать , какой из них вы хотите расшарить, если же только один, то все равно нужно указать путь, куда он смонтирован; guest ok = yes — разрешить ли доступ к диску для гостей (неавторизо- ванных в системе пользователей). В стиле Samba 233 6.3. Управление пользователями Для начала разберемся с именами пользователей. По умолчанию для доступа к серверу Samba используются имена из системного файла /etc/passwd. Но вы можете завести отдельные записи Samba-сервера, которые будут соответст- вовать реальным, но их можно будет использовать только для подключения к Samba, а не к системе. Имена Samba описываются в файле /etc/samba/smbusers, расположение и название которого могут быть изменены директивой username map файла smb.conf. Содержимое файла /etc/samba/smbusers может быть, например, таким : # 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:813D6593C11F1173ED98178CA975D79:[UX ]:LCT-41FA818F robert:500:813D6593C11F1173ED98178CA975D79:[UX ]:LCT-41FA818F Сразу видно, что файл чем-то похож на /etc/passwd. Он также разделен двое- точиями на несколько колонок. Наиболее интересны из них первые три — имя пользователя, его UID в системе Linux и пароль. Глава 6 234 Но добавлять пользователей вручную не очень удобно, потому что нужно зашифровать и прописать пароль, что не так уж и просто. Чтобы облегчить задачу , в пакет Samba включена утилита smbpasswd , которая принимает сле- дующие параметры: -a — добавить пользователя в систему. Учетная запись должна уже суще- ствовать в /etc/passwd. Например, давайте пропишем Роберта, с которым мы уже не раз работали: smbpasswd –a robert В ответ на это программа попросит вас дважды ввести пароль. Указанная вами комбинация никак не влияет на системный пароль и используется только для доступа к Samba. Таким образом, пароли могут отличаться. Я даже рекомендую сделать их различными. ОС Windows умеет запоми- нать пароли и хранить в своей системе, и версии Windows 9x делают это небезопасным способом. Если злоумышленник сможет украсть пароль на Samba, то он проникнет и в систему; -x — удалить пользователя. Чтобы исключить Роберта из системы, вы- полните команду smbpasswd –x robert ; -d — деактивировать пользователя. Если необходимо временно отклю- чить доступ для пользователя, не удаляя его из системы, выполните команду smbpasswd –d robert . Давайте посмотрим на строку, соответст- вующую Роберту, после выполнения этой команды: robert:500:813D6593C11F1173ED98178CA975D79:[DUX ]:LCT-41FA818F Обратите внимание, что в четвертой колонке в квадратных скобках поя- вилась буква D. Она как раз и указывает на то, что запись деактивирована. Таким образом вы легко можете определить, какие записи активны, а ка- кие нет; -e — активировать пользователя. С помощью этой команды можно под- ключить деактивированного ранее пользователя: smbpasswd –e robert Дополнительные параметры этой утилиты можно посмотреть, используя справочную систему man. Напоминаю , что файл /etc/samba/smbpasswd используется, если пароли пере- даются по сети в зашифрованном виде. В этом случае, чтобы предоставить доступ к Samba всем пользователям системы, необходимо для каждого вы- полнить команду smdpasswd . Есть сценарии, которые автоматизируют работу, но их использование не очень эффективно, потому что они не задают пароля и , чаще всего, перетаскивают всех пользователей, даже тех, кто не должен иметь доступа в систему. К таким пользователям относятся системные учет- ные записи типа bin, adm, deamon и др. В стиле Samba 235 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). Это значит, что таких каталогов не будет видно. Это вполне логично, потому что зло- умышленнику нельзя давать возможность лицезреть имена директорий, осо- бенно если они соответствуют именам пользователей или содержат конфи- денциальные данные. Никогда не изменяйте этот параметр, чтобы хакер не знал , что он должен сломать. Глава 6 236 Для подключения к открытому ресурсу сервера нужно подать команду 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, см. также Приложение 1). Для отключения от ресурса необходимо выполнить команду exit Большинство дистрибутивов Linux включают стандартный пакет Samba и ничего больше. А ведь в Интернете есть сторонние разработки, которые позволяют монтировать открытые в Samba ресурсы в файловую систему Linux так же, как дискету или CD-ROM, или работать с общими ресурсами в графическом режиме, как это делается в Windows. Однако имейте в виду, что это не всегда безопасно. 6.5. Развитие Samba Хотя Samba имеет давнюю историю и вполне устойчивый код, он продолжа- ет развиваться. Во время написания этой книги последняя стабильная версия программы имеет номер 3.5. Все версии начиная с 3.0 имеют возможность В стиле Samba 237 подключаться к домену Active Directory, то есть к службе каталогов, продви- гаемой и развиваемой фирмой Microsoft со времени выпуска Windows 2000 Server. Однако в качестве контроллера домена Active Directory сервер Samba пока выступать не может. В настоящее время разрабатывается версия 4.0 сервера Samba, которая будет лишена этого недостатка, и тогда можно будет полностью доверить Linux серверную часть сети, клиентские компьютеры которой работают под Windows. Текущее состояние разработки Samba можно узнать на сайте проекта www.samba.org. |