Как я настраивал Самбу (Настройка Samba в Fedora/RedHat)

Cent OS, Scientific Linux

Модератор: Модераторы разделов

Аватара пользователя
Liksys
Сообщения: 2910

Как я настраивал Самбу

Сообщение Liksys »

Как я настраивал Самбу...

В последнее время в форуме стало появляться все больше вопросов,
связанных с настройкой и использованием сервера Samba, причем
по большей части они воистину элементарные. В связи с этим я решил
разрулить сложившуюся ситуацию и отсеить хотя бы половину задаваемых
вопросов. Впрочем, была еще и другая причина.
Неделю назад я собрал себе новый комп. А поскольку теперь у меня
их два, моя мама попросила один отдать ей, установив на него
виндовс. Комп я отдал, но предварительно прочел лекцию на тему
"виндовс-мастдай, Линукс-рулезз", благодаря чему на старый комп
был установлен RedHat Linux 9.
Возможно, этой статьи не было бы, если не одно но: у старого
компа не было НИКАКИХ устройств обмена информацией с внешним
миром. Разумеется, на нем стоял CDROM, но он был только читающий,
а флоппи-диска не было в принципе (я всегда говорил, что это зло
и выбрасывал его :) ). Хорошенько все взвесив и сравнив стоимость
нового флоппика (~300 руб.) и 20 метров витой пары (~200 руб.), я
решил сэкономить 100 рублей и заработать проблем на мягкое место,
создав домашнюю сетку.
Первым делом были определены задачи, которые должна решать сеть.
Для моей мамы это только сохранение документов с последующей их
записью на диск через мой комп. Не ставилась задача обеспечить
старый комп Интернетом, поэтому я не поднимал на своем компе
Squid (хотя, возможно, придется, так как в скором времени я
планирую купить ноутбук, и тогда я еще напишу о настройке этого
самого Сквида).

Далее я предполагаю, что у Вас на компьютере уже установлен
пакет Samba. Вы можете проверить это командой:

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

[liksys@max ~]$ rpm -qa | grep samba
system-config-samba-1.2.31-1
samba-client-3.0.14a-2
samba-common-3.0.14a-2
samba-swat-3.0.14a-2
samba-3.0.14a-2

Результаты выполнения данной команды должны быть примерно такими
же, как и у меня.
Пакеты system-config-samba-1.2.31-1 и samba-swat-3.0.14a-2 можно не
устанавливать, мы не будем пользоваться конфигураторами.
Я так же надеюсь, что у Вас установлены все необходимые пакеты для
работы с сетью. Так же неплохо установить пакет nmap, он будет
нужен при настройке сети. Проверьте это следующей командой:

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

[liksys@max ~]$ rpm -qa | grep net-tools
net-tools-1.60-52
[liksys@max ~]$ rpm -qa | grep nmap
nmap-frontend-3.81-3
nmap-3.81-3

В принципе, все эти пакеты уже должна быть установлены в Вашей
системе, но если это не так - установите их.

Для того, чтобы Вам был более понятен процесс конфигурирования
сервера Samba, я начну рассказ "с нуля", то есть с настройки сети.
Я предполагаю, что Вы владеете хотя бы базовыми знаниями о сетях.
Почти все действия должна выполняться от пользователя root.


1. Настройка сервера

На сервере должны быть установлены указанные выше пакеты.
Я давал символические имена/адреса компьютерам, каким-либо образом
связанные с событиями моей жизни, но вы можете использовать свои
собственные имена компьютеров и адреса. Итак, начнем настройку
сетевых соединений, воспользовавшись командой:

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

[root@max ~]# ifconfig eth0 192.58.7.16 netmask 255.255.255.0 up
[root@max ~]# route add default gw 192.58.7.100

(Маршрут по умолчанию я назначил от балды, абы был :) )
После этого, если Вы все сделали правильно, у Вас появится сетевой
интерфейс eth0 с адресом 192.58.7.16 и маской 255.255.255.0.
Для проверки правильности настройки Вы можете воспользоваться
следующими командами:

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

