понедельник, 28 февраля 2011 г.

Установка и настройка Samba сервера на FreeBSD

 Задача: Обмен и хранение файлов на файлсервере. В роли файлсервера выступают:

8.0-RELEASE FreeBSD и Samba35
Сервер настроен на доступ по имени и паролю, гостевые соединения запрещены.
для начала нужно установить самбу:
#cd /usr/ports/net/samba35
#make && make install && make clean


потом добавить в автозагрузку:
#echo 'samba_enable="YES"' >> /etc/rc.conf
#echo 'smdb_enable="YES"' >> /etc/rc.conf
#echo 'nmdb_enable="YES"' >> /etc/rc.conf



теперь отредактировать конфигурационный файл:
#ee /usr/local/etc/smb.conf
[global]
        netbios name = titan
        workgroup = mynet
        server string = Samba Server
        log file = /var/log/samba/log.%m
        max log size = 50
[Files]
        comment = File server
        path = /share
        writable = Yes

Конфиг мог бы быть и подлинее, но большинство опций нет необходимости писать так как по умолчанию у них задан необходимый параметр, например опция browseable = yes по умолчанию Yes, поэтому её включать в конфиг нет смысла, рекомендую использовать следующий ресурс, который мне очень помог:
http://smb-conf.ru/browseable-s.html
Конфиг файл самбы, создатели рекомендуют делать без коментариев и прочего лишнего барахла, оставлять только то, что нужно.

Не забудьте создать пользователей, которые смогут подключить сетевой диск на своей Windows машине. Пользователей нужно создать и в системе и в самбе:

#adduser test
Username: test
Full name:
Uid (Leave empty for default):
Login group [test]:
Login group is test. Invite test into other groups? []:
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: nologin
Home directory [/home/test]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : test
Password   : *****
Full Name  :
Uid        : 1009
Class      :
Groups     : test
Home       : /home/test
Home Mode  :
Shell      : /usr/sbin/nologin
Locked     : no
OK? (yes/no): yes
теперь создаю того же юзера в самбе:

#smbpasswd -a test
New SMB password:
Retype new SMB password:

У меня для каталога /share отведен отдельный раздел, у кого не так, создайте нужный каталог и задайте разрешения:
#mkdir /share
#chmod -R -v 755 /share
#chown –R –v test:test /share

Теперь надо проверить конфиг самбы на наличие ошибок, это делается одной командой:
#testparm
Load smb config files from /usr/local/etc/smb.conf
max_open_files: sysctl_max (11095) below minimum Windows limit (16384)
rlimit_max: rlimit_max (11095) below minimum Windows limit (16384)
Processing section "[Files]"
Loaded services file OK.

если ошибок нет, будет похожее сообщение.
Далее нужно или перезагрузиться или запустить самбу вручную:

#/usr/local/etc/rc.d/samba start или restart если вы обновили свой конфиг файл.

Следующий шаг – подключение сетевого диска с виндовс машины:
правой кнопкой мыши на “Мой компьютер”—> “Подключить сетевой диск” пишите имя компа и имя шары
\\titan\share
Если не получается войти или войти на сам комп можно а вот в шару нет, попробуйте поставить в smb.conf
security = SHARE
он не такой “строгий”. У меня этого параметра нет, так как у меня стоит значение по умолчанию:
security = USER
Если по прежнему не получается войти, проверьте владельца каталога и права, например можно временно дать права на каталог “всем-все-можно”:

#chmod -R -v 777 /share
Также полезными могут быть некоторые команды:
#sockstat -l4 | grep bd – можно посмотреть запущены ли процессы самбы
#smbstatus – покажет все соединения к самбе
#pdbedit –L – можно увидеть список пользователей самбы
#/usr/local/etc/rc.d/samba restart – перезапуск самбы.

 ====================================================
Не много про ACL (Access Control List) во FreeBSD:
Мне например не хватило возможностей файловой системы для того чтобы задавать разрешения на каталоги и файлы по типу "мне", "вам", "остальным" (user, group, others). Например у меня есть более 50-ти директорий на файл сервере и необходимо было сделать так чтобы часть пользователей видела все, часть чтобы видела только определенные директории и в какие то можно писать а какие то можно только читать.

