Главная > Операционные системы > UNIX > Linux
Linux Samba серверКраткий обзорКрупные организации часто используют много разных операционных систем, и им нужно объединять их в сеть для совместного использования файлов и принтеров. Работники могут работать на рабочих станциях Linux, Microsoft Windows 95/98/NT, OS/2 или Novel и им необходим доступ к серверам для повседневной работы. Linux сервер с поддержкой Samba может быть использован для этих целей. Samba это надежный сетевой сервис для организации совместного использования файлов и принтеров, который работает на большинстве операционных систем доступных сегодня. Когда он хорошо настроен администратором, это более быстрый и безопасный файловый сервис, чем "родная" реализация на машинах Microsoft Windows. Как описано в файле README для Samba: Samba - это протокол, при помощи которого на большинстве PC-машинах
совместно используются файлы, принтеры и другая информация, такая как списки
доступных файлов и принтеров. Встроенную поддержку этого протокола имеют
Windows 95/98/NT, OS/2 и Linux, а с помощью дополнительного пакета DOS,
Windows, VMS, Unix всех других видов, MVS и многие другие. Apple Macs и
некоторые Веб Броузеры также понимают его. Альтернативу SMB составляют
Netware, NFS, AppleTalk, Banyan Vines, Decnet и др.; многие из них имеют
большие возможности, но ни один не имеет общедоступной спецификации и широкой
реализации на настольных машинах. Программное обеспечение Samba включает
SMB сервер, предоставляющий файловый и принтерный сервис в стиле Windows
NT и LAN Manager SMB клиентам (Windows 95, Warp Server, smbfs и др), NetBIOS
(rfc1001/1002) сервер имен, который среди многих других вещей, дает возможность
ftp-подобного просмотра ресурсов (дисков и принтеров) из Unix, Netware
и других ОС, и расширение tar для клиентов для резервного копирования PC.
Эти инструкции предполагают.
Пакеты.
Тарболы.
После инсталляции:
Для получения списка установленных файлов:
Раскройте тарбол:
КонфигурированиеПерейдите в каталог Samba, а затем в подкаталог "source".Шаг 1 Редактируйте файл smbsh.in (vi +3 smbwrapper/smbsh.in) и измените строку: SMBW_LIBDIR=${SMBW_LIBDIR-@builddir@/smbwrapper}
Это изменит месторасположение каталога "lib" Samba под каталог "/usr/bin".
Редактируйте файл Makefile.in (vi +28 Makefile.in) и измените строки: SBINDIR = @bindir@
VARDIR = @localstadir@
Эти изменения определяет каталог "/usr/sbin" для двоичных файлов Samba,
и каталог "/var" для файлов регистраций Samba ("/var/log/samba").
Редактируйте файл convert_smbpasswd (vi +10 script/convert_smbpasswd) и измените строку: nawk 'BEGIN {FS=":"}
Это изменение определит использование версии GNU Linux утилиты обработки
текста awk, основанной на Bell Labs research версии программы awk для программы
"smbpasswd".
Редактируйте файл smbmount.c file (vi +98 client/smbmount.c) и измените строку: static void close_our_files(int client_fd) { int i; for (i = 0; i < 256; i++) { if (i == client_fd) continue; close(i); }на: static void close_our_files(int client_fd) { struct rlimit limits; int i; getrlimit(RLIMIT_NOFILE,&limits); for (i = 0; i < limits.rlim_max; i++) { if (i == client_fd) continue; close(i); }Этот шаг сделает файл smbmount.c совместимым с библиотекой Red Hat's glibc 2.1. Компиляция и оптимизацияШаг 1Введите следующие команды на вашем терминале:
ЗАМЕЧАНИЕ Опция "--with-mmap" может улучшить производительность на некоторых машинах, на других ничего не изменится, ну а на третьих она может упасть. Эти опции говорят Samba:
Сейчас мы должны инсталлировать Samba на нашем Linux сервере:
Команда "install" инсталлирует скрипт "mksmbpasswd.sh" в каталог "/usr/bin/". Этот скрипт нужен, чтобы пользователи Samba могли подключаться к серверу, используя файл "smbpasswd". О том как использовать пароли Samba читайте дальше в этой книге. Команда "rm" удалит каталог "/usr/share/swat" и все файлы в нем, также
она удалит исполняемый файл "swat" из каталога "/usr/sbin/". SWAT - это
конфигурационная утилита имеющая веб интерфейс, которая позволяет настраивать
файл "smb.conf" из веб броузера. Она может открыть брешь в безопасности
вашего сервера, поэтому я рекомендую удалить ее. Команда "mkdir" создаст
каталог "/var/spool/samba/", который используется при печати на принтере.
Конечно, он необходим, если вы планируете использовать Samba для предоставление
принтера в совместное использование. Так как мы не настраиваем наш сервер
Samba на предоставление сервиса печати, нам не нужен этот каталог ("/var/spool/samba/"),
и соответственно нет необходимости в команде "chmod", устанавливающей "sticky"
бит в "/var/spool/samba", чтобы только владелец файла мог удалить его из
каталога.
Команды "rm" будет удалять все файлы с исходными кодами, которые мы использовали при компиляции и инсталляции Samba. Также будет удален сжатый архив Samba из каталога "/var/tmp". Конфигурации.Конфигурационный файл для разных сервисов очень специфичен и сильно зависит от того, что вам нужно. Некоторые хотят инсталлировать сервер Samba, рассчитывая на одно клиентское соединение, а некоторые на тысячу. Все программное обеспечение, описанное в книге, имеет определенный каталог и подкаталог в архиве "floppy.tgz", включающей все конфигурационные файлы для всех программ. Если вы скачаете этот файл, то вам не нужно будет вручную воспроизводить файлы из книги, чтобы создать свои файлы конфигурации. Скопируйте файлы связанные с Samba из архива, измените их под свои требования и поместите в нужное место так, как это описано ниже. Файл с конфигурациями вы можете скачать с адреса: http://www.openna.com/books/floppy.tgzДля запуска веб сервера Apache следующие файлы должны быть созданы или скопированы на ваш сервер. Копируйте файлы smb.conf и lmhosts в каталог "/etc/".
Вы можете взять эти файлы из нашего архива floppy.tgz. Конфигурационный файл "/etc/smb.conf"Файл "/etc/smb.conf" - это основной конфигурационный файл сервера Samba, в котором вы можете определить каталоги к которым предоставляете доступ, с каких IP адресов разрешен доступ и пр. Первые несколько строк в секции [global] содержат глобальные конфигурационные директивы, которые являются общими для всех разделяемых ресурсов (пока они не переписаны в конкретных секциях для каждого ресурса), далее идут секции, отвечающие за конкретные ресурсы. Существует множество опций, и нужно обязательно прочитать документацию, поставляемую вместе с Samba, чтобы получить информацию о каждой из них.Следующий пример представляет из себя минимальную рабочую конфигурацию для Samba с поддержкой шифрованных паролей. Также, замечу, что мы прокомментируем только те параметры, которые связаны с безопасностью и оптимизацией, а остальные оставим для вашего собственного изучения. В нашем примере, мы создаем только один каталог, "[tmp]", и позволяем доступ только машинам с IP адресами диапазона класса C. Также мы не используем сервис печати. Редактируйте файл smb.conf (vi /etc/smb.conf) и добавьте/измените следующие параметры: [global] workgroup = OPENNA server string = R&D of Open Network Architecture Samba Server encrypt passwords = True security = user smb passwd file = /etc/smbpasswd log file = /var/log/samba/log.%m socket options = IPTOS_LOWDELAY TCP_NODELAY domain master = Yes local master = Yes preferred master = Yes os level = 65 dns proxy = No name resolve order = lmhosts host bcast bind interfaces only = True interfaces = eth0 192.168.1.1 hosts deny = ALL hosts allow = 192.168.1.4 127.0.0.1 debug level = 1 create mask = 0644 directory mask = 0755 level2 oplocks = True read raw = no write cache size = 262144 [homes] comment = Home Directories browseable = no read only = no invalid users = root bin daemon nobody named sys tty disk mem kmem users [tmp] comment = Temporary File Space path = /tmp read only = No valid users = admin invalid users = root bin daemon nobody named sys tty disk mem kmem usersЭта опции говорят Samba следующее: [global] workgroup = OPENNA
server string = R&D of Open Network Architecture Samba Server
encrypt passwords = True
security = user
smb passwd file = /etc/smbpasswd
log file = /var/log/samba/log.%m
socket options = IPTOS_LOWDELAY TCP_NODELAY
domain master = Yes
local master = Yes
preferred master = Yes
os level = 65
dns proxy = No
name resolve order = lmhosts host bcast
bind interfaces only = True
interfaces = eth0 192.168.1.1
hosts deny = ALL
hosts allow = 192.168.1.4 127.0.0.1
debug level = 1
create mask = 0644
directory mask = 0755
level2 oplocks = True
read raw = no
write cache size = 262144
comment = Temporary File Space
path = /tmp
read only = No
valid users = admin
invalid users = root bin daemon nobody named sys tty disk mem kmem
users
Конфигурация файла "/etc/lmhosts"Настроим файл "/etc/lmhosts". Он содержит соответствия между Samba Net BIOS именами и IP адресами. По формату, этот файл, подобен "/etc/hosts", за исключением того, что компоненты имени хоста соответствуют формату имен Net BIOS.Создадим файл lmhosts (touch /etc/lmhosts) и внесем в него клиентские компьютеры: # Пример Samba файла lmhosts. # 127.0.0.1 localhost 192.168.1.1 deep 192.168.1.4 winВ нашем примере, lmhots содержит три соответствия между IP и Net BIOS именами. localhost (127.0.0.1), клиент с именем deep (192.168.1.1) и клиент с именем win (192.168.1.4). Конфигурация файла "/etc/pam.d/samba"Настроим файл "/etc/pam.d/samba" для использования pam аутентификации. Создайте файл samba (touch /etc/pam.d/samba) и добавьте в него следующие строки:Auth required /lib/security/pam_pwdb.so nullok shadow Account required /lib/security/pam_pwdb.so Конфигурация файла "/etc/logrotate.d/samba"Сконфигурируем файл "/etc/logrotate.d/samba" на автоматическую еженедельную ротацию ваших файлов регистрации.Создайте файл samba (touch /etc/logrotate.d/samba) и добавьте в него следующие строки: /var/log/samba/log.nmb { notifempty missingok postrotate /usr/bin/killall -HUP nmbd endrotate } /var/log/samba/log.smb { notifempty missingok postrotate /usr/bin/killall -HUP smbd endrotate } Создание файла с шифрованными паролями SambaВ файле "/etc/smbpasswd" хранятся шифрованные пароли Samba. Он хранит имя пользователя; Unix UID, хешированный пароль SMB, информационный флаг учетной записи и время последнего изменения пароля. Важно создать этот файл с паролями и включить в него всех пользователей до того, как они будут подключаться к вашему серверу Samba. Без этого никто не сможет подключиться к нему.Шаг 1 Для создания учетной записи Samba, вы должны, для начала, завести пользователя
Linux. Поэтому, вначале, создайте в файле "/etc/passwd" всех пользователей,
которые должны подключаться к серверу Samba. Добавьте нового пользователя
в файл "/etc/passwd" используя следующую команду:
Определите пароль для него используя команду:
Шаг 2 После того, как вы внесли всех пользователей в файл "/etc/passwd", вы
можете создать файл "smbpasswd", используя "/etc/passwd". Для этого введите
следующую команду:
Шаг 3 В заключении, на последнем шаге, мы должны создать бюджет пользователя
в нашем файле "/etc/smbpasswd".
Шаг 4 Не забудьте изменить права доступа к вашему новому файлу "smbpasswd"
на чтение-запись только для пользователя "root' (0600/-rw-------). Это
делается из соображения безопасности.
ЗАМЕЧАНИЕ. Смотрите файл ENCRYPTION.txt, находящийся в дистрибутиве Samba в каталоге /doc/texts/ для большей информации. Конфигурация скрипта "/etc/rc.d/init.d/smb"Настроим скрипт "/etc/rc.d/init.d/smb", который отвечает за запуск и остановку демонов Samba smbd и nmbd.Создайте скрипт smb (touch /etc/rc.d/init.d/smb) и добавьте в него следующие строки: #!/bin/sh # # chkconfig: - 91 35 # описание: запуск и остановка демонов Samba smbd и nmbd \ # используемых для предоставления сетевого сервиса SMB. # Библиотека исходных функций. . /etc/rc.d/init.d/functions # Исходная сетевая конфигурация. . /etc/sysconfig/network # Проверки наличия сети. [ ${NETWORKING} = "no" ] && exit 0 # Проверка наличия файла smb.conf. [ -f /etc/smb.conf ] || exit 0 RETVAL=0 # See how we were called. case "$1" in start) echo -n "Starting SMB services: " daemon smbd -D RETVAL=$? echo echo -n "Starting NMB services: " daemon nmbd -D RETVAL2=$? echo [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/smb || \ RETVAL=1 ;; stop) echo -n "Shutting down SMB services: " killproc smbd RETVAL=$? echo echo -n "Shutting down NMB services: " killproc nmbd RETVAL2=$? [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/smb echo "" ;; restart) $0 stop $0 start RETVAL=$? ;; reload) echo -n "Reloading smb.conf file: " killproc -HUP smbd RETVAL=$? echo ;; status) status smbd status nmbd RETVAL=$? ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVALСейчас, мы должны сделать этот скрипт исполняемым и изменить права доступа к нему: [root@deep /]# chmod 700 /etc/rc.d/init.d/smb Создадим символическую rc.d ссылку для Samba:
Скрипт Samba не будет автоматически стартовать демоны smbd и nmbd, когда
система перезагружена. Чтобы изменить это, выполните следующую команду:
Запустите сервер Samba вручную: [root@deep /]# /etc/rc.d/init.d/smb start Starting SMB services: [ OK ] Starting NMB services: [ OK ] Организация защиты SambaИммунизация важных конфигурационных файловБит "постоянства" используется для предотвращения случайного удаления
или переписывания файлов, которые защищаются. Он также не дает создавать
символические ссылки к этим файлам. Так как файлы "smb.conf" и "lmhosts"
уже настроены, хорошей идеей будет иммунизировать их:
Оптимизация SambaУстановка параметра "wide links=" в конфигурационном файле SambaБольшой ошибкой будет установить параметр "wide links" в "no" в конфигурационном
файле Samba "/etc/smb.conf". Эта опция, если установлена в "no", говорит
Samba не следовать по символическим ссылкам вне экспортируемой области.
Чтобы определить находится ли ссылка вне области, Samba следует по символической
ссылке, а затем выполняет "directory path lookup", чтобы определить, где
на файловой системе символическая ссылка завершилась. Эта операция добавляет
шесть дополнительных системных вызовов на каждый файловый lookup, а Samba
просматривает имена файлов очень много раз. Тесты, которые были опубликованы,
показали, что установка этого параметра снижает производительность Samba
сервера на 25-30 процентов.
Модификация параметров, влияющих на настройку кэша файловой системы, может значительно улучшить производительность файлового сервера Linux. Linux будет пытаться использовать память, не используемую для других целей, для кэширования файловой системы. Специальный демон, называемый "bdflush", будет периодически сбрасывать на диск содержимое "грязных" буферов (буфер, который содержит модифицированные данные файловой системы или метаданные). Секрет хорошей производительности - это сохранение в памяти так много данных, как это возможно. Запись на диск является самой медленной операцией при работе с любой файловой системой. Как и с большинством настраиваемых параметров ядра, вы можете изменять эти опции на лету, при помощи специальных файлов "/proc". Параметры по умолчанию для "bdflush" под Red Hat Linux:
Чтобы изменить значения bdflush введите следующие команды на вашем терминале:
Вы должны добавить вышеприведенную команду в скрипт "/etc/rc.d/rc.local", чтобы она выполнялась при каждой загрузке компьютера автоматически. Под Red Hat Linux 6.2
Вы должны перезагрузить сетевые настройки, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/network restart Setting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]Эта строка говорит "bdflush" не беспокоиться о записи грязных блоков на диск пока кэш буферов файловой системы не заполниться на 80 процентов. Другое значение определяют максимальное количество грязных буферов, которое может быть записано за одну операцию (500), как долго разрешается грязному буферу существовать (60*HZ) и т.д. Полное описание всех параметров вы можете найти в документации, поставляемой вместе с ядром 2.2, в файле "linux/Documentation/sysctl/vm.txt", и также, вы можете прочитать главу 4, "Общая системная оптимизация" этой книги. Настройка buffermem Другая полезная настройка должна сообщить Linux следующее: использовать минимум 60 процентов памяти для кэширования буферов; сокращать только когда процент используемой памяти для кэша буферов преодолеет 10 процентов (этот параметр сейчас не используется); и позволять расти до 60 процентов всей памяти (этот параметр сейчас не используется). По умолчанию значения установленные для "buffermem" в Red Hat Linux
равны:
Чтобы изменить значения buffermem введите следующую команду на вашем
терминале:
Вы должны добавить вышеприведенную команду в скрипт "/etc/rc.d/rc.local", чтобы она выполнялась при каждой загрузке компьютера автоматически. Полное описание всех параметров вы можете найти в документации, поставляемой вместе с ядром 2.2, в файле "linux/Documentation/sysctl/vm.txt", и также, вы можете прочитать главу 4, "Общая системная оптимизация" этой книги. Под Red Hat Linux 6.2
Вы должны перезагрузить сетевые настройки, чтобы изменения вступили в силу: [root@deep /]# /etc/rc.d/init.d/network restart Setting network parameters [ OK ] Bringing up interface lo [ OK ] Bringing up interface eth0 [ OK ] Bringing up interface eth1 [ OK ]Напоминаем, что последние два параметра (10 и 60) сейчас не используются, поэтому мы не будем их изменять. Дополнительная документацияДля получения большей информации вы можете прочитать следующие страницы руководства:$ man Samba (7) - Файл сервер Windows SMB/CIFS для UNIX
Административные утилиты SambaКоманды описанные ниже, мы будем часто использовать, но на самом деле их много больше, и вы должны изучить страницы руководства (man) и документацию, чтобы получить более подробную информацию.smbstatus Утилита smbstatus это очень простая программа, показывающая текущие соединения Samba: [root@deep /]# smbstatus Samba version 2.0.7 Service uid gid pid machine ---------------------------------------------- tmp webmaster webmaster 3995 gate (192.168.1.3) Sat Sep 25 19:40:54 1999 No locked files Share mode memory usage (bytes): 1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total Утилиты пользователя SambaКоманды описанные ниже, мы будем часто использовать, но на самом деле их много больше, и вы должны изучить страницы руководства (man) и документацию, чтобы получить более подробную информацию.smbclient Утилита "smbclient" работает подобно ftp программам, но для Samba. Эта небольшая программа позволяет вам забирать файлы с сервера на локальную машину, перекладывать файлы с локальной машины на сервер, передавать информацию о каталогах с сервера и пр. Для соединения с Windows машиной при помощи утилиты smbclient, используйте команду: [root@deep /]# smbclient //sbmserver/sharename -U smbclient [root@deep /]# smbclient //gate/tmp -U smbclient Password: Domain=[OPENNA] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0] smb: \> ls . D 0 Tue Mar 14 15:31:50 2000 .. D 0 Tue Mar 14 15:31:50 2000 PostgreSQL D 0 Tue Mar 14 15:32:22 2000 Squid D 0 Tue Mar 14 15:32:28 2000 Imap D 0 Tue Mar 14 15:32:38 2000 E_comm D 0 Tue Mar 14 15:32:42 2000 StackGuard.pdf A 61440 Tue Dec 21 20:41:34 1999 installation-without-XFree86 A 448 Tue Dec 21 20:41:28 1999 lcap-0_0_3-2_src.rpm A 13481 Thu Jan 13 01:50:12 2000 mirc561t.exe A 948224 Tue Dec 21 20:41:54 1999 65510 blocks of size 32768. 5295 blocks available smb: \>где "//sbmserver" это имя сервера, к которому вы хотите подключиться. "/sharename" - каталог на этом сервере, а "smbclient" - это имя пользователя, под которым вы подключаетесь к серверу. Инсталлированные файлы> /etc/rc.d/init.d/smb > /etc/rc.d/rc0.d/K35smb > /etc/rc.d/rc1.d/K35smb > /etc/rc.d/rc2.d/K35smb > /etc/rc.d/rc3.d/S91smb > /etc/rc.d/rc4.d/S91smb > /etc/rc.d/rc5.d/S91smb > /etc/rc.d/rc6.d/K35smb > /etc/pam.d/samba > /etc/logrotate.d/samba > /etc/codepages > /etc/codepages/codepage.437 > /etc/codepages/unicode_map.437 > /etc/codepages/codepage.737 > /etc/codepages/unicode_map.737 > /etc/codepages/codepage.775 > /etc/codepages/codepage.850 > /etc/codepages/unicode_map.850 > /etc/codepages/codepage.852 > /etc/codepages/unicode_map.852 > /etc/codepages/codepage.861 > /etc/codepages/unicode_map.861 > /etc/codepages/codepage.932 > /etc/gshadow- > /usr/bin/smbclient > /usr/bin/smbspool > /usr/bin/testparm > /usr/bin/testprns > /usr/bin/smbstatus > /usr/bin/rpcclient > /usr/bin/smbpasswd > /usr/bin/make_smbcodepage > /usr/bin/make_unicodemap > /usr/bin/nmblookup > /usr/bin/make_printerdef > /usr/bin/smbtar > /usr/bin/addtosmbpass > /usr/bin/convert_smbpasswd > /usr/bin/mksmbpasswd.sh > /usr/man/man1/make_smbcodepage.1 > /usr/man/man1/make_unicodemap.1 > /usr/man/man1/nmblookup.1 > /usr/man/man1/smbclient.1 > /usr/man/man1/smbrun.1 > /usr/man/man1/smbsh.1 > /usr/man/man1/smbstatus.1 > /etc/codepages/unicode_map.932 > /etc/codepages/codepage.866 > /etc/codepages/unicode_map.866 > /etc/codepages/codepage.949 > /etc/codepages/unicode_map.949 > /etc/codepages/codepage.950 > /etc/codepages/unicode_map.950 > /etc/codepages/codepage.936 > /etc/codepages/unicode_map.936 > /etc/codepages/codepage.1251 > /etc/codepages/unicode_map.ISO8859-1 > /etc/codepages/unicode_map.ISO8859-2 > /etc/codepages/unicode_map.ISO8859-5 > /etc/codepages/unicode_map.ISO8859-7 > /etc/codepages/unicode_map.KOI8-R > /etc/lmhosts > /etc/smb.conf > /etc/smbpasswd > /usr/man/man1/smbtar.1 > /usr/man/man1/testparm.1 > /usr/man/man1/testprns.1 > /usr/man/man5/lmhosts.5 > /usr/man/man5/smb.conf.5 > /usr/man/man5/smbpasswd.5 > /usr/man/man7/samba.7 > /usr/man/man8/nmbd.8 > /usr/man/man8/smbd.8 > /usr/man/man8/smbmnt.8 > /usr/man/man8/smbmount.8 > /usr/man/man8/smbpasswd.8 > /usr/man/man8/smbspool.8 > /usr/man/man8/smbumount.8 > /usr/sbin/smbd > /usr/sbin/nmbd > /var/log/samba > /var/lock/samba
Главная > Операционные системы > UNIX > Linux |