[root@max ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:13:D4:BC:F1:C1
          inet addr:192.58.7.16  Bcast:192.58.7.255  Mask:255.255.255.0
          inet6 addr: fe80::213:d4ff:febc:f1c1/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:7362 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7675 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:605320 (591.1 KiB)  TX bytes:5131386 (4.8 MiB)
          Interrupt:11 Base address:0xc000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1742 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2047490 (1.9 MiB)  TX bytes:2047490 (1.9 MiB)

[root@max ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.58.7.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         192.58.7.100    0.0.0.0         UG        0 0          0 eth0
[root@max ~]# ping 192.58.7.16
PING 192.58.7.16 (192.58.7.16) 56(84) bytes of data.
64 bytes from 192.58.7.16: icmp_seq=0 ttl=64 time=0.075 ms
64 bytes from 192.58.7.16: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 192.58.7.16: icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from 192.58.7.16: icmp_seq=3 ttl=64 time=0.056 ms
64 bytes from 192.58.7.16: icmp_seq=4 ttl=64 time=0.049 ms
64 bytes from 192.58.7.16: icmp_seq=5 ttl=64 time=0.054 ms
64 bytes from 192.58.7.16: icmp_seq=6 ttl=64 time=0.048 ms

--- 192.58.7.16 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6001ms
rtt min/avg/max/mdev = 0.047/0.054/0.075/0.011 ms, pipe 2

Результат их выполнения должен выглядеть примерно так же.
Если интерфейс был успешно пропингован, значит, все должно быть
нормально.
Для того, чтобы в последствии использовать не IP-адреса, а имена
машин, можно использовать файл /etc/hosts. Его рекомендуется
использовать в небольших сетях для сопоставления IP-адресов с
символическими именами машин. В данном случае я запонил свой файл
следующим образом:

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

[root@max ~]# cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       max     localhost.localdomain   localhost
192.58.7.1      domovenok       domovenok

В данном случае сдесь описаны имя сервера (третья строка) и имя
второго компа (четвертая строка). В первом поле файла прописан
IP-адрес компьютера, во втором - полное доменное имя, а в третьем -
псевдонимы. В данном случае "max" - сервер, на котором запущена
Samba, "domovenok" - обслуживаемый ей компьютер (я решил дать ему
адрес 192.58.7.1).

Далее можно приступить к настройке самого сервера Samba. Я буду
выполнять эту процедуру, попутно объясняя Вам, для чего я брал те
или иные опции. Первым делом определимся, какие ресурсы должен
предоставлять сервер. Я решил, что вполне достаточно будет двух
ресурсов: "Public" (к которому разрешен доступ на чтение и запись
всем желающим хостам из моей маленькой сети) и "Domovenok", к
которому имеет доступ только пользователь компьютера "domovenok".

Далее займемся напосредственным конфигурированием сервера.
Файл конфигурации Samba (/etc/samba/smb.conf) имеет следующий вид:

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

[global]
...
...
[Share1]
...
[Share2]
...
[ShareN]

Секция "global" содержит общие настройки сервера и настройки по
умолчанию для пользовательских ресурсов, таких, как "Share1".
Настройки пользовательских ресурсов хранятся под соответствующими
секциями, носящими имя ресурса. Настройки определяют различные права
доступа, пользователей и прочие параметры. Параметры, описанные в
секциях ресурсов, могут отменять соответствующие настройки из
секции "global", но только для этого ресурса.
Начнем с секции "global":

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

[global]

        workgroup = HOMEWORKGROUP
        server string = Liksys Home Server
        bind interfaces only = yes
        interfaces = eth0 192.58.7.1 192.58.7.16 127.0.0.1
        hosts deny = ALL
        hosts allow = 192.58.7.16 192.58.7.1 127.0.0.1
        printcap name = /etc/printcap
        printing = cups
        cups options = raw
        log file = /var/log/samba/log.smbd
        max log size = 50
        security = share
        encrypt passwords = yes
        smb passwd file = /etc/samba/smbpasswd
        socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
        local master = yes
        preferred master = yes
        domain master = no
        wins support = no
        dns proxy = no
        guest ok = yes
        guest account = nobody
        unix charset = utf8
        dos charset = cp1251
        display charset = cp1251

Разберемся, что же означают данные параметры:

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

workgroup = HOMEWORKGROUP

Определяет имя рабочей группы.

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

server string = Liksys Home Server

Определяет название сервера.

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

bind interfaces only = yes
interfaces = eth0 192.58.7.1 192.58.7.16 127.0.0.1

Ограничивает обслуживаемые сервером сетевые интерфейсы только интерфейсом
"eth0" и по адресам "192.58.7.1 192.58.7.16 127.0.0.1", благодаря чему
можно ограничить доступ к серверу и все "кулхацкеры" из Инета идут лесом.

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

hosts deny = ALL
hosts allow = 192.58.7.16 192.58.7.1 127.0.0.1

Первая строка запрещает доступ всем со всех адресов, а вторая - разрешает
доступ только с адресов "192.58.7.16 192.58.7.1 127.0.0.1".

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

printcap name = /etc/printcap
printing = cups
cups options = raw

Настройки сетевого принтера. Поскольку принтера у меня нет, можно даже и
их не указывать, но я все-таки сделал это. Первая строка задает путь к
файлу, содержащиму информацию о принтерах, вторая - определяет систему
печети, третья - параметры.

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

log file = /var/log/samba/log.smbd
max log size = 50

Первая строка определяет путь к журналу сервера Samba, а вторая - размер
журнала. Можно еще добавить строку "debug level = 3", она используется при
отладке сервера, выводя в журнал более детальную информацию. При настройке
сервера я использовал уровень 5.

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

security = share
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd

Первая строка задает уровень доступа к серверу. Она может принимать три
значения:
share - при каждом доступе будет запрашиваться имя пользовательского ресурса.
user - для аутентификации будет использоваться имя пользователя и пароль,
которые используются для входа в сеть виндовс. Это значение по умолчанию.
server - для проверки пароля будет использоваться сервер NT (как работает -
не вникал: винды - зло :) ), если интересно - читайте ман)
[code]
Вторая строка разрешает шифрование паролей, третья задает путь к файлу с
паролями пользователей. Если у вас нет этого файла, то создайте его командой
touch.

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

socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192

Опции сокета. Если не знаете, что это такое, лучше оставить как есть или
почитать ман.

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

local master = yes
preferred master = yes