Вышел из положения благодаря ACL и симлинкам, во первых самбу нужно собрать с поддержкой ACL (в самом начале установки поставить галку ACL_SUPPORT) а во вторых нужно добавить поддержку ACL в /etc/fstab к тому разделу на котором собираетесь это использовать.
И не надо бояться! В разделе Options ставите запятую и без пробела пишите четыре буквы - acls и на перезагрузку, потом можно проверить так:
#mount -l

/dev/da0s1a on / (ufs, local)
devfs on /dev (devfs, local, multilabel)
/dev/da0s1e on /tmp (ufs, local, soft-updates)
/dev/da0s1f on /usr (ufs, local, soft-updates, acls)
/dev/da0s1d on /var (ufs, local, soft-updates)

После, подключаете на венде шару, правой кнопкой-свойство-безопасность-дополнительно (где то видел писали, что лучше выставлять разрешения именно в "дополнительно" так оно якобы правильнее. хз) и можно править разрешения, добавлять/удалять пользователей, главное чтобы эти пользователи были в системе и в самбе. И возможно еще нужно будет добавить в описание вашей шары в /usr/local/etc/smb.conf
admin users = yourusername


Кстати самбу можно настраивать и через web интерфейс, для этого нужно разкоментировать последнюю строку в файле /etc/inetd.conf
swat    stream  tcp     nowait/400      root    /usr/local/sbin/swat    swat
после этого добавить в rc.conf :
#echo 'inetd_enable="YES"' >> /etc/rc.conf
#/etc/rc.d/inetd reload
перечитать конфиг inet.d и вы можете использовать браузер для подключения к http://sambaserver:901


ссылки:
http://smb-conf.ru/     http://www.freebsd.org/doc/ru/books/handbook/network-samba.html http://www.lissyara.su/archive/samba_without_domain/
про ACL  http://www.freebsd.org/doc/ru/books/handbook/fs-acl.html

9 комментариев:

  1. О, спасибо большое. Только про настройку контроллера домена или включение самбы в домен инфы не хватает.

    ОтветитьУдалить
  2. Посыпались сообщения:

    unable to connect to cups server localhost connection refused

    отключил так:
    http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:fixes#using_samba_without_installing_cups

    ОтветитьУдалить
  3. Очень понравилась запись, люди подскажите что нужно прописать в конфиге для доступа к шаре без паролей ?

    ОтветитьУдалить
  4. [global]
    workgroup = WORKGROUP
    server string = eeee
    security = SHARE
    guest account = dm

    [download]
    path = /hdlogic/download
    guest ok = Yes
    guest only = Yes
    writeable = Yes

    И права на каталог download поставь всем все можно:
    #chmod -R -v 777 /hdlogic/download

    http://smb-conf.ru/absolyutnaya-fajlopomojka.html

    ОтветитьУдалить
  5. Salut,

    După cum ştii în curînd are loc cea mai mare conferinţă ICT din Moldova. Moldova ICT Summit 2011. Organizatorii au decis să ofere acces liber la toate conferinţele pentru 5 bloggeri. Pentru a putea fi unul din cei 5 bloggeri acreditaţi te invităm să participi la un concurs simplu. Scrii despre IT şi despre conferinţă şi primeşti acces la eveniment şi posibilitatea de a cîştiga 5 instruiri în valoare de sute de euro fiecare.

    Sper să-ţi prindă bine această informaţie.

    Detalii pe site-ul evenimentului la categoria Media - Bloggeri. Cine ştie google are patru ochi :)
    http://moldovaictsummit.md/index.php/en/media/bloggers

    ОтветитьУдалить
  6. Поможите! пытаюсь в режиме security = USER добавить права на папку и он мне пишет доступ запрещен =(

    ОтветитьУдалить
  7. И возможно еще нужно будет добавить в описание вашей шары в /usr/local/etc/smb.conf
    admin users = yourusername

    ОтветитьУдалить
  8. а valid users есть в конфиге? если да, то закоментируйте.

    попробуйте перезапустить самбу, сервер, комп
    или попробуйте редактировать права с другого компа.

    проверьте права на каталог (шару)

    вроде все. другого быть не может.

    ОтветитьУдалить