# Samba (Русский)

Ссылки по теме

- Samba/Советы и трюки
- Samba/Решение проблем
- Улучшенное распространение файлов с KDE4
- Контроллер домена Samba
- Интеграция Active Directory
- Samba 4 контроллер домена Active Directory
- Сервер OpenChange
- NFS

Samba - это реализация сетевого протокола SMB/CIFS. Эта программа облегчает организацию общего доступа к файлам и принтерам из систем Linux и Windows и является альтернативой NFS. Некоторые пользователи говорят, что Samba легко и очень просто настраивается. Однако, много новых пользователей сталкиваются с проблемами, связанными с ее сложностью и неинтуитивностью. Советуем строго придерживаться указаний, данных в этой статье.

## Настройка сервера

Для обеспечения общего доступа к файлам при помощи Samba установите пакет samba из официальных репозиториев.

Сервер Samba настраивается в файле `/etc/samba/smb.conf`. Скопируйте файл настроек по умолчанию в файл `/etc/samba/smb.conf`:

    # cp /etc/samba/smb.conf.default /etc/samba/smb.conf

### Создание ресурсов для общего доступа

Откройте файл `/etc/samba/smb.conf` и прокрутите текст вниз до секции Share Definitions. В конфигурации по умолчанию автоматически предоставляется общий доступ к домашним каталогам всех пользователей. Также по умолчанию он предоставляется для принтеров.

Здесь есть несколько закомментированных примеров конфигурации. Больше информации о доступных опциях для ресурсов с общим доступом можно найти на странице руководства `man smb.conf`, которая также доступна в онлайн версии.

Со стороны Windows не забудьте изменить файл `smb.conf` для Windows Workgroup (в Windows по умолчанию: WORKGROUP).

Удостоверьтесь, что ваша машина не называется Localhost, поскольку в этом случае Windows присвоит 127.0.0.1.

### Запуск сервисов

Запустите сервисы smbd и nmbd, чтобы предоставить общий доступ с использованием SMB:

    # systemctl start smbd
    # systemctl start nmbd

Если вы хотите добавить Samba в автозагрузку, включите демоны `smbd` и `nmbd`.

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

    systemctl disable smbd.service
    systemctl enable smbd.socket

### Создание путей для общего доступа

Эти команды помечают называемые объекты для автоматического экспорта в рабочее окружение:

    # export USERSHARES_DIR="/var/lib/samba/usershare"
    # export USERSHARES_GROUP="sambashare"

Эта команда создает необходимый каталог в var/lib/samba:

    # mkdir -p ${USERSHARES_DIR}

Эта команда создает группу sambashare:

    # groupadd ${USERSHARES_GROUP}

Эта команда меняет владельца и группу каталога, который вы только что создали, на суперпользователя:

    # chown root:${USERSHARES_GROUP} ${USERSHARES_DIR}

Эта команда меняет разрешения каталога usershares таким образом, что пользователи, входящие в группу sambashare, могут читать, записывать и выполнять файлы:

    # chmod 1770 ${USERSHARES_DIR}

Задайте эти переменные в конфигурационном файле `smb.conf`:

    /etc/samba/smb.conf

    ...
    [global]
      usershare path = /var/lib/samba/usershare
      usershare max shares = 100
      usershare allow guests = yes
      usershare owner only = False
      ...

Сохраните файл, а затем добавьте вашего пользователя в группу sambashares, заменив ваше_имя_пользователя на имя вашего пользователя:

    # usermod -a -G ${USERSHARES_GROUP} ваше_имя_пользователя

Перезапустите демоны `smbd` и `nmbd`.

Завершите сеанс и войдите в него вновь. Теперь у вас должна появиться возможность настраивать общий доступ samba, используя графический интерфейс. Например, в Thunar вы можете нажать правую кнопку мыши на любом каталоге и предоставить для него общий доступ в сети. Если появится сообщение об ошибке `You are not the owner of the folder`, просто попробуйте перезагрузить систему.

### Добавление пользователя

Чтобы подключиться к ресурсам общего доступа Samba, необходим samba-пользователь. Пользователь УЖЕ ДОЛЖЕН иметь на сервере аккаунт Linux-пользователя с тем же именем, иначе выполнение следующей команды не даст результата:

    # pdbedit -a -u пользователь

Обратите внимание: Начиная с версии 3.4.0 smbpasswd не используется по умолчанию. Существующие базы данных smbpasswd могут быть преобразованы в новый формат

### Смена пароля

Чтобы сменить пароль пользователя, используйте `smbpasswd`:

    # smbpasswd имя_пользователя

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