Эти строки разрешают компьютеру становиться мастербраузером. После запуска
сервера и подключения к сети, Samba устроит перевыборы (ИМХО, Революцию), и
с наиобльшей вероятностью выберет мастербраузером себя. Следует отметить,
что использование этих параметров избавляет от многих глюков (например,
в одной из сетей, которое я настраивал, пока я не поставил этот параметр,
появлялись и исчезали несуществующие компьютеры: вот такие виндовые глюки).

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

domain master = no
wins support = no
dns proxy = no

Первая строка запрещает становиться мастером домена, вторая отключает WINS
(что это такое, подробно описано в мане), третья - отключает DNS Proxy.

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

guest ok = yes
guest account = nobody

Первая строка включает гостевую запись, вторая - определяет соответствие
"гостя" локальному пользователю "nobody", которому запрещена регистрация на
локальной машине.

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

unix charset = utf8
dos charset = cp1251
display charset = cp1251

Ну здесь все должно быть понятно без пояснений. Эти опции избавляют от глюков
со шрифтами/кодировками.

Теперь самое время заняться настройкой пользовательских ресурсов:

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

[Public]
        comment = Public Folder
        path = /pub/Samba/Public
        writeable = yes
        guest ok = yes
        create mask = 0666
        directory mask = 0777
        read only = no

[Domovenok]
        comment = Network Folder/Disk for Domovenok
        path = /pub/Samba/Domovenok
        writeable = yes
        guest ok = no
        valid users = mama
        create mask = 0664
        directory mask = 0775
        read only = no

comment - комментарий к ресурсу;
path - расположение каталога ресурса на сервере;
writable - параметр, разрешающий или запрещающий запись и изменение данных в
ресурсе. Дает возможность пользователям создавать/редактировать/удалять файлы;
guest ok - разрешает или запрещает доступ к сервису "гостям";
create mask - права доступа, назначаемые новым файлам;
directory mask - то же самое, только каталогам;
read only - доступ только для чтения или для чтения и записи;
valid users - пользователи, которым разрешен доступ к ресурсу.

Мы закончили с конфигурацией сервера. Теперь нужно настроить саму машину.
Для этого создадим каталоги и поставим права доступа таким образом:

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

[root@max ~]# mkdir /pub
[root@max ~]# mkdir /pub/Samba
[root@max ~]# mkdir /pub/Samba/Public
[root@max ~]# mkdir /pub/Samba/Domovenok
[root@max ~]# chmod -R 777 /pub


Теперь добавим пользователя mama в систему:

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

[root@max ~]# groupadd -g 505 mama
[root@max ~]# useradd -u 505 -g 505 -s /sbin/nologin mama
[root@max ~]# passwd mama
Changing password for user mama
New UNIX password: <password>
Retype new UNIX password: <password>
passwd: all authentication tokens updated successfully

Теперь необходимо создать учетную запись Samba:

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

[root@max ~]# smbpasswd -a mama
New SMB password: <password>
Retype new SMB password: <password>

Думаю, здесь необходимы пояснения. При добавлении пользователя в Samba
происходит что-то вроде установления связи между локальным пользователем и
пользователем Samba. Это дает возможность создания довольно сложных
конфигураций серверов, при которых используются стандартные механизмы UNIX,
такие, как права доступа и группы пользователей. Теперь, когда удаленный
пользователь создаст файл, то владельцем этого файла будет являться локальный
пользователь, с которым установлена связь пользователя Samba. Удаленный же
пользователь будет подчиняться тем же правилам, которые установлены для
локального пользователя, то есть правам доступа, относиться к соответствующей
группе пользователей и др. Но для больших систем нежелательно "плодить"
большое количество пользователей. Поэтому при создании локального пользователя
я запрещаю ему регистрацию в системе, устанавливая его оболочку как
/sbin/nologin. Если у вас в системе нет такой "оболочки", то вы можете
использовать "/bin/false". Посмотреть доступные оболочки вы можете так:

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

