среда, 12 января 2011 г.

Настраиваем Samba

Последние прошивки DD-WRT имеют встроенный сервер Samba, который  можно конфигурировать через вебинтерфейс прошивки.   Мы же попробуем настроить основные параметры через консоль, не прибегая к помощи веб интерфейса.






Для начала отключаем Samba сервер в веб интерфейсе, если он там включен. Для этого заходим в вебморду роутера,  в раздела Services/NAS и отключаем автоматический запуск встроенного сервера.

выбираем там Samba/Disable  и нажимаем "Apply Settings" .

Теперь можно приступить к собственной настройке.

Логинимся к роутеру по ssh через putty, и для начала давайте создадим пользователя, логин и пароль которого будет использоваться для доступам к запароленным ресурсам нашего samba сервера.

В нашем примере логин этого пользователя будет share и пароль pass
Открываем /etc/passwd  (там хранятся пароли  и права доступа всех пользователей нашей линукс машинки (роутера).
vi /etc/passwd  или nano /etc/passwd  
 (во всех следующих примерах для редактирования файлов мы будем использовать редактор nano, так как он удобнее чем vi.  nano мы уже становили при начальной настройке opkg, если он не установлен, установите его командой  opkg install nano )

Итак, мы открываем /etc/passwd и добавляем туда следующие строчки:
nobody:x:65534:65534:nobody:/mnt:/bin/false
share:x:65534:65534:share:/mnt/share:/bin/false


после этого задаем пароль для пользователя share, в нашем примере он pass . Вводим:
passwd share
после этого будет запрошен пароль, вводим туда passи когда пароль попросят повторить- еще раз pass

Теперь давайте посмотрим, какие изменения произошли в файле  /etc/passwd  , вводим
cat /etc/passwd
и видим, что для пользователя share добавился пароль в зашифрованном виде:

share:$1$Zs/eSyN7$yL0jObZCsP2rMAsjHmsXM.:65534:65534:share:/mnt/share:/bin/false

к сожалению, после перезагрузки роутера изменения в файле /etc/passwd не сохраняются, поэтому создаем скрипт, который будет добавлять при загрузке роутера созданных нами пользователей в файл /etc/passwd
 nano /opt/etc/init.d/S05adduser
со следующим содержимым:
grep -q nobody /etc/passwd || echo 'nobody:x:65534:65534:nobody:/mnt:/bin/false' >> /etc/passwd
grep -q share /etc/passwd || echo 'share:$1$Zs/eSyN7$yL0jObZCsP2rMAsjHmsXM.:65534:65534:share:/mnt/share:/bin/false' >> /etc/passwd


та часть которая выделена красным, наш зашифрованный пароль для пользователя share,  его надо скопировать из файла  /etc/passwd и вставить в наш скрипт.

Делаем скрипт исполняемым
chmod a+x /opt/etc/init.d/S05adduser
теперь после перезагрузки роутера созданные нами пользователи будут добавлены в /etc/passwd

Приступаем к настройке samba сервера,  создаем директорию для конфигурационных файлов
mkdir /opt/etc/samba
и теперь можно создать наконец  файл конфигурации samba сервера -  smb.conf
nano /opt/etc/samba/smb.conf
с таким содержимым:
[global]
        netbios name = WNDR3700
        workgroup = WORKGROUP
        server string = DD-WRT
        syslog = 10
        encrypt passwords = true
        passdb backend = smbpasswd
        obey pam restrictions = yes
        socket options = TCP_NODELAY
        preferred master = no
        os level = 20
        security = user
        guest account = nobody
        invalid users = root
        unix charset = UTF-8
        dos charset = UTF-8
 [home]
        comment = Home Directories
        browseable = no
        read only = no
        create mode = 0750
[Optware]
        path = /mnt/
        read only = no
        guest ok = no
        create mask = 0700
        directory mask = 0700
[media]
       path = /mnt/share/media/
       read only = no
       guest ok = yes
       directory mask = 0777


в этом файле у нас прописаны 2 шары:
первая - "Optware" позволит нам получить доступ к содержимому раздела с установленным софтом нашей флешки, и вторая - "media" , которую мы будем использовать доступа к файлам на третьем (самом большом) разделе нашей флешки


Теперь создадим домаший каталог для пользователя share, и папку в нем, к которой мы будем монтировать третий раздел нашей флешки
mkdir -m 777 /mnt/share
mkdir  -m 777 /mnt/share/media
Самба сервер хранит пароли пользоваетелей в собстенном файле smbpasswdсоздадим его
mkdir /tmp/var/samba
touch /tmp/var/samba/smbpasswd
smbpasswd share pass

где pass это пароль, который мы использовали в нашем примере для пользователя share. Зададим права доступа к этому файлу и скопируем файл  smbpasswd в директорию с настройками samba сервера, так как при перезагрузке роутера содержимое каталога /tmp будет потеряно.
chmod 644 /tmp/var/samba/smbpasswd 
cp -a /tmp/var/samba/smbpasswd  /opt/etc/samba/smbpasswd

теперь создадим скрипт запуска samba сервера при загрузке системы
nano /opt/etc/init.d/S50samba
с таким содержимым:

kill -9 $(pidof smbd)
kill -9 $(pidof nmbd)
mkdir -p /tmp/var/samba
cp -a /opt/etc/samba/smbpasswd /tmp/var/samba/smbpasswd
smbd -s /opt/etc/samba/smb.conf

nmbd -D -s /opt/etc/samba/smb.conf
и сделаем его исполняемым
chmod a+x /opt/etc/init.d/S50samba
 на этом настройка samba сервера закончена.

в примере мы создали шару media, с помощью которой собирались получить доступ к третьему разделу флешкичтобы при перезапуске роутера примонтировать третий раздел флешки к папке /mnt/share/media , на который ссылается эта шара, нужно добавить команду монтирования этого раздела в файл /mnt/optware.sh , который мы используем для запуска optware.

Открываем файл /mnt/optware.sh  
nano /mnt/optware.sh  
и добавляем туда строчку 
mount  -t ext2 /dev/sda3 /mnt/share/media
в итоге содержимое этого файла должно выглядеть вот так:

 #!/bin/sh
sleep 2
swapon /dev/sda1
mount -o bind /mnt/etc /etc
mount -o bind /mnt/root /tmp/root
mount -o bind /mnt/opt /opt

mount  -t ext2 /dev/sda3 /mnt/share/media
if [ -d /opt/usr ]; then
export LD_LIBRARY_PATH='/opt/lib:/opt/usr/lib:/lib:/usr/lib'
export PATH='/opt/bin:/opt/usr/bin:/opt/sbin:/opt/usr/sbin:/bin:/sbin:/usr/sbin:/usr/bin'
else
exit
fi


теперь перезагружаем роутер, и смотрим что у нас получилось


Только для пользователей window 7 и windows vista
Начиная с  Windows Vista изменились параметры авторизации при доступе к сетевым ресурсам. Поэтому придется внести некоторые изменения в политики сетевой безопастности .

Пуск - Панель управления - Администрирование - Локальная политика безопасности - Локальные политики - Параметры безопасности

"Сетевая безопасность: уровень проверки подлинности LAN Manager - выбираем в списке пункт  "Отправлять LM и NTML, использовать сеансовую   безопасность  NTMLv2 при согласовании"

или же создаем файл sambafix.reg вот с таким содержимым
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"LmCompatibilityLevel"=dword:00000001

запускаем его в windows под правами администратора и перезагружаем компьютер

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

  1. а это обязательные настройки ?? или все же нет ?
    что они дают ? ))

    ОтветитьУдалить
  2. забыл узнать )) я в putty не профи, у меня вопрос, а можно эти скрипты скопировать туда сразу же или надо вручную вписывать ?

    ОтветитьУдалить
  3. Homavi
    настройки не обязательные, просто пример как это делать не из вебморды. Дают создать 2 шары с защитой по паролю

    ОтветитьУдалить
  4. Homavi
    если Вы ничего не меняли в настройках putty, то по нажатию правой кнопки мышки в окне терминала будут вставляться все содержимое буфера обмена. Те копируете строку в тексте, потом наводите на окошко терминала и нажимаете правую кнопку мыши

    ОтветитьУдалить
  5. Спасибо огромное. Все получилось.
    Единственная проблемма. Раньше(когда самба была настроеяна через веб-интефейс) с макбука заходил нормально. Теперь же с десктопа с Windows 7 заходит нормально, а с макбука "ругается" на "неверное имя пользователя или пароль". Может подскажете как бороться.

    Также есть огромная просьба помочь с настройкой ProFTPD, чтобы была возможность создавать разных пользователей с доступом к разным папкам.
    Заранее спасибо.

    ОтветитьУдалить
  6. ~W~
    По макбуку помочь не смогу.. Про ProFTPD или про vsftpd напишу.. С ProFTPD пока не совсем понял как запускать его не из под рута...

    ОтветитьУдалить
  7. После перегрузки роутера, отваливается usb-драйв. Приходится физически отключать и затем включать либо питание драйва либо usb-кабель.
    Я новичек. Помогите, пожалуйста решить проблему.

    ОтветитьУдалить
  8. Не могу подцепить диск через SMB ни в Mac OS, ни в Win7.
    Какой путь надо открывать для доступа к диску по SMB?
    Как проверить виден ли мой диск(не через роутер)?

    ОтветитьУдалить
  9. Возникла небольшая проблемка с монтированием шары mnt/share/media на третий диск.Дело в том что он почему-то монтирует ее на второй раздел под софт Optware и нельзя ничего скопировать и удалить с него, пишет нет доступа. Все устанавливал по указанной инструкции, формат разделов: 1 раздел swap, 2 раздел ext2 и третий тоже ext2, на компе установлен windows7.Подскажите что я делая не так и в чем может быть проблема.

    ОтветитьУдалить
  10. Ребята подскажите пожалуйста, все настроил по инструкции появилось две папки как и писалось, но проблема в том что капировать на них и удалять с них нельзя, пишит, что нет доступа к целевой папке.У самого стоит Windows7 64 максимальная.Подскажите что может настроить в конфиге самбы нужно или в винде подкрутить.

    ОтветитьУдалить
  11. А как для встроенной самбы установить web интерфейс? samba-swat.

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