назад Оглавление вперед

Установка Samba

"Части кода должны работать вместе как часы. Помните что код написанный вами, вам же потом и разбирать. Должны быть веские причины, если вы не можете заставить части кода снова работать слажено. Старайтесь не использовать молоток в своей работе.”

IBM инструкция для разработчиков, 1975

Весомый аргумент в установке Samba на свой компьютер, это ответить на некоторые вопросы, которые вероятно возникают в вашей голове: Какие настройки сети были использованы во время сборки Samba, которые могут повлиять на ее работу? Где она будет искать свои файлы конфигурации? Были ли внесены какие-либо изменения в исходный код вашим поставщиком Linux? Вы получите ответы на эти вопросы.

Сначала мы должны скачать последний архив Samba с исходными кодами:

$ curl -LO http://samba.org/samba/ftp/stable/samba-3.3.3.tar.gz

Проверка

В большинстве случаев нужно проверить архив с исходными файлами на наличие GPG signed key. Однако, в случае с Samba, все немного иначе1:

$ gunzip samba-3.3.3.tar.gz
$ curl -LO http://samba.org/samba/ftp/stable/samba-3.3.3.tar.asc
$ gpg –keyserver-options auto-key-retrieve –verify samba-3.3.3.tar.asc

Распаковка

Распакуем исходные коды дистрибутива Samba и перейдем в директорию с распакованным архивом:

$ tar –no-same-owner –no-same-permissions -xvf samba-3.3.3.tar
$ cd samba-3.3.3/source

Стоит отметить что директория с исходными файлами Samba содержит следующие полезные файлы и папки:

  • WHATSNEW.txt - Изменения произошедшие в последней версии. Все важные документы и файлы находятся в.
  • docs/ - Документация Samba, включая старую и новую
  • examples/ - Примеры файлов конфигурации Samba
  • source/ - Текушие исходные коды

Кроме того вы обалдеете (извините за жаргон Прим. переводчика), когда узнаете что в архиве абсолютно бесплатно для вас находится полная версия книги Using Samba издательства O’Reilly (на английском языке :-p Прим. переводчика). Она находится в docs/htmldocs/using_samba/.

Если вам уже скучно, давайте быстро покончим с этим, выполните простую команду:

$ ./configure

А вот вариант для тех кто хочет понять что, куда и зачем собственно мы устанавливаем:

$ ./configure \
        –prefix=/usr/local/samba-3.3.3 \
        –with-configdir=/etc/samba \
        –with-privatedir=/etc/samba/private \
        –disable-cups \
        –with-cifsmount
$ make
# make install

Примечание: при указании опций конфигурации необходимо прислушиваться к голосу здравого смысла. Ну например, указав -enable-cups=yes, вы можете попасть в затруднительное положение, если в системе не установлен CUPS.

Хоть в большинстве дистрибутивов Linux уже все и определено, не лишним будет убедиться что в вашей системе в файле /etc/services определены порты, которые использует Samba. Не удивляйтесь, если вы увидите неожиданные записи "137/tcp" и т. д.; IANA обычно включает в себя как TCP так и UDP записи, независимо от того, требует ли этого протокол.

netbios-ns      137/udp         # NETBIOS Name Service
netbios-dgm     138/udp         # NETBIOS Datagram Service
netbios-ssn     139/tcp         # NETBIOS Session Service
microsoft-ds    445/tcp         # Microsoft-DS

Для запуска Samba, просто запустите демонов вручную или с помощью стартовых скриптов:

# /usr/local/samba-3.3.3/sbin/smbd -D
# /usr/local/samba-3.3.3/sbin/nmbd -D

Для остановки Samba не рекомендуется использовать команду SIGKILL (-9), используйте ее только в крайнем случае. Согласно документации Samba, “это может оставить область общей памяти в неустойчивом состоянии”. Давайте договоримся, что будем использовать:

# killall -15 smbd nmbd

Ну а если необходимо перегрузить Samba (для учета изменений в конфигурационных файлах), пошлите следующий SIGHUP сигнал:

# killall -HUP smbd nmbd

Если вы хотите упростить себе жизнь (что не всегда хорошая идея), вы можете создать старт/стоп сценарий:

#!/bin/sh
# chkconfig: 2345 91 35
# description: Initialization script for Samba

# Make sure the configuration file exists
[ -f /etc/samba/smb.conf ] || exit 1

samba_start() {
        echo "Starting SMB services"
        /usr/local/samba/sbin/smbd -D
        echo "Starting NMB services"
        /usr/local/samba/sbin/nmbd -D
}

samba_stop() {
        echo -n "Stopping smbd"

        kill -15 $(</usr/local/samba/var/locks/smbd.pid)
        while [[ -f /usr/local/samba/var/locks/smbd.pid ]]; do echo -n .; sleep 1; done ; echo
        echo -n "Stopping nmbd"
        kill -15 $(</usr/local/samba/var/locks/nmbd.pid)
        while [[ -f /usr/local/samba/var/locks/nmbd.pid ]]; do echo -n .; sleep 1; done ; echo
}

samba_reload() {
        echo "Re-reading Samba configuration files"
        kill -HUP $(</usr/local/samba/var/locks/nmbd.pid)
}

# See how we were called
case "$1" in
        'start')
                samba_start
                ;;
        'stop')
                samba_stop
                ;;
        'restart')
                samba_stop
                sleep 1
                samba_start
                ;;
        'reload')
                samba_reload
                ;;
        *)
                echo "Usage: $0 {start|stop|restart|reload}"

                ;;
esac

 


1. Это, по сути, моя вина. Команда Samba предоставляет как gzip так и bzip2 версии своего программного обеспечения, каждая из которых имеет свой уникальный GPG ключ. Давным, давно я предложил, что будет проще, если делать одну GPG подписанную версию архива, а не две GZIP или bzip2 версии. К сожалению, они приняли мои советы на этот счет, и теперь все менее стандартизировано, чем прежде

 

назад Оглавление вперед