[root@max ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/ksh
/bin/tcsh
/bin/csh
/bin/zsh


Вы можете занести имена всех машин и иш IP-адреса в файл /etc/samba/lmhosts:

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

[root@max ~]# cat /etc/samba/lmhosts
127.0.0.1 localhost
192.58.7.1 domovenok

Выполняет он практически те же самые функции, что и файл /etc/hosts.

Забегая вперед, скажу, что у меня при тестировании вылезала ошибка, что нельзя
создавать/удалять файлы. Она вылечилась ковырянием SELinux`а, а именно
отключением защиты демонов Samba. Всю остальную политику безопасности я не
изменял, поэтому в целом уровень защищенности системы не понизился.
На этом настройка Samba закончена. Теперь нужно проверить, все ли мы правильно
сделали. Да, кстати, так как сеть нужна не всегда, не имеет смысла держать
постоянно поднятыми сервер и сетевые интерфейсы. Для того, чтобы включать все
это только когда нужно, я написал скрипт netctl:

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

#!/bin/bash
#####
MAX_ETH0_ADDR=192.58.7.16
MAX_ETH0_MASK=255.255.255.0
MAX_DEF_ROUTE=192.58.7.100
#
SELINUX_TEST=/usr/sbin/selinuxenabled
IFCONFIG=/sbin/ifconfig
ROUTE=/sbin/route
SMBCTL=/etc/rc.d/init.d/smb
#####
$SELINUX_TEST
if [ $? -ne 0 ]; then
        echo "FATAL ERROR! SELinux is DISABLED!"
        exit 1
fi
#####
if [ $# -eq 0 ]; then
        echo "usage: ./netctl [up/down]"
        exit 1
fi
#
if [ $# -eq 1 -a $1 = "up" ]; then
        $IFCONFIG eth0 $MAX_ETH0_ADDR netmask $MAX_ETH0_MASK up && \
        echo "ifconfig (eth0): online" && \
        $ROUTE add default gw $MAX_DEF_ROUTE && \
        echo "route (default): online" && \
        $SMBCTL start
elif [ $# -eq 1 -a $1 = "down" ]; then
        $ROUTE del default gw $MAX_DEF_ROUTE && \
        echo "route (default): offline" && \
        $IFCONFIG eth0 down && \
        echo "ifconfig (eth0): offline" && \
        $SMBCTL stop
else
        echo "usage: ./netctl [up/down]"
        exit 1
fi
#####

Командой "./netctl up" сервер и сетка поднимаются, а "./netctl down" сеть
и сервер отключаются. Как мера предосторожности, перед манипуляциями с сетью
проверяется статус SELinux.
Поднимем сервер сначала командой /etc/rc.d/init.d/smb start (использовать
скрипт я буду только тогда, когда все заработает):

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

[root@max ~]# /etc/rc.d/init.d/smb start
Запускаются службы SMB:                                    [  ОК  ]
Запускаются службы NMB:                                    [  ОК  ]


Проверим наш сервер (эти действия я делал от обычного пользователя):

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

[liksys@max ~]$ nmap 192.58.7.16

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-26 11:52 MSD
Interesting ports on 192.58.7.16:
(The 1661 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Nmap finished: 1 IP address (1 host up) scanned in 0.290 seconds

Как видно выше, Samba села на два порта: 139 и 445. Так и должно быть. Теперь
попробуем зарегистрироваться гостем на сервере:

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

[liksys@max ~]$ smbclient //192.58.7.16/Public
Password: <Enter>
Domain=[HOMEWORKGROUP] OS=[Unix] Server=[Samba 3.0.14a-2]
smb: \> ls
  ..                                  D        0  Fri Aug 25 14:44:56 2006
  .                                   D        0  Fri Aug 25 21:24:23 2006

                36515 blocks of size 2097152. 14674 blocks available
smb: \> mkdir test
smb: \> ls
  test                                D        0  Sat Aug 26 11:56:39 2006
  ..                                  D        0  Fri Aug 25 14:44:56 2006
  .                                   D        0  Sat Aug 26 11:56:39 2006

                36515 blocks of size 2097152. 14674 blocks available
smb: \> exit
[liksys@max ~]$ smbclient //192.58.7.16/Domovenok -U mama
Password: <password>
Domain=[HOMEWORKGROUP] OS=[Unix] Server=[Samba 3.0.14a-2]
smb: \> ls
  xmms-devel-1.2.7-21.i386.rpm        R    37478  Sun May 22 18:56:02 2005
  table1.doc                               14336  Wed Aug  2 15:30:53 2006
  xmms-skins-1.2.7-21.i386.rpm        R  2724785  Sun May 22 18:56:03 2005
  ..                                  D        0  Fri Aug 25 14:44:56 2006
  xmms-1.2.7-21.i386.rpm              R  1584529  Sun May 22 18:56:00 2005
  .                                   D        0  Fri Aug 25 20:34:53 2006
  xmms-mpg123-1.2.7-21.i386.rpm       R   100816  Sun May 22 18:56:02 2005

                36515 blocks of size 2097152. 14674 blocks available
smb: \> mkdir test
smb: \> ls
  xmms-devel-1.2.7-21.i386.rpm        R    37478  Sun May 22 18:56:02 2005
  table1.doc                               14336  Wed Aug  2 15:30:53 2006
  xmms-skins-1.2.7-21.i386.rpm        R  2724785  Sun May 22 18:56:03 2005
  test                                D        0  Sat Aug 26 11:58:32 2006
  ..                                  D        0  Fri Aug 25 14:44:56 2006
  xmms-1.2.7-21.i386.rpm              R  1584529  Sun May 22 18:56:00 2005
  .                                   D        0  Sat Aug 26 11:58:32 2006
  xmms-mpg123-1.2.7-21.i386.rpm       R   100816  Sun May 22 18:56:02 2005

                36515 blocks of size 2097152. 14674 blocks available
smb: \> exit

Похоже, что все в порядке.


2. Настройка клиента

Настраивать что-то серьезно было нечего. Я ограничился назначением адреса
192.58.7.1/255.255.255.0 для интерфейса eth0 и автоматическим поднятием его
при включении (настраивал все это при установке системы). Ну и поковырял
конфигурацию сервисов, чтобы ничего лишнего не запускалось. Далее я выполняю
действия уже с компьютера-клиента:

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

[mama@domovenok ~]$ nmap 192.58.7.16

Starting nmap 3.81

... и так ждать до посинения. Я ждал минут 10, после чего nmap заявил, что на
сервере нет открутых портов и его вообще не видно. Попробовал пропинговать:

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

[mama@domovenok ~]$ ping 192.58.7.16
PING 192.58.7.16 (192.58.7.16) 56(84) bytes of data.
64 bytes from 192.58.7.16: icmp_seq=0 ttl=64 time=0.061 ms
64 bytes from 192.58.7.16: icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from 192.58.7.16: icmp_seq=2 ttl=64 time=0.065 ms

--- 192.58.7.16 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.050/0.058/0.065/0.010 ms, pipe 2

Пингуется нормально. Странно. Стал разбираться. Говорю сразу, это заняло часа
полтора. Я использоваля всякие средства, типа tcpdump/nmap/ping и прочие,
вплоть до установления уровня отладочных сообщений Samba до 5. Оказалось, что
на сервере стояла политика iptables, при которой фаерволились все приходящие
данные по eth0, кроме ping`а :) . Вылечилось просто: установкой eth0 как
доверенного устройства. Это так же не повлекло за собой проблем с
безопасностью, поскольку у меня ВСЕ порты, крома Самбы были закрыты, а
последняя включалась только по требованию, да еще стоял SELinux с жесткой
политикой "мочить всех". Настраивалось это на сервере конфигураторм
system-config-securitylevel, на клиенте - redhat-config-securitylevel (посто
потому, что вручную это делать было лень :) ).
Поставив доверенным порт eth0 и на клиенте, я попробовал еще раз
просканировать порты на сервере. На этот раз все заработало:

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