Для доступа к файлам с использованием сервера Samba/SMB/CIFS необходим только пакет smbclient. Он также доступен в официальных репозиториях.

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

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

### Ручное монтирование

Установите пакет smbclient из официальных репозиториев. Если вы хотите более легкий подход и не нуждаетесь в возможности вывода списка общедоступных ресурсов, необходимо установить только cifs-utils, чтобы предоставить файл `/usr/bin/mount.cifs`.

Чтобы вывести список общедоступных ресурсов на сервере:

    $ smbclient -L hostname -U%

Создать точку монтирования для ресурса:

    # mkdir /mnt/точка_монтирования

Примонтируйте ресурс, используя в качестве образца файл `mount.cifs`. Не все опции из перечисленных ниже необходимы или хороши (например, `password`).

    # mount -t cifs //СЕРВЕР/имя_ресурса /mnt/точка_монтирования -o user=имя_пользователя,password=пароль,workgroup=рабочая_группа,ip=IP_сервера

SERVER

  Имя системы Windows.

имя_ресурса

  Каталог общего доступа.

точка_монтирования

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

`-o [options]`

  Смотрите страницу руководства `man mount.cifs` для получения информации.

Обратите внимание:

- Воздержитесь от использования слэша `/` на конце. `//СЕРВЕР/имя_ресурса/` не будет работать
- Если примонтированный вами ресурс работает нестабильно или зависает (freeze), попробуйте включить другую версию протокола SMB, используя опцию `vers=`. Например, `vers=2.0` для Windows Vista.

#### Добавление ресурса в /etc/fstab

Самый простой способ добавить запись в fstab - использовать что-то вроде этого:

    /etc/fstab

    //СЕРВЕР/имя_ресурса /mnt/точка_монтирования cifs username=имя_пользователя,password=пароль 0 0

Однако, хранение паролей в легкочитаемом файле не рекомендуется! Более безопасным методом является использование файла полномочий. Например, создайте файл и выполните команду `chmod 600 имя_файла`, в результате чего только пользователь-владелец файла сможет читать и писать в него. Файл должен содержать следующую информацию:

    /путь/к/полномочиям/sambacreds

    username=имя_пользователя
    password=пароль

а запись в вашем fstab должна выглядеть примерно так:

    /etc/fstab

    //СЕРВЕР/ИМЯ_РЕСУРСА /mnt/точка_монтирования cifs credentials=/путь/к/полномочиям/sambacreds 0 0

При использовании systemd (современные установки) можно использовать опцию `comment=systemd.automount`, которая увеличивает скорость загрузки сервиса на несколько секунд. Также можно указать текущего пользователя и группу, чтобы сделать жизнь немного проще, используя опции `uid` и `gid`.

Важно: Использование опций `uid` и `gid` может вызвать ошибки ввода-вывода в программах, пытающихся получить данные с сетевых устройств

    /etc/fstab

    //СЕРВЕР/ИМЯ_РЕСУРСА /mnt/точка_монтирования cifs credentials=/путь/к/полномочиям,comment=systemd.automount,uid=имя_пользователя,gid=группа_пользователя 0 0

Обратите внимание: Пробелы в именах ресурсов должны быть заменены на `\040` (восьмеричный ASCII-код для пробелов). Например, `//СЕРВЕР/имя ресурса` должно быть заменено на `//СЕРВЕР/имя\040ресурса` в `/etc/fstab`

#### Монтирование пользователями

    /etc/fstab

    //СЕРВЕР/ИМЯ_РЕСУРСА /mnt/точка_монтирования cifs users,credentials=/путь/к/полномочиям,workgroup=рабочая_группа,ip=IP_сервера 0 0

Обратите внимание: Необходимо писать users (во множественном числе). Для других типов файловых систем, обрабатываемых командой `mount`, эта опция обычно имеет вид user, без "s"

Это позволит пользователям монтировать ресурс, если точка монтирования находится в каталоге, владельцами которого они являются, например, в свою домашнюю директорию. Чтобы пользователи могли монтировать и размонтировать ресурсы Samba в точках монтирования, владельцами которых они не являются, используйте smbnetfs или дайте им необходимые привилегии с помощью sudo.

### Имена хостов WINS

Пакет smbclient предоставляет драйвер для использования имен хостов WINS. Чтобы его включить, добавьте “wins” в строку “hosts” файла /etc/nsswitch.conf.

### Автоматическое монтирование

Есть несколько способов легко просматривать ресурсы общего доступа:

#### smbnetfs

Обратите внимание: для smbnetfs необходима целая (нетронутая?) (intact) установка сервера Samba. Смотрите выше, как это сделать

