SAMBA - внедряемся в офисную сеть

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:49a350323efffb8a7bdf867c08d45374' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><img alt=\"Samba\" width=\"140\" height=\"67\" src=\"http://muff.kiev.ua/files/Samba-logo.png\" /></p>\n<p class=\"rtejustify\">Вот, в очередной раз необходимо предоставить виндовым&nbsp;админам доступ к файлам на сервере под управлением FreeBSD. Поскольку сервер находтся в одной локальной сети с остальными компьютерами, доступ решено организовать по протоколу SMB.&nbsp; Что не может не радовать, так это то, что по утверждениям ITLabs, в условиях многопользовательского доступа, скорость работы&nbsp;Samba&nbsp;в качестве файлового и принт-сервера более чем в два раза выше по сравнению с Windows Server 2003 с теми же ролями.</p>\n<p class=\"rtejustify\">В нашем случае нужна почти минимальная конфигурация: поддержка виндовых шар&nbsp;и разграничение прав доступа...</p>\n<p class=\"rtejustify\">Итак, начнем установку samba-сервера из портов (за актуальностью которых не забываем следить):</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p>#<strong> cd /usr/ports/net/samba3/</strong><br />\n # <strong>make install clean</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Рассмотрим доступные опции:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td class=\"rtecenter\">\n<p><strong>Options for samba 3.0.36,1</strong></p>\n<pre class=\"rteleft\">\n[ ] LDAP With LDAP support\n[ ] ADS With Active Directory support\n[ ] CUPS With CUPS printing support\n[ ] WINBIND With WinBIND support\n[X] ACL_SUPPORT With ACL support\n[ ] AIO_SUPPORT With Asyncronous IO support\n[X] FAM_SUPPORT With File Alteration Monitor\n[X] SYSLOG With Syslog support\n[X] QUOTAS With Disk quota support\n[ ] UTMP With UTMP accounting support\n[ ] PAM_SMBPASS With PAM authentication vs passdb backends\n[ ] CLUSTER With experimental cluster support\n[ ] DNSUPDATE With dynamic DNS update(require ADS)\n[ ] EXP_MODULES With experimental modules\n[X] POPT With system-wide POPT library\n[X] PCH With precompiled headers optimization\n[ ] MAX_DEBUG With maximum debugging\n[ ] SMBTORTURE With smbtorture</pre></td>\n</tr>\n</tbody>\n</table>\n<p><strong>LDAP </strong>- поддержка <a href=\"http://ru.wikipedia.org/wiki/LDAP\">LDAP</a>. Не использую. Отключаем.</p>\n<p><strong>ADS </strong>-поддержка <a href=\"http://ru.wikipedia.org/wiki/Active_Directory\">Active Directory</a>. Отключаем.</p>\n<p><strong>CUPS </strong>- поддержка сервера печати CUPS. Не интересно. Отключаем.</p>\n<p><strong>WINBIND </strong>- обьединение пользвателей Windows/Unix. Почитать можно <a href=\"http://admin.dn.ua/index.php/*nix/Ispolzovanie-uchetnyh-zapisey-Domena.html\">здесь</a>. Отключаем.</p>\n<p><strong>ACL_SUPPORT</strong> - поддержка <a href=\"http://ru.wikipedia.org/wiki/ACL\">Access Control List</a>. Очень даже нужная фича. Включаем.</p>\n<p><strong>AIO_SUPPORT</strong> - поддержка&nbsp; возможности асинхронного ввода-вывода. По дефолту оключено... И я включать не буду ;)</p>\n<p><strong>FAM_SUPPORT</strong> - API для мониторинга за состоянием файла или группы файлов/директорий. Возможно пригодится. Включаем.</p>\n<p><strong>SYSLOG </strong>- поддержка логирования syslog. Однозначно пригодится :). Включаем.</p>\n<p><strong>QUOTAS </strong>- поддержка квотирования. Поскольку диски не резиновые,&nbsp;а пользователи жадные до дискового пространства - включаем.</p>\n<p><strong>UTMP </strong>- включаем поддержку уникального идентификатора для каждого вновь подключенного пользователя. Поскольку понижает производительность - выключаем.</p>\n<p><strong>PAM_SMBPASS</strong> - поддержка синхронизации системных пользователей и пользователей samba. В нашем случае неактуально, поэтому оставляем выключеным.</p>\n<p><strong>DNSUPDATE </strong>- поддержка динамического обновления DNS. Поскольку данный вариант работает с поддержкой Active Directory, что нам не нужно, то оставляем отключенным.</p>\n<p><strong>EXP_MODULES </strong>- поддержка експериментальных модулей. А нам нужна стабильность в работе. Соответственно не включаем ;)</p>\n<p><strong>POPT </strong>- поддержка системной библиотеки анализа коммандной строки. Авось пригодится ;). Включаем.</p>\n<p><strong>PCH&nbsp;</strong>- предкомпиляционная оптимизация заголовков. Звучит заманчиво. Включаем.</p>\n<p><strong>MAX_DEBUG </strong>- включение режима максимальной отладки. На всякий случай включим.</p>\n<p><strong>SMBTORTURE </strong>- утилита для стресс-тестирования серверов. У&nbsp;нас и так стрессовых ситуаций достаточно, можно обойтись ;). Отключено.</p>\n<p>&nbsp;</p>\n<p>С&nbsp;опциями разобрались... Дождемся завершения установки и перечитаем пути.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>&nbsp;# <strong>rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Лезем &quot;копаться&quot; в конфиге. В результате нехитрых манипуляций конфигурационный файл приобретает следующий вид:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># cat /usr/local/etc/smb.conf</strong></p>\n<p>#======================= Global Settings =====================================<br />\n # В разделе global задаются все основные настройки (голбальные для сервера Samba)</p>\n<p>[global]</p>\n<p># Название рабочей групы. Должно совпадать с названием рабочей групы</p>\n<p>#&nbsp;на клиентских машинах.<br />\n workgroup = LOCALNET</p>\n<p>#&nbsp;Строка описания сервера. Высвечивается в сетевом окружении.&nbsp;<br />\n server string = FreeBSD Samba Server<br />\n # Тип входа. user - авторизация пользователей по логину и паролю. Те,&nbsp;кто</p>\n<p># хочет создать&nbsp;файлообменник,&nbsp; могут воспользоваться опцией share.</p>\n<p>security = user</p>\n<p># Список сетей, которым разрешено коннектиться к серверу.<br />\n hosts allow = 192.168.0. 127.</p>\n<p># Куда будут писаться логи, и в каком формате.<br />\n log file = /var/log/samba/log.%m</p>\n<p># Задаем максимальный размер лог-файла (в килобайтах). 10 мегабайт - для среднего сервера</p>\n<p># достаточно</p>\n<p>max log size = 10240</p>\n<p># Если несколько сетевых интерфейсов, указываем,&nbsp;на каких &quot;слушать&quot; запросы пользователей.</p>\n<p># Даже если интерфес только один,&nbsp;по привычке указываю. А вдруг что-то поменяется ;)<br />\n interfaces = 192.168.0.155/24</p>\n<p># Если уж есть samba-сервер, то сделаем его мастер-браузером для нашей сети.<br />\n local master = yes</p>\n<p># &quot;Крутость&quot; операционной системы. Учитывается при выборах мастер-браузера.<br />\n os level = 255</p>\n<p>#Дает дополнительный приоритет во время &quot;голосования&quot; и выборов мастер-браузера.</p>\n<p>preferred master = yes</p>\n<p>#============================ Share Definitions ==============================<br />\n #&nbsp;Здесь начинается описание расшареных ресурсов</p>\n<p># comment - комментарий к ресурсу</p>\n<p># path&nbsp;- путь к каталогу, который необходимо &quot;расшарить&quot;</p>\n<p># browseable&nbsp;- будет ли каталог виден в &quot;сетевом окружении&quot;,&nbsp;или будет скрытым</p>\n<p># writable&nbsp;- возможно ли записывать данные в этот сетевой ресурс</p>\n<p># valid users - список пользователей,&nbsp;которым разрешен доступ к данной шаре</p>\n<p># hosts allow - перечень IP, которым разрешен доступ к данной шаре</p>\n<p># guest ok - разрешаем гостевой доступ</p>\n<p>[winadmin]<br />\n &nbsp;&nbsp; comment = Share for admins<br />\n &nbsp;&nbsp; path = /var/samba/admin<br />\n &nbsp;&nbsp; browseable = yes<br />\n &nbsp;&nbsp; writable = yes<br />\n &nbsp;&nbsp; valid users = winadmin<br />\n &nbsp;&nbsp; hosts allow = 192.168.0.2<br />\n &nbsp;</p>\n<p>[share]<br />\n &nbsp;&nbsp; comment = Share for all&nbsp;users<br />\n &nbsp;&nbsp; path = /var/samba/share<br />\n &nbsp;&nbsp; browseable = yes<br />\n &nbsp;&nbsp; writable = yes<br />\n &nbsp;&nbsp; guest ok = yes</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Как видим,&nbsp;сам файл конфигурации пока минимален. Но мы потом это исправим в случае необходимости.</p>\n<p class=\"rtejustify\">Добавим поддержку загрузки стартового скрипта samba&nbsp;в /etc/rc.conf:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>echo \'### Samba-server\' &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo \'samba_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Далее добавим пользователя winadmin. samba имеет свою базу логинов и паролей. Работать с этой базой можно с помощью утилиты smbpasswd. Однако не стоит забывать про то, что для корректной работы в системе должен присутствовать точно такой же пользователь. Что ж, если должен, значит сделаем. Добавим системного пользователя winadmin, правда доступ к консоли ему давать не будем ;)</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># adduser</strong><br />\n Username: <strong>winadmin<br />\n </strong>Full name: <strong>Local administrators<br />\n </strong>Uid (Leave empty for default):<br />\n Login group [admin]: <strong>nobody<br />\n </strong>Login group is nobody. Invite admin into other groups? []:<br />\n Login class [default]: <strong>rusian<br />\n </strong>Shell (sh csh tcsh nologin) [sh]: <strong>nologin</strong><br />\n Home directory [/home/admin]:<br />\n Home directory permissions (Leave empty for default):<br />\n Use password-based authentication? [yes]: <strong>no</strong><br />\n Lock out the account after creation? [no]:<br />\n Username&nbsp;&nbsp; : winadmin<br />\n Password&nbsp;&nbsp; : &lt;disabled&gt;<br />\n Full Name&nbsp; : Local administrators<br />\n Uid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1003<br />\n Class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : rusian<br />\n Groups&nbsp;&nbsp;&nbsp;&nbsp; : nobody<br />\n Home&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /home/admin<br />\n Home Mode&nbsp; :<br />\n Shell&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /usr/sbin/nologin<br />\n Locked&nbsp;&nbsp;&nbsp;&nbsp; : no<br />\n OK? (yes/no): <strong>yes</strong><br />\n adduser: INFO: Successfully added (admin) to the user database.<br />\n Add another user? (yes/no): <strong>no</strong><br />\n Goodbye!</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Теперь воспользуемся утилитой smbpasswd, чтобы добавить пользователя samba:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>smbpasswd -a winadmin</strong><br />\n New SMB password:<br />\n Retype new SMB password:<br />\n startsmbfilepwent_internal: file /usr/local/etc/samba/smbpasswd did not exist. File successfully created.<br />\n Added user winadmin.</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Опция <strong>-а</strong> указывает на то, что пользователь в базе пользователей samba еще не существует, то есть указывает, что мы добавляем нового пользователя. В случае,&nbsp;если вам необходимо просто сменить пароль для пользователя, этот ключ опускаем.</p>\n<p class=\"rtejustify\">Как вы уже догадались, пароли samba и пароли системных пользователей хранятся в рахных хранилищах,&nbsp;соответственно могут отличатся (и я рекомендую использовать разные пароли). Из вывода видно,&nbsp;что пароли samba&nbsp;хранятся в файле /usr/local/etc/samba/smbpasswd.</p>\n<p class=\"rtejustify\">У меня еще не созданы папки шар. Нужно создать :). Кстати, samba бережно относится к правам доступа файлов. Доступ будет осуществлятся от имени авторизовавшегося пользователя. Соответственно&nbsp;выставляем необходимые права доступа:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>mkdir -p /var/samba/winadmin<br />\n </strong># <strong>mkdir /var/samba/share<br />\n </strong># <strong>chown winadmin:nobody /var/samba/winadmin/<br />\n </strong># <strong>chmod 777 /var/samba/share</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Пробуем запустить samba.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>sh /usr/local/etc/rc.d/samba start<br />\n </strong>Removing stale Samba tdb files:&nbsp; done<br />\n Starting nmbd.<br />\n Starting smbd.<br />\n # <strong>ps -ax | grep smb<br />\n </strong>97289&nbsp; ??&nbsp; Ss&nbsp;&nbsp;&nbsp;&nbsp; 0:00,01 /usr/local/sbin/nmbd -D -s /usr/local/etc/smb.conf<br />\n 97293&nbsp; ??&nbsp; Is&nbsp;&nbsp;&nbsp;&nbsp; 0:00,01 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf<br />\n 97294&nbsp; ??&nbsp; I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0:00,00 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf<br />\n &nbsp;</td>\n</tr>\n</tbody>\n</table>\n<p>Кажется все заработало... На всякий случай посмотрим, что делается&nbsp;в логах:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># tail - f /var/log/messages</p>\n<p>Sep&nbsp; 4 10:48:42 mail nmbd[97421]: [2009/09/04 10:48:42, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)<br />\n Sep&nbsp; 4 10:48:42 mail nmbd[97421]:&nbsp;&nbsp; *****<br />\n Sep&nbsp; 4 10:48:42 mail nmbd[97421]:<br />\n Sep&nbsp; 4 10:48:42 mail nmbd[97421]:&nbsp;&nbsp; Samba name server MAIL is now a local master browser for workgroup LOCALNET on subnet 192.168.0.155<br />\n Sep&nbsp; 4 10:48:42 mail nmbd[97421]:<br />\n Sep&nbsp; 4 10:48:42 mail nmbd[97421]:&nbsp;&nbsp; *****</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Отлично. Samba&nbsp;даже стала мастер-браузером для рабочей группы LOCALNET в подсети 192.168.0.0/24. После набора в командной строке адреса сервера (\\\\192.168.0.155), появилось окно запроса логина и пароля доступа к сетевому ресурсу. После ввода логина winadmin и заданого пароля, доступ был разрешен. Это уже неплохо :)</p>\n<p class=\"rtejustify\">Чтобы ознакомиться с полными возможностями samba, воспользуемся интерфейсом управления.</p>\n<p class=\"rtejustify\">Немного общей информации... SWAT (Samba Web Administration Tool) - программа, которая позволяет сконфигурировать сервер Samba через web-интерфейс изменяя таким образом конфигурационный файл smb.conf. SWAT является частью набора Samba, поэтому развивается параллельно и не использует устаревшие опции в smb.conf.</p>\n<p class=\"rtejustify\">SWAT запускается через суперсервер inetd. Чтобы разрешить запуск SWAT, необходимо в конфигурационном файле /etc/inetd.conf раскомментировать такую строку:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>swat&nbsp;&nbsp;&nbsp; stream&nbsp; tcp&nbsp;&nbsp;&nbsp;&nbsp; nowait/400&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/sbin/swat&nbsp;&nbsp;&nbsp; swat</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Добавляем в rc.conf поддержку inetd и запускаем службу:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># echo \'inetd_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf</strong><br />\n <strong># sh /etc/rc.d/inetd start<br />\n </strong>Starting inetd.</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Открываем любимый браузер и в строке адреса набиваем: <a href=\"http://ip_interface_samba-servera:901\">http://ip_interface_samba-servera:901</a>. В моем случае это <a href=\"http://192.168.0.155:901\">http://192.168.0.155:901</a>. В окне запроса логина и пароля вбиваем рутовый логин и пароль.</p>\n<p class=\"rtejustify\">Вуаля... Открывается сие чудо:</p>\n<p class=\"rtecenter\"><img alt=\"\" width=\"525\" height=\"300\" src=\"http://muff.kiev.ua/files/smb.JPG\" /></p>\n<p>&nbsp;</p>\n<p class=\"rtejustify\">Выставляем необходимые параметры, применяем. Потом в образовательных целях просматриваем конфигурационный файл, чтобы посмотреть на то, как изменения записываются в конфиг.</p>\n<p class=\"rtejustify\">Поле деятельности довольно широкое... Но дальше проблем возникать не должно. Более обширную информацию о samba можно получить, например, <a href=\"http://www.linux.org.ru/books/using-samba/ch01_01.html\">здесь</a>.</p>\n<p class=\"rtejustify\">На что еще стоит обратить пристальное внимание, так это на безопасность. Наведу несколько опций контроля доступа, которые могут пригодится:</p>\n<ul>\n<li class=\"rtejustify\"><strong>encrypt passwords</strong> - глобальная опция; принимает значение no&nbsp;или yes. Отвечает за возможность включения или отключения шифрования паролей при пересылке по сети.</li>\n<li class=\"rtejustify\"><strong>smb passwd file </strong>- глобальная опция; указывает пуль к файлу, в котором хранится список пользователей и паролей Samba (по умолчанию имеет значение /usr/local/etc/samba/smbpasswd).</li>\n<li class=\"rtejustify\"><strong>unix password sync </strong>- глобальная опция; указывает на необходимость синхронизации паролей Samba с системными паролями; принимает значение yes или no.</li>\n<li class=\"rtejustify\"><strong>null passwords</strong> - глобальная опция; разрешает вход пользователей с пустым паролем.</li>\n<li class=\"rtejustify\"><strong>update encrypted</strong> - глобальная опция; при установке значения в yes, указывает изменять файл с шифрованными паролями, в случае,&nbsp;когда пользователь входит в систему,&nbsp;указывая пароль в явном виде.</li>\n<li class=\"rtejustify\"><strong>invalid users</strong> - список пользователей, которым будет отказано в доступе к ресурсу</li>\n<li class=\"rtejustify\"><strong>path </strong>- опция,&nbsp;используемая при описании ресурсов;&nbsp;позваоляет задать системную директорию.</li>\n<li class=\"rtejustify\"><strong>comment</strong> - комментарий к общедоступному ресурсу.</li>\n<li class=\"rtejustify\"><strong>writable</strong> - определяет,&nbsp;доступен ли ресурс на запись.</li>\n<li class=\"rtejustify\"><strong>admin users </strong>- список пользователей, которые будут иметь доступ как пользователь root.</li>\n<li class=\"rtejustify\"><strong>valid users</strong> - список пользователей, имеющих доступ к ресурсу.</li>\n<li class=\"rtejustify\"><strong>read list</strong> - список пользователей,&nbsp;имеющих доступ только на чтение к ресурсу с правами на запись.</li>\n<li class=\"rtejustify\"><strong>write list</strong> - список пользователей,&nbsp;имеющих право чтения и записи в ресурсе,&nbsp;доступном только на чтение.</li>\n<li class=\"rtejustify\"><strong>browsable</strong> - определяет видимость ресурса для пользователей.</li>\n<li class=\"rtejustify\"><strong>guest ok</strong> - определяет,&nbsp;разрешен ли доступ гостевых пользователей.</li>\n<li class=\"rtejustify\"><strong>guest only </strong>- если установлено значение в yes, то доступ к ресурсу смогут получить только гостевые пользователи.</li>\n<li class=\"rtejustify\"><strong>username map</strong>&nbsp;- позволяет указать файл, в котором хранится список сопоставлений имен груп и пользователей системы FreeBSD с именами и группами Windows&nbsp;(пароли должны совпадать). Пример записи из файла: &quot;root = Admin Administrator&quot;&nbsp;</li>\n<p class=\"rtejustify\">&nbsp;</p>\n</ul>\n', created = 1767332986, expire = 1767419386, headers = '', serialized = 0 WHERE cid = '2:49a350323efffb8a7bdf867c08d45374' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767332986, expire = 1767419386, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767332986, expire = 1767419386, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Samba