[mama@domovenok ~]$ nmap 192.58.7.16

Starting nmap 3.81 ( http://www.insecure.org/nmap/ ) at 2006-08-26 12:17 MSD
Interesting ports on 192.58.7.16:
(The 1661 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Nmap finished: 1 IP address (1 host up) scanned in 0.260 seconds

Попробовал подсоединиться и создать/удалить/прочитать какой-нибудь файл (как
это сделать, было показано в пункте о настройке сервера): получилось. Как и
задумывалось, Samba пропускал всех пользователей без разбора к Public, но
только mama имеет доступ к ресурсу Domovenok. Все компьютеры, имеющие адреса,
отличные от трех разрешенных, или пытавшихся подключиться к Samba с другого
интерфейса, не eth0, шли лесом - политика безопасности все отрезала. Для пущей
защищенности я отключил пересылку пакетов между интерфейсами и прочие
заморочки (файл /etc/sysctl.conf). Вот пример файла на сервере:

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

[liksys@max ~]$ cat /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# The following line is necessary for GFS to function properly.
kernel.panic_on_oops = 1



3. Работа в сети

Теперь, когда сеть настроена, ее можно поднимать командой:

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

./netctl up

... или отключать:

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

./netctl down


Для того, чтобы иметь возможность использовать файлы пользователя mama на
сервере, я включил себя в группу пользователя mama. Это более элегантное
решение, чем установка прав типа 0666 или 0777 на новые файлы, создаваемые
пользователями Samba.
Для мониторинга сетевых подключений по Самбе нужно использовать команду
smbstatus. Для удобства я запускаю ее в окне xterm следующим образом:

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

watch smbstatus

Эта команда автоматически обновляет информацию о подключениях и выводит ее на
экран.


4. Немного о SWAT...

SWAT (Samba Web Administration Tool) - средство конфигурирования и
обслуживания сервера Samba, оно выполнено в виде WEB-интерфейса. Получить
доступ к нему можно через браузер, например, Mozilla. Для этого в строке
адреса наберите:

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

http://localhost:901

Когда попросят, введите имя пользователя root и его пароль. После этого Вы
можете приступить к управлению сервером Samba.
Возможно, у вас не получится запустить SWAT. Это связано с тем, что демон
xinetd не обслуживает SWAT. Для того, чтобы исправить это, сделайте следующее:
1) Отредактируйте файл /etc/xinetd.d/swat, изменив в нем строку disable = yes
на disable = no.
2) Перезапустите xinetd, воспользовавшись командой:

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

/etc/rc.d/init.d/xinetd restart