Для начала удостоверьтесь, что вам доступны все ресурсы, которые вам нужны для монтирования:

    $ smbtree -U удаленный_пользователь

Если это не работает, найдите и измените следующую строку в `/etc/samba/smb.conf` подобным образом:

    domain master = auto

Теперь перезапустите демоны `smbd` и `nmbd`.

Если все работает, как и ожидалось, установите пакет smbnetfs из официальных репозиториев.

Затем добавьте следующую строку в файл `/etc/fuse.conf`:

    user_allow_other

и загрузите модуль ядра `fuse`:

    # modprobe fuse

Скопируйте каталог /etc/smbnetfs/.smb в вашу домашнюю директорию:

    $ cp -a /etc/smbnetfs/.smb ~

Затем создайте ссылку на файл smb.conf:

    $ ln -s /etc/samba/smb.conf ~/.smb/smb.conf

Если для доступа к некоторым общим каталогам необходимы имя пользователя и пароль, отредактируйте файл `~/.smb/smbnetfs.auth`, включив одну или несколько записей, как эта:

    ~/.smb/smbnetfs.auth

    auth			"hostname" "имя_пользователя" "пароль"

Также возможно добавление записей для специфичных хостов, чтобы они были примонтированы smbnetfs, если это необходимо. Больше информации можно найти в `~/.smb/smbnetfs.conf`.

Когда вы закончите настройку, необходимо выполнить

    $ chmod 600 ~/.smb/smbnetfs.*

В противном случае smbnetfs пожалуется: 'insecure config file permissions'.

Наконец, чтобы примонтировать сетевое окружение Samba в каталог по вашему выбору, выполните

    $ smbnetfs точка_монтирования

##### Демон

Пакет в Arch Linux также поддерживает дополнительный "общесистемный" режим для smbnetfs. Чтобы его включить, вам необходимо выполнить указанные изменения в каталоге `/etc/smbnetfs/.smb`.

Затем вы можете запустить и/или включить в автозагрузку демон `smbnetfs` обычным способом. Общесистемной точкой монтирования является `/mnt/smbnet/`.

#### fusesmb

Обратите внимание: Поскольку `smbclient 3.2.X` неисправен с `fusesmb`, возвратитесь к использованию более старых версий, если это необходимо. Смотрите соответствующую тему форума для получения подробностей

1. Установите fusesmb, доступный в AUR
2. Создайте точку монтирования: `mkdir /mnt/fusesmb`
3. Загрузите модуль ядра `fuse`
4. Примонтируйте ресурсы:

       fusesmb -o allow_other /mnt/fusesmb

#### autofs

Смотрите статью Autofs для получения информации об автомонтировщике ядра (kernel-based) Linux.

### Настройка файлового менеджера

#### Nautilus, Nemo, Thunar и PCManFM

Чтобы получить доступ к ресурсам samba через Nautilus, Nemo, Thunar или PCManFM, установите пакет gvfs-smb, доступный в официальных репозиториях.

Нажмите `Ctrl+l` и введите `smb://имя_сервера/ресурс` в панель адреса, чтобы получить доступ к ресурсу.

Примонтированный ресурс, вероятно, будет представлен по пути `/run/user/ваш_UID/gvfs` в файловой системе.

#### KDE

KDE имеет встроенную возможность просмотра ресурсов Samba, в этом случае нет необходимости в дополнительных пакетах. Однако, для графического интерфейса в Системных Настройках KDE установите пакет kdenetwork-filesharing из официальных репозиториев.

Если при использовании Dolphin вы получите ошибку "Time Out", необходимо раскомментировать и отредактировать эту строку в файле smb.conf:

    name resolve order = lmhosts bcast host wins

как показано на этой странице.

#### Другие графические окружения

Есть несколько полезных программ, но им могут требоваться пакеты, созданные для них. Это может быть сделано с помощью Arch package build system. Хорошая новость заключается в том, что они не нуждаются в особом окружении, устанавливаемом для их поддержки, так что они "тянут" за собой меньше пакетов.

- pyneighborhood доступен в официальных репозиториях
- Плагины LinNeighborhood, RUmba, xffm-samba для Xffm недоступен в официальных репозиториях или в AUR. Поскольку они не поддерживаются официально (или поддерживаются, но неофициально), они могут быть устаревшими и не работать в полной мере

## Смотрите также

- Samba: An Introduction
- Официальный сайт Samba

## Больше информации

- Samba Samba (German) (archlinux.de)
- Ускорение работы Samba

Categories:

- Networking (Русский)
- File systems (Русский)
- Русский