Вот, в очередной раз необходимо предоставить виндовым админам доступ к файлам на сервере под управлением FreeBSD. Поскольку сервер находтся в одной локальной сети с остальными компьютерами, доступ решено организовать по протоколу SMB.  Что не может не радовать, так это то, что по утверждениям ITLabs, в условиях многопользовательского доступа, скорость работы Samba в качестве файлового и принт-сервера более чем в два раза выше по сравнению с Windows Server 2003 с теми же ролями.

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

Итак, начнем установку samba-сервера из портов (за актуальностью которых не забываем следить):

# cd /usr/ports/net/samba3/
# make install clean

Рассмотрим доступные опции:

Options for samba 3.0.36,1

[ ] LDAP         With LDAP support
[ ] ADS          With Active Directory support
[ ] CUPS         With CUPS printing support
[ ] WINBIND      With WinBIND support
[X] ACL_SUPPORT  With ACL support
[ ] AIO_SUPPORT  With Asyncronous IO support
[X] FAM_SUPPORT  With File Alteration Monitor
[X] SYSLOG       With Syslog support
[X] QUOTAS       With Disk quota support
[ ] UTMP         With UTMP accounting support
[ ] PAM_SMBPASS  With PAM authentication vs passdb backends
[ ] CLUSTER      With experimental cluster support
[ ] DNSUPDATE    With dynamic DNS update(require ADS)
[ ] EXP_MODULES  With experimental modules
[X] POPT         With system-wide POPT library
[X] PCH          With precompiled headers optimization
[ ] MAX_DEBUG    With maximum debugging
[ ] SMBTORTURE   With smbtorture

LDAP - поддержка LDAP. Не использую. Отключаем.

ADS -поддержка Active Directory. Отключаем.

CUPS - поддержка сервера печати CUPS. Не интересно. Отключаем.

WINBIND - обьединение пользвателей Windows/Unix. Почитать можно здесь. Отключаем.

ACL_SUPPORT - поддержка Access Control List. Очень даже нужная фича. Включаем.

AIO_SUPPORT - поддержка  возможности асинхронного ввода-вывода. По дефолту оключено... И я включать не буду ;)

FAM_SUPPORT - API для мониторинга за состоянием файла или группы файлов/директорий. Возможно пригодится. Включаем.

SYSLOG - поддержка логирования syslog. Однозначно пригодится :). Включаем.

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

UTMP - включаем поддержку уникального идентификатора для каждого вновь подключенного пользователя. Поскольку понижает производительность - выключаем.

PAM_SMBPASS - поддержка синхронизации системных пользователей и пользователей samba. В нашем случае неактуально, поэтому оставляем выключеным.

DNSUPDATE - поддержка динамического обновления DNS. Поскольку данный вариант работает с поддержкой Active Directory, что нам не нужно, то оставляем отключенным.

EXP_MODULES - поддержка експериментальных модулей. А нам нужна стабильность в работе. Соответственно не включаем ;)