Интерфейс SWAT довольно понятный, поэтому я не описываю использование этого
средства. Отмечу лишь, что я не пользуюсь SWAT, а предпочитаю настраивать все
"по-старинке" вручную. К тому же, если вы настраиваете серьезный сервер, на
нем, возможно, не будет установлен X. А использование текстовых браузеров типа
Lynx со SWAT - извращение.
Я пользуюсь только двумя конфигураторами: system-config-securitylevel и
system-config-network (последний только для настройки модема). Когда лень
запускать Иксы и что-то надо быстро изменить - пользуюсь setup`ом.
Однако там, где нужна гибкая настройка, я все делаю вручную.


5. Заключение...

Я рассмотрел доволено простой случай, однако на базе получившегося файла
конфигурации Samba и стандартных механизмов UNIX, таких, как права доступа и
группы пользователей, можно создавать более сложные конфигурации. Например,
создать несколько групп пользователей, включить в них самих пользователей и
распределить использование Samba-ресурсов между ними, как на обычной локальной
машине, поскольку пользователи Samba подчиняются общим правилам для локальных
пользователей системы, с которыми установлено их соответствие.
Возможно ограничивать доступ к ресурсам для машин, используя параметры
"interfaces", "hosts deny", "hosts allow"; ограничивать доступ к ресурсам
пользователям с помощью параметров "guest ok", "valid users", "invalid users"
и других. Сервер Samba - это очень гибкая система, она поддерживает сотни
параметров, поэтому для полноценного использования этого сервера необходимо
хорошо представлять себе, что делает та или иная опция, для чего можно
обратиться к соответствующим man-страницам руководства:

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

man samba
man smb.conf
man smbclient
...


В заключение хотелось бы привести некоторые команды, которые полезны при
настройке/использовании сервера Samba.

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

smbclient

Позволяет подключаться к серверу Samba.

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

smbclient -L //<hostname_or_ip-adress>

Выводит список доступных ресурсов компьютера.

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

smbclient -U username //<hostname_or_ip-adress>/<sharename>

Позволяет подключиться к ресурсу <sharename> указанного компьютера как
пользователь username. После этого Вам предложат ввести пароль. Если
комбинация имя_пользователя-пароль верна, Вам будет предоставлен доступ к
ресурсу. Параметр "-U username" можно опустить, тогда при регистрации будет
использоваться гостевая учетная запись. Просьбу о вводе пароля можно
проигнорировать, нажав <Enter>. После этого Вам будет предоставлен доступ к
ресурсу, если, конечно, администратор сервера разрешил использование гостевой
учетной записи.

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

smbmount //<hostname_or_ip-adress>/<sharename> /mount/point
или
mount -t smbfs //<hostname_or_ip-adress>/<sharename> /mount/point

Позволяет примонтировать ресурс к файловой системе. Он буде доступен как
обычный каталог. Команда smbmount имеет множество параметров, для получения
справки введите команду man smbmount. Монтировать ресурс можно и командой
mount, как показано выше.

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

testparm

Проверяет правильность конфигурации файла /etc/samba/smb.conf. Если все
нормально, это хороший знак, скорее всего сервер будет работать нормально.
Для справки введите man testparm.

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

/etc/rc.d/init.d/smb start/stop/status/restart

Управление демонами smbd и nmbd.

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

smbstatus

Мониторинг состояния сервера Samba.

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

groupadd -g "GID" groupname
useradd -u "UID" -g "GID" -s /sbin/nologin username
passwd username
smbpasswd -a username

Последовательность команд для добавления Samba-пользователя.
Спасибо сказали:

Аватара пользователя
router
Сообщения: 363
ОС: Debian, на работе rhel

Re: Как я настраивал Самбу

Сообщение router »

Спасибо, очень полезная статья.
Как говорится, тема сла настройки samba для сети без домена раскрыта полностью. Теперь с этим вопросом можно будет посылать не в поиск, а непосредственно сюда :)

Единственный вопрос - по скрипту netctl:
не проще было при анализе количества аргументов использовать '-ne 1' всместо '-eq 0', а затем - обычный 'case $1 in' ?
Спасибо сказали:

Аватара пользователя
Bruce
Сообщения: 647
Статус: beat maniac
ОС: Debian GNU/Linux 4.0

Re: Как я настраивал Самбу

Сообщение Bruce »

надо тоже будет как-нибудь потупить с блокнотом )

наверно респект, но как-то негусто.
Samsung r40 (t5500, 1.5G ram, 80 gb hdd)

koolkhel's lj
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

router писал(а):
27.08.2006 18:15
Единственный вопрос - по скрипту netctl:
не проще было при анализе количества аргументов использовать '-ne 1' всместо '-eq 0', а затем - обычный 'case $1 in' ?

Можно и так ^_^ . Просто мне показалось, что так скрипт будет более понятным.
Спасибо сказали:

Аватара пользователя
kusok
Сообщения: 306
Статус: laid to rest
ОС: Debian Sid

Re: Как я настраивал Самбу

Сообщение kusok »

Извиняюсь, что не совсем в тему. Имеется 2 линуксовых машины, зачем нужна самба, когда нет винды? По-моему было бы логичнее и проще использовать NFS. Заморочки со сканированием портов тоже на мой взгляд лишние. Ну и сама статья очень дистрибутивно специфичная. А в целом, неплохо.
Спасибо сказали:

Аватара пользователя
Snupt
Бывший модератор
Сообщения: 2062
Статус: No Place for RTFM Here…
ОС: Mac OS X

Re: Как я настраивал Самбу

Сообщение Snupt »

(kusok @ Aug 28 2006, в 13:40) писал(а):Ну и сама статья очень дистрибутивно специфичная.

Тлолько тем, что в статье упоминается о rpm пакетах. А это не дистроцпецифика, ибо, во-первых, названия пакетов программ практически везде все одинаковые, а во-вторых, rpm-дистрибутивов достаточно много.
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

Дело в том, что NFS - довольно дырявая штука :)
Сканирования портов помогли при поиске неполадок.
Спасибо сказали:

~S/E/r/G~
Сообщения: 220
ОС: Debian 4.0

Re: Как я настраивал Самбу

Сообщение ~S/E/r/G~ »

за настройку кодировки пасиба, хотя у меня вместо cp1251 cp866 стоит и всё работает
debian 4.0: kernel-2.6.18 | Xorg7.2 (fglrx) | Xfce 4.4
Спасибо сказали:

Аватара пользователя
TuLiss
Сообщения: 1611
Статус: 01100
ОС: Gentoo,Ubuntu,MacOS X

Re: Как я настраивал Самбу

Сообщение TuLiss »

Liksys писал(а):
28.08.2006 15:39
Дело в том, что NFS - довольно дырявая штука :)
Сканирования портов помогли при поиске неполадок.


это смотря как настраивать.
Ждем теперь статьи по настройки с доменом =)
Чтение man'нов в слух ещЁ никому не помогало!...
kernel 4.2
chmod -x `which chmod`
War, war never changes...
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

TuLiss писал(а):
09.09.2006 18:25
Liksys писал(а):
28.08.2006 15:39

Дело в том, что NFS - довольно дырявая штука :)
Сканирования портов помогли при поиске неполадок.


это смотря как настраивать.
Ждем теперь статьи по настройки с доменом =)

Если сумею найти дистриб винды, то попробую ^_^
Спасибо сказали:

Аватара пользователя
lexus3d
Сообщения: 172

Re: Как я настраивал Самбу

Сообщение lexus3d »

статья неплоха, я в своё время парился с самбой (в целях общего развития) и лазил почти везде и тут даже где то светился с вопросами по ней.
так то samba весчь! если в сети есть виндовые машинки да и так весчь, имеет очень много возможностей.
Gentoo 2007.0 / 2.6.19-r5 / Gnome
"Всё в этом мире относительно..." (с)
Спасибо сказали:

HAPKOMAH
Сообщения: 8
ОС: ASP Linux 10.1

Re: Как я настраивал Самбу

Сообщение HAPKOMAH »

все зделал по тексту, но когда из винды в сетевом окружении конектешсо на линуксовую машину, говорит давай пароль, а нада чтоб тупо заходила без пароля сукьюрити=шаре ! выставлял ! :lol:
Спасибо сказали:

Yurik
Сообщения: 46
ОС: FC6

Re: Как я настраивал Самбу

Сообщение Yurik »

Здорово, давно искал такое описание, просто и ясно. Только...
Забегая вперед, скажу, что у меня при тестировании вылезала ошибка, что нельзя
создавать/удалять файлы. Она вылечилась ковырянием SELinux`а, а именно
отключением защиты демонов Samba.

