Простой файл-сервер Samba

Документация связанная с установкой, настройкой и работой пользовательского ПО
Ответить
Аватара пользователя
ИМХО
Бытовой хакер
Бытовой хакер
Сообщения: 975
Зарегистрирован: 02 мар 2010, 13:21
ОС: Maui 2
Откуда: Чолпон-Ата
Контактная информация:

Простой файл-сервер Samba

Сообщение ИМХО » 03 июн 2010, 19:22

В данной заметке рассказано, как организовать простой файловый сервер с безпарольным доступом к общим ресурсам. То есть можно будет "всем все", помните об этом, когда решили перебросить через такую общую папку файл с паролями от вашей кредитки.

Ничего сильно нового не написано, все по документации с официального сайта, а также добавлено, как смонтировать общие ресурсы в win- и linux-клиентах (ответы на мои же вопросы на этом форуме)

На будущем файл-сервере устновлен ALD 5.0 KDE, имя компьютера altsf, ip/маска 192.168.0.1/24 (для такого файл сервера адрес лучше, а возможно даже необходимо, сделать статический). Делаем все от root. Если ваш файл-сервер нормально видит сеть (если не видит, возможно вам сюда http://www.altlinux.org/Настройка_сетев ... начинающих), можете в общем-то всю работу выполнять не сидя локально, а сразу подключиться удаленно к файл-серверу:
-из линукс (sergo555 это мой рабочий компьютер, sergo пользователь на удаленном компьютере altsf (которого я завел при установке системы)):

Код: Выделить всё

[sergo@sergo555 ~]$ ssh -l sergo 192.168.0.1
sergo@192.168.0.1's password: пароль_пользователя_sergo            
Last login: Wed May 26 13:55:31 2010 from sergo555.local
[sergo@altsf ~]$
Все, мы в терминале на удаленном компьютере altsf, теперь включаем root'а:

Код: Выделить всё

[sergo@altsf ~]$ su -l                                  
Password: пароль_пользователя_root_удаленного_компьютера_altsf                                              
[root@altsf ~]#
Подробнее см. тут http://forum.altlinux.org/index.php/top ... l#msg89508

-из windows: воспользуйтесь утилитой putty.exe http://www.putty.org/, в разделе Session в строке Host Name (or IP adress) введите имя вашего файл-сервера или его IP-адрес, в разделе Window-Translation в кодировках поставьте UTF-8, чтобы не было проблем с отображением кириллицы, жмем OPEN, на надпись в терминале login as: говорим sergo, вводим пароль, зашли, набираем su -l, вводим пароль root файл-сервера. Можно работать.

Раздел с будущими общими ресурсами представляет из себя

Код: Выделить всё

# mount -l
/dev/sda8 on /mnt/disk type ext3 (rw,noexec,nosuid,nodev)
Далее идут необязательные действия, но так удобнее - мы переименуем папку mnt/disk в что-то более информативное, особенно это актуально, если у вас несколько жестких дисков и они примонтировались соответственно в папки, например, /mnt/sda2, /mnt/sdb3 и тому подобное, лично мне неудобно ориентироваться в таких названиях

Отмонтируем раздел:

Код: Выделить всё

# umount /mnt/disk
Переименуем /mnt/disk в /mnt/allfiles (ну, возможно это не более информативное название, чем прежде, однако мне оно говорит больше, чем предыдущее )

Код: Выделить всё

# mv /mnt/disk /mnt/allfiles
Теперь нужно подправить файл /etc/fstab, чтобы раздел /dev/sda8 монтировался при загрузке в новое место (папку /mnt/allfiles), открываем файл в редакторе

Код: Выделить всё

# mcedit /etc/fstab
и исправляем строку

Код: Выделить всё

UUID=fa40a5d4-ca38-4867-bace-5a63ebd29639       /mnt/disk       ext3    nosuid,nodev,noexec     1       0
на

Код: Выделить всё

UUID=fa40a5d4-ca38-4867-bace-5a63ebd29639       /mnt/allfiles       ext3    nosuid,nodev,noexec     1       0
Жмем F2 (сохранить) и F10 (выход из mc).
Монтируем все обратно

Код: Выделить всё

# mount -a
Теперь определимся с общими ресурсами, для примера у нас будет два общих ресурса, music (тут вся музыка предприятия например), и обмен файлами, где ваши сотрудники могут централизованно обмениваться какой-либо информацией.

Данное решение использует параметр force user. Использование параметра force user гарантирует вам, что все файлы будут принадлежать одному и тому же идентификатору пользователя (user identifier UID) и здесь никогда не будет проблем с доступом к файлам.

Пояснение: это значит, что мы заведем на файл-сервере одного пользователя, который автоматически будет становиться владельцем всех файлов и папок в ваших общих ресурсах.
Создадим такого пользователя, имя пользователя sambauser, его пароль samba1USER, при создании сделаем каталог пользователя (ключ -m) и зададим пароль (ключ -p):

Код: Выделить всё

# useradd -m sambauser -p samba1USER
Убедитесь, что товарищ добавился в систему:

Код: Выделить всё

cat /etc/passwd
sambauser:x:501:501::/home/sambauser:/bin/bash
Также убедитесь, что создан домашний каталог пользователя sambauser

Код: Выделить всё

# ls -l /home
drwx------ 11 sambauser sambauser  4096 May 26 16:02 sambauser
drwx------ 19 sergo     sergo      4096 May 26 13:40 sergo
Теперь создадим папку sharefolder, в которой будут находиться наши будущие общие ресурсы, можно и без нее, но имхо удобнее, если все общие папки будут лежать в отдельном каталоге, а не просто в корне точки монтирования:

Код: Выделить всё

# mkdir /mnt/allfiles/sharefolder
Теперь создадим будущие общие папки:

Код: Выделить всё

# mkdir /mnt/allfiles/sharefolder/{music,"обмен файлами"}
И назначим нового владельца, нашего товарища sambauser, а также несколько изменим разрешения:

Код: Выделить всё

# chown -R sambauser:users /mnt/allfiles/sharefolder
# chmod -R ugo+rwx /mnt/allfiles/sharefolder
В итоге получили вот такие разрешения:

Код: Выделить всё

# ls -l /mnt/allfiles/sharefolder
drwxrwxrwx 2 sambauser users 4096 May 26 16:27 music
drwxrwxrwx 2 sambauser users 4096 May 26 16:27 обмен файлами
Теперь займемся сервером Samba. Конфигурационный файл для сервера Samba-3 находится в папке /etc/samba и называется smb.conf. После установки в нем написано много чего интересного, но мы не будем его править, а создадим свой.
Сохраняем файл /etc/samba/smb.conf на память (и на всякий случай, там много чего есть интересного):

Код: Выделить всё

# mv /etc/samba/smb.conf /etc/samba/smb.conf.default
Примечание: разработчики Samba настоятельно рекомендуют иметь файл smb.conf как можно более меньшего размера, а также не иметь внутри файла комментариев. Но также они рекомендуют как можно более тщательно комментировать все изменения, какие вы делаете. Поэтому мы сделаем файл smb.conf.comment, а потом из него получим рабочий файл smb.conf:

Код: Выделить всё

# touch /etc/samba/smb.conf.comment
Теперь заполним файл smb.conf.comment примерно таким содержимым:

#Глобальные параметры
[global]
#название рабочей группы, в windows по умолчанию WORKGROUP, если вы имеете домен, укажите имя вашего домена, тогда
#в сетевом окружении windows ваш файл-сервер будет в общей массе компьютеров
workgroup = WORKGROUP
#NetBIOS-имя компьютера в вашей сети, имя, под которым файл-сервер будет отображаться в сетевом окружении
netbios name = ALTSERVER
#режим безопасности
security = SHARE
#то, как будет описываться в сетевом окружении
server string = files and music

#описание наших общих папок
#секция music #комментарий, то, как будет подписан наш общий ресурс в сетевом окружении

Код: Выделить всё

comment=Наша музыка
#путь к общей папке

Код: Выделить всё

path=/mnt/allfiles/sharefolder/music
#данные параметры необязательны, но для чего они потребовались тут, скажу ниже

Код: Выделить всё

create mask = 0777
directory mask = 0777
#принуждаем быть владельцем общего ресурса пользователя sambauser

Код: Выделить всё

force user=sambauser
#принуждаем быть владельцем общего ресурса группу users

Код: Выделить всё

force group=users
#указываем, что можно не только читать, но и записывать

Код: Выделить всё

read only=No
#открываем гостевой доступ, по сути всем

Код: Выделить всё

guest ok=Yes
[обмен файлами]
comment=файлообмен
path="/mnt/allfiles/sharefolder/обмен файлами"
create mask = 0777
directory mask = 0777
force user=sambauser
force group=users
read only=No
guest ok=Yes

Получим рабочий файл smb.conf, а заодно проверим, нигде ли мы не ошиблись при помощи команды testparm:
Код:
# testparm -s smb.conf.comment>smb.conf
Load smb config files from smb.conf.comment
Processing section "[music]"
Processing section "[обмен файлами]"
Loaded services file OK.
WARNING: You have some share names that are longer than 12 characters.
These may not be accessible to some older clients.
(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)
Server role: ROLE_STANDALONE

Теперь у вас появился файл smb.conf, причем в нем нет ни одной строки с комментариями. Добейтесь, чтобы не было никаких ошибок, опечаток и т.п. Утилита testparm проверяет в основном опечатки, правильность заданных параметров она почти не контролирует. Например, если вы опечатались, сообщение об ошибке может выглядеть так:

Код: Выделить всё

# testparm -s smb.conf.comment>smb.conf
Load smb config files from smb.conf.comment
Unknown parameter encountered: "metbios name"
Ignoring unknown parameter "metbios name"
Processing section "[music]"
ERROR: Badly formed boolean in configuration file: "Yes/t".
lp_bool(Yes/t): value is not boolean!       
Processing section "[обмен файлами]"
Loaded services file OK.
WARNING: You have some share names that are longer than 12 characters.
These may not be accessible to some older clients.
(Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.)
Server role: ROLE_STANDALONE
В данном случае опечатка metbios name вместо netbios name, а также ошибочное значение параметра в секции [music]

Примечание: параметр workgroup=WORKGROUP применяется по умолчанию, поэтому если у вас такая рабочая группа, то его можно не писать, а если какая то другая, то смело пишите, например, workgroup=MYNETWORK

Если вы просто работаете с файлом smb.conf, то для проверки вы можете просто запустить testparm.

Итоговый файл smb.conf получился таким:

Код: Выделить всё

[global]
        netbios name = ALTSERVER
        server string = files and music 
        security = SHARE

[music]
        comment = Наша музыка
        path = /mnt/allfiles/sharefolder/music
        force user = sambauser
        force group = users
        read only = No
        create mask = 0777
        directory mask = 0777
        guest ok = Yes

[обмен файлами]
        comment = файлообмен
        path = "/mnt/allfiles/sharefolder/обмен файлами"
        force user = sambauser
        force group = users
        read only = No
        create mask = 0777
        directory mask = 0777
        guest ok = Yes
Теперь говорим Samba быть всегда включенной при загрузке/перезагрузке и запускаем ее:

Код: Выделить всё

# chkconfig smb --level 35 on

Код: Выделить всё

[root@altsf samba]# service smb start
Starting CIFS services:  NetBIOS over TCP/IP server, Samba server                                          [ DONE ]
Проверяем, что все нормально, подключимся анонимно сами к себе:

Код: Выделить всё

# smbclient -L altserver -U%
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.37]

        Sharename       Type      Comment
        ---------       ----      -------
        music           Disk      Наша музыка
        обмен файлами Disk      файлообмен
        IPC$            IPC       IPC Service (файл-сервер)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.37]

        Server               Comment
        ---------            -------
        ALTSERVER

        Workgroup            Master
        ---------            -------
        WORKGROUP

Все, через 1-2 минуты идем, если в windows, в сетевое окружение, если linux, то Dolphin (или что там у вас) Сеть -->Samba Shares --> Workgroup --> Altserver. Там видим наши папки music и обмен файлами, убеждаемся, что везде есть доступ, как на чтение, так и на запись.

Временно смонтировать можно такой командой, например нашу музыку в папку /mnt/music:
Код:
# mkdir /mnt/music
# mount -t cifs //192.168.0.1/music /mnt/music -o users,username=guest,password=""

Но так ходить долго, особенно если пользуешься часто, поэтому организуем автоматическое монтирование на клиенте linux. Вот как раз для этого случая потребовались параметры:
Код:
create mask = 0777
directory mask = 0777
Возможно можно и без них, но без них у меня менялись права на локальной папке так, что я мог создавать файлы, но не мог их править, так как владельцем всего становился пользователь sambauser, а остальные могли только читать эти файлы. Кто знает, в чем загвоздка, поделитесь.

Создадим папки, куда будем монтировать (все делаем уже не на файл-сервере, а на рабочей станцией с altlinux):

Код: Выделить всё

# mkdir /mnt/music
mkdir /mnt/obmen
Допишем в файл /etc/fstab такие строки (лучше вконец файла):

Код: Выделить всё

//192.168.0.1/music /mnt/music cifs users,username=guest,password="",utf8     0 0
//192.168.0.1/обмен\040файлами /mnt/obmen cifs users,username=guest,password="",utf8     0 0
Ну, и чтобы еще короче, сделаем ссылки на рабочем столе (их можно сделать уже от обычного пользователя):

Код: Выделить всё

ln -s /mnt/music /home/sergo/Desktop/музыка
ln -s /mnt/obmen /home/sergo/Desktop/"обмен файлами"
Затем в Dolphin слева на панели "Точки входа" можно щелкнуть правой клавишей, выбрать "Добавить", указать описание Mузыка и в пути прописать /mnt/music, ну и тоже самое для обмена файлами. Так вы упростите навигацию к вашим общим ресурсам в файловом менеджере.

В windows мы щелкаем правой клавишей на "Мой компьютер", выбираем "Подключить сетевой диск", назначаем букву диска и указываем путь, либо делаем Пуск-Выполнить-cmd, и в командной строке набираем (диск m: будет музыка, o: обмен файлами):

Код: Выделить всё

c:>net use m: \\altserver\music /persistent:Yes
c:>net use o: "\\altserver\обмен файлами" /persistent:Yes
Длинно получилось, на самом деле все за 15 минут делается


http://forum.altlinux.org/index.php/topic,7189.0.html
Ответить

Вернуться в «Документация *nix»