POPT - поддержка системной библиотеки анализа коммандной строки. Авось пригодится ;). Включаем.

PCH - предкомпиляционная оптимизация заголовков. Звучит заманчиво. Включаем.

MAX_DEBUG - включение режима максимальной отладки. На всякий случай включим.

SMBTORTURE - утилита для стресс-тестирования серверов. У нас и так стрессовых ситуаций достаточно, можно обойтись ;). Отключено.

 

С опциями разобрались... Дождемся завершения установки и перечитаем пути.

 # rehash

 Лезем "копаться" в конфиге. В результате нехитрых манипуляций конфигурационный файл приобретает следующий вид:

# cat /usr/local/etc/smb.conf

#======================= Global Settings =====================================
# В разделе global задаются все основные настройки (голбальные для сервера Samba)

[global]

# Название рабочей групы. Должно совпадать с названием рабочей групы

# на клиентских машинах.
workgroup = LOCALNET

# Строка описания сервера. Высвечивается в сетевом окружении. 
server string = FreeBSD Samba Server
# Тип входа. user - авторизация пользователей по логину и паролю. Те, кто

# хочет создать файлообменник,  могут воспользоваться опцией share.

security = user

# Список сетей, которым разрешено коннектиться к серверу.
hosts allow = 192.168.0. 127.

# Куда будут писаться логи, и в каком формате.
log file = /var/log/samba/log.%m

# Задаем максимальный размер лог-файла (в килобайтах). 10 мегабайт - для среднего сервера

# достаточно

max log size = 10240

# Если несколько сетевых интерфейсов, указываем, на каких "слушать" запросы пользователей.

# Даже если интерфес только один, по привычке указываю. А вдруг что-то поменяется ;)
interfaces = 192.168.0.155/24

# Если уж есть samba-сервер, то сделаем его мастер-браузером для нашей сети.
local master = yes

# "Крутость" операционной системы. Учитывается при выборах мастер-браузера.
os level = 255

#Дает дополнительный приоритет во время "голосования" и выборов мастер-браузера.

preferred master = yes

#============================ Share Definitions ==============================
# Здесь начинается описание расшареных ресурсов

# comment - комментарий к ресурсу

# path - путь к каталогу, который необходимо "расшарить"

# browseable - будет ли каталог виден в "сетевом окружении", или будет скрытым

# writable - возможно ли записывать данные в этот сетевой ресурс

# valid users - список пользователей, которым разрешен доступ к данной шаре

# hosts allow - перечень IP, которым разрешен доступ к данной шаре

# guest ok - разрешаем гостевой доступ

[winadmin]
   comment = Share for admins
   path = /var/samba/admin
   browseable = yes
   writable = yes
   valid users = winadmin
   hosts allow = 192.168.0.2
 

[share]
   comment = Share for all users
   path = /var/samba/share
   browseable = yes
   writable = yes
   guest ok = yes

Как видим, сам файл конфигурации пока минимален. Но мы потом это исправим в случае необходимости.

Добавим поддержку загрузки стартового скрипта samba в /etc/rc.conf:

# echo '### Samba-server' >> /etc/rc.conf
# echo 'samba_enable="YES"' >> /etc/rc.conf

Далее добавим пользователя winadmin. samba имеет свою базу логинов и паролей. Работать с этой базой можно с помощью утилиты smbpasswd. Однако не стоит забывать про то, что для корректной работы в системе должен присутствовать точно такой же пользователь. Что ж, если должен, значит сделаем. Добавим системного пользователя winadmin, правда доступ к консоли ему давать не будем ;)

# adduser
Username: winadmin
Full name: Local administrators
Uid (Leave empty for default):
Login group [admin]: nobody
Login group is nobody. Invite admin into other groups? []:
Login class [default]: rusian
Shell (sh csh tcsh nologin) [sh]: nologin
Home directory [/home/admin]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]: no
Lock out the account after creation? [no]:
Username   : winadmin
Password   : <disabled>
Full Name  : Local administrators
Uid        : 1003
Class      : rusian
Groups     : nobody
Home       : /home/admin
Home Mode  :
Shell      : /usr/sbin/nologin
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (admin) to the user database.
Add another user? (yes/no): no
Goodbye!

Теперь воспользуемся утилитой smbpasswd, чтобы добавить пользователя samba:

# smbpasswd -a winadmin
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /usr/local/etc/samba/smbpasswd did not exist. File successfully created.
Added user winadmin.

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

Как вы уже догадались, пароли samba и пароли системных пользователей хранятся в рахных хранилищах, соответственно могут отличатся (и я рекомендую использовать разные пароли). Из вывода видно, что пароли samba хранятся в файле /usr/local/etc/samba/smbpasswd.

У меня еще не созданы папки шар. Нужно создать :). Кстати, samba бережно относится к правам доступа файлов. Доступ будет осуществлятся от имени авторизовавшегося пользователя. Соответственно выставляем необходимые права доступа:

# mkdir -p /var/samba/winadmin
# mkdir /var/samba/share
# chown winadmin:nobody /var/samba/winadmin/
# chmod 777 /var/samba/share

 Пробуем запустить samba.

# sh /usr/local/etc/rc.d/samba start
Removing stale Samba tdb files:  done
Starting nmbd.
Starting smbd.
# ps -ax | grep smb
97289  ??  Ss     0:00,01 /usr/local/sbin/nmbd -D -s /usr/local/etc/smb.conf
97293  ??  Is     0:00,01 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf
97294  ??  I      0:00,00 /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf
 

Кажется все заработало... На всякий случай посмотрим, что делается в логах:

# tail - f /var/log/messages

Sep  4 10:48:42 mail nmbd[97421]: [2009/09/04 10:48:42, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(396)
Sep  4 10:48:42 mail nmbd[97421]:   *****
Sep  4 10:48:42 mail nmbd[97421]:
Sep  4 10:48:42 mail nmbd[97421]:   Samba name server MAIL is now a local master browser for workgroup LOCALNET on subnet 192.168.0.155
Sep  4 10:48:42 mail nmbd[97421]:
Sep  4 10:48:42 mail nmbd[97421]:   *****

Отлично. Samba даже стала мастер-браузером для рабочей группы LOCALNET в подсети 192.168.0.0/24. После набора в командной строке адреса сервера (\\192.168.0.155), появилось окно запроса логина и пароля доступа к сетевому ресурсу. После ввода логина winadmin и заданого пароля, доступ был разрешен. Это уже неплохо :)

Чтобы ознакомиться с полными возможностями samba, воспользуемся интерфейсом управления.

Немного общей информации... SWAT (Samba Web Administration Tool) - программа, которая позволяет сконфигурировать сервер Samba через web-интерфейс изменяя таким образом конфигурационный файл smb.conf. SWAT является частью набора Samba, поэтому развивается параллельно и не использует устаревшие опции в smb.conf.

SWAT запускается через суперсервер inetd. Чтобы разрешить запуск SWAT, необходимо в конфигурационном файле /etc/inetd.conf раскомментировать такую строку:

swat    stream  tcp     nowait/400      root    /usr/local/sbin/swat    swat

 Добавляем в rc.conf поддержку inetd и запускаем службу:

# echo 'inetd_enable="YES"' >> /etc/rc.conf
# sh /etc/rc.d/inetd start
Starting inetd.

Открываем любимый браузер и в строке адреса набиваем: http://ip_interface_samba-servera:901. В моем случае это http://192.168.0.155:901. В окне запроса логина и пароля вбиваем рутовый логин и пароль.

Вуаля... Открывается сие чудо:

 

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

Поле деятельности довольно широкое... Но дальше проблем возникать не должно. Более обширную информацию о samba можно получить, например, здесь.

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

  • encrypt passwords - глобальная опция; принимает значение no или yes. Отвечает за возможность включения или отключения шифрования паролей при пересылке по сети.
  • smb passwd file - глобальная опция; указывает пуль к файлу, в котором хранится список пользователей и паролей Samba (по умолчанию имеет значение /usr/local/etc/samba/smbpasswd).
  • unix password sync - глобальная опция; указывает на необходимость синхронизации паролей Samba с системными паролями; принимает значение yes или no.
  • null passwords - глобальная опция; разрешает вход пользователей с пустым паролем.
  • update encrypted - глобальная опция; при установке значения в yes, указывает изменять файл с шифрованными паролями, в случае, когда пользователь входит в систему, указывая пароль в явном виде.
  • invalid users - список пользователей, которым будет отказано в доступе к ресурсу
  • path - опция, используемая при описании ресурсов; позваоляет задать системную директорию.
  • comment - комментарий к общедоступному ресурсу.
  • writable - определяет, доступен ли ресурс на запись.
  • admin users - список пользователей, которые будут иметь доступ как пользователь root.
  • valid users - список пользователей, имеющих доступ к ресурсу.
  • read list - список пользователей, имеющих доступ только на чтение к ресурсу с правами на запись.
  • write list - список пользователей, имеющих право чтения и записи в ресурсе, доступном только на чтение.
  • browsable - определяет видимость ресурса для пользователей.
  • guest ok - определяет, разрешен ли доступ гостевых пользователей.
  • guest only - если установлено значение в yes, то доступ к ресурсу смогут получить только гостевые пользователи.
  • username map - позволяет указать файл, в котором хранится список сопоставлений имен груп и пользователей системы FreeBSD с именами и группами Windows (пароли должны совпадать). Пример записи из файла: "root = Admin Administrator" 
  •  

Ваша оценка: Нет Средняя: 4.1 (9 голосов)

Вставай, Україно!

Литература

Не будь, чем диски форматируют.