Вот на этом можно заострить внимание? У меня похоже как раз такая трабла при доступе из под Винды..
В целях природы обуздания, В целях рассеять неученья тьму.
Берем картину мироздания, да! И тупо смотрим что к чему...
(с) братья Стругацкие
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

Yurik писал(а):
15.09.2006 12:25
Здорово, давно искал такое описание, просто и ясно. Только...
Забегая вперед, скажу, что у меня при тестировании вылезала ошибка, что нельзя
создавать/удалять файлы. Она вылечилась ковырянием SELinux`а, а именно
отключением защиты демонов Samba.

Вот на этом можно заострить внимание? У меня похоже как раз такая трабла при доступе из под Винды..

Надо запустить system-config-securitylevel, там зайти в секцию политики SELinux. Открыть подменю о Самбе. Снять галочки с трех верхних пунктов (защита смбд/нмбд и еще чего-то), но запретить расшаривать пользовательские каталоги. Сохранить.
Кстати, сейчас я ищу более приемлемое решение этой проблемы, чем отключение защиты демонов. Как только решу эту проблему, сразу напишу. А пока можно делать так, как написал. Тем более, что проблем из-за этого не будет, так как Самба сама по себе хорошо защищена, и если, конечно, правильно настроена.
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

HAPKOMAH писал(а):
14.09.2006 12:36
все зделал по тексту, но когда из винды в сетевом окружении конектешсо на линуксовую машину, говорит давай пароль, а нада чтоб тупо заходила без пароля сукьюрити=шаре ! выставлял ! :lol:

Не понял, что ты сказал :) , но могу ткнуть пальцем в небо: это не проблема сервера, поковыряй в виндах настройки експлорера.
Кстати, хотелось бы знать версию мастдая.
Спасибо сказали:

Yurik
Сообщения: 46
ОС: FC6

Re: Как я настраивал Самбу

Сообщение Yurik »

(Liksys @ Sep 17 2006, в 18:06) писал(а):Надо запустить system-config-securitylevel, там зайти в секцию политики SELinux. Открыть подменю о Самбе

Запускаю, у меня настраиваются только параметры брандмауэра, больше ничего нет. Дистрибутив - ASP 10
В целях природы обуздания, В целях рассеять неученья тьму.
Берем картину мироздания, да! И тупо смотрим что к чему...
(с) братья Стругацкие
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

Yurik писал(а):
18.09.2006 11:05
(Liksys @ Sep 17 2006, в 18:06) писал(а):
Надо запустить system-config-securitylevel, там зайти в секцию политики SELinux. Открыть подменю о Самбе

Запускаю, у меня настраиваются только параметры брандмауэра, больше ничего нет. Дистрибутив - ASP 10

А SELinux стоит? Включен? Проверь командой selinuxenabled.
Спасибо сказали:

Yurik
Сообщения: 46
ОС: FC6

Re: Как я настраивал Самбу

Сообщение Yurik »

(Liksys @ Sep 18 2006, в 21:58) писал(а):А SELinux стоит? Включен?

Набрал команду - никакой реакции. Прочитал по man'у что 0 - значит включен. Теперь осталось понять, значит ли 0 отсутствие реакции на команду?
В целях природы обуздания, В целях рассеять неученья тьму.
Берем картину мироздания, да! И тупо смотрим что к чему...
(с) братья Стругацкие
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

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

#!/bin/bash
selinuxenabled
if [ $? -eq 0 ]; then
   echo "SELinux is enabled"
else
   echo "SELinux is disabled"
fi

Понятно?
Спасибо сказали:

~S/E/r/G~
Сообщения: 220
ОС: Debian 4.0

Re: Как я настраивал Самбу

Сообщение ~S/E/r/G~ »

в тему
gtk прилдожение для монтирвования шар
http://pyneighborhood.sourceforge.net/
в новой версии уже есть браузер сетки
debian 4.0: kernel-2.6.18 | Xorg7.2 (fglrx) | Xfce 4.4
Спасибо сказали:

Аватара пользователя
SHar
Сообщения: 181
Статус: Уйду я от вас...
ОС: Arch,FreeBSD,Mac 10.6.4

Re: Как я настраивал Самбу

Сообщение SHar »

Liksys писал(а):
17.09.2006 14:17
HAPKOMAH писал(а):
14.09.2006 12:36

все зделал по тексту, но когда из винды в сетевом окружении конектешсо на линуксовую машину, говорит давай пароль, а нада чтоб тупо заходила без пароля сукьюрити=шаре ! выставлял ! :lol:

Не понял, что ты сказал :) , но могу ткнуть пальцем в небо: это не проблема сервера, поковыряй в виндах настройки експлорера.
Кстати, хотелось бы знать версию мастдая.

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

[public]
        comment = Public Stuff
        path = /public
        write list = @staff
        read only = No
        guest ok = Yes  //чтобы гость ходил nobody

в global должно быть security=share ,samba не должна быть мастером не для чего. Тогда вход без пароля .

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

 smbpasswd -a <user>
----добавление юзера в самбу

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

smbpasswd -e <user>
--user -e (ENABLE)-включен
Спасибо сказали:

Аватара пользователя
stannum
Сообщения: 322
Статус: Свободолюбитель
ОС: Debian GNU/Linux unstable

Re: Как я настраивал Самбу

Сообщение stannum »

Все настроено вроде бы как надо, но при просмотре компа из "Сетевого окружения", т.е. двойным кликом на имени компа, вылазит окошко месажбокс:
Нет доступа к \\gate, возможно у вас нет прав на использование ... блаблабла.

Не найдено имя пользователя.

А если набрать в адресной строке: \\ip-адрес, то все нормально заходит и работает.
Мне нужно, чтобы папка \\gate\Public была доступна всем без исключения, без ввода пароля и прочего - одним словом - файлопомойка.
OS: WыньДОС ХаРэ, 2k, 2k3
Подскажите пожалуйста где грабли? Конфиг прилагаю.
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

Скорее всего глюги с мастербраузером. Попробуй принудительно подключить его на Самбе.
ЗЫ: В моем конфиге, описанном выше, как раз один ресурс и проектировался как файлопомойка. Посмотри как он устроен.
Спасибо сказали:

Mangust
Сообщения: 173
ОС: Ubuntu 8.04

Re: Как я настраивал Самбу

Сообщение Mangust »

А как разрешить множественные подлючения с одного компа?

Ну там к такой шаре такой юзер-пароль, к такой-другие. :)
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

По идее ничего не должно влиять наколичество подключений. Как применять разные пароли - это какая-то вендовая фича, не знаю :blush: При подключении Linux-Linux нармально работает.
Я бы тебе посоветовал обратиться на вендовый форум, там должны знать, как это делается. К Самбе это никакого отношения не имеет.
Спасибо сказали:

Mangust
Сообщения: 173
ОС: Ubuntu 8.04

Re: Как я настраивал Самбу

Сообщение Mangust »

Liksys писал(а):
06.04.2007 16:16
это какая-то вендовая фича, не знаю :blush:


Единственная ссылка по запросу с гугла:
http://www.linux.org.ru/view-message.jsp?msgid=1434883

Да и не очень-то и хотелось. Только на период отладки нужно было. :)
Спасибо сказали:

Аватара пользователя
GodHermes
Сообщения: 68
ОС: openSuSE 11.2 x86_64

Re: Как я настраивал Самбу

Сообщение GodHermes »

Отличная статья! спасибо! респект и уважуха!и
Знать всё невозможно, можно только вовремя находить то что необходимо
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

GodHermes писал(а):
10.04.2007 16:11
Отличная статья! спасибо! респект и уважуха!и

Спасибо! :happy:
Спасибо сказали:

Аватара пользователя
AphexTwin
Сообщения: 100
ОС: Debian4

Re: Как я настраивал Самбу

Сообщение AphexTwin »

Статья на 5+, помогла решить несколько граблей! Спасибо!

Надо бы её в "проэкты" двинуть, не находите? =)
Спасибо сказали:

Аватара пользователя
Liksys
Сообщения: 2910

Re: Как я настраивал Самбу

Сообщение Liksys »

AphexTwin писал(а):
17.04.2007 10:14
Статья на 5+, помогла решить несколько граблей! Спасибо!

Надо бы её в "проэкты" двинуть, не находите? =)

Она есть в проектах))))), я ее просто еще сюда прикрепил :)
Спасибо сказали: