Samba — это… Что такое Samba?

Install winbind

Installing winbind package on Ubuntu 16.04 (Xenial Xerus) is as easy as running the following command on terminal:

sudo apt-get update sudo apt-get install winbind

winbind package information

More information about apt-get install

Advanced Package Tool, or APT, is a free software user interface that works with core libraries to handle the installation and removal of software on Debian, Ubuntu and other Linux distributions. APT simplifies the process of managing software on Unix-like computer systems by automating the retrieval, configuration and installation of software packages, either from precompiled files or by compiling source code.

apt-get is the command-line tool for handling packages, and may be considered the user’s «back-end» to other tools using the APT library.

apt-get install is followed by one or more packages desired for installation or upgrading. Each package is a package name, not a fully qualified filename. All packages required by the package(s) specified for installation will also be retrieved and installed. The /etc/apt/sources.list file is used to locate the desired packages. If a hyphen is appended to the package name (with no intervening space), the identified package will be removed if it is installed. Similarly a plus sign can be used to designate a package to install. These latter features may be used to override decisions made by apt-get’s conflict resolution system.

See Also

How to remove winbind package from Ubuntu 16.04 (Xenial Xerus)

Opening Windows to a Wider World.

How to install winbind on Ubuntu 16.04 (Xenial Xerus)

(слоган на www.samba.org)

Samba — реализация сетевых протоколов Server Message Block (SMB) и Common Internet File System (CIFS). Основное предназначение — расшаривание файлов и принтеров между Linux и Windows системами.

Samba состоит из нескольких демонов, работающих в фоновом режиме и предоставляющих сервисы и ряд инструментов командной строки для взаимодействия со службами Windows:

  • smbd — демон, являющийся SMB-сервером файловых служб и служб печати;
  • nmbd — демон, предоставляющий службы имен NetBIOS;
  • smblient — утилита предоставляет доступ из командной строки к ресурсам SMB. Она также позволяет получить списки общих ресурсов на удаленных серверах и просматривать сетевое окружение;
  • smb.conf — конфигурационный файл, содержащий настройки для всех инструментов Samba;

Список портов, используемых Samba

Порт  Протокол Служба Демон Описание
137 UDP netbios-ns nmbd служба имен NetBIOS
138 UDP netbios-dgm nmbd служба датаграмм NetBIOS
139 TCP netbios-ssn smbd NetBIOS over TCP (служба сеансов)
445 TCP microsoft-ds smbd NetBIOS over TCP (служба сеансов)

Вводная статья про основные принципы расшаривания файлов и принтеров.

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

# под Arch Linux, сервер yaourt -S samba # под Arch Linux, клиент yaourt -S smbclient # под Ubuntu, сервер sudo apt-get install samba samba-common system-config-samba

Скопируем файл с настройками smb.conf

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

По умолчанию создаются ресурсы для домашних каталогов пользователей (раздел homes в smb.conf) и принтеров (раздел printers).

Доступ к ресурсу может быть по паролю или анонимный. Для первого способа есть пара моментов:

  1. пользователь должен существовать в системе (создан с помощью команды и установлен пароль );
  2. пользователь должен быть добавлен как пользователь Samba (с помощью команды );

Просмотр пользователей

sudo pdbedit -L -v

Необходимо что-бы компьютеры принадлежали к одной рабочей группе, в Windows по умолчанию это WORKGROUP, вот её и будем использовать.

Ниже приведен пример простого файла smb.conf с настройками для анонимного доступа к директории /srv/samba/public.

sudo mkdir -p /srv/samba/public sudo chmod -R 0777 /srv/samba/public

Имена параметров не чувствительны к регистру. Для некоторых распространенных параметров существуют синонимы, а для некоторых – антонимы. Например, writable и writeable – это синонимы, а read only – антоним для них, т.е. опция read only = yes эквивалентна опции writable = no.

[global] workgroup = WORKGROUP server string = Samba Server log file = /var/log/samba/%m.log max log size = 50 security = user map to guest = Bad User dns proxy = no # следовать по симлинкам unix extensions = no wide links = yes follow symlinks = yes # utf кодировка dos charset = cp866 unix charset = UTF8 # отключаем принтеры load printers = no show add printer wizard = no printcap name = /dev/null disable spoolss = yes # hosts allow = 127. 192.168.24. # по умолчанию все файлы, начинающиеся с точки будут иметь атрибут «скрытый» hide dot files = yes [public] comment = public folder path = /home/proft/public read only = no locking = no browsable = yes # разрешить гостевой доступ guest ok = yes force user = nobody force group = nobody # guest only = yes # create mode = 0777 # directory mode = 0777 # разрешить доступ только user1, user2 # valid users = user1, user2

Проверим корректность настроек с помощью команды

testparm -s

Опция указывает выводить также значения по умолчанию.

Запустим Samba-сервер

# под Arch Linux sudo systemctl start smbd # под Ubuntu, сервер sudo service start smbd

Проверим подключению к Samba на порт 139 с помощью

telnet 192.168.24.100 139

В Samba имеется ряд параметров, связанных с аутентификацией пользователей. Наиболее важным из них является параметр security, который может принимать пять различных значений источник:

  • share — этот режим безопасности эмулирует метод аутентификации, используемый операционными системами Windows 9x/Windows Me. В этом режиме имена пользователей игнорируются, а пароли назначаются общим ресурсам. В этом режиме Samba пытается использовать предоставленный клиентом пароль, которым могут пользоваться разные пользователи.
  • user* — этот режим безопасности установлен по умолчанию и использует для аутентификации имя пользователя и пароль, как это обычно делается в Linux. В большинстве случаев в современных операционных системах пароли хранятся в зашифрованной базе данных, которую использует только Samba.
  • server — этот режим безопасности используется тогда, когда необходимо, чтобы Samba выполняла аутентификацию, обращаясь к другому серверу. Для клиентов этот режим выглядит так же, как аутентификация на уровне пользователя (режим user), но фактически для выполнения аутентификации Samba обращается
    к серверу, указанному в параметре password server.
  • domain — используя этот режим безопасности, вы можете полностью присоединиться к домену Windows; для клиентов это выглядит так же, как аутентификация на уровне пользователя. В отличие от аутентификации на уровне сервера, доменная аутентификация использует более защищенный обмен паролями на уровне домена. Для полного присоединения к домену требуется выполнить дополнительные команды в системе Samba и, возможно, на контроллере домена.
  • ads — этот режим безопасности похож на метод аутентификации в домене, но требует наличия контроллера домена Active Directory Domain Services.

Полный список параметров Samba есть в manpages.

Выше был приведен пример с доступом для директории с общим доступом. Рассмотрим еще пример с приватной директорией, к которой доступ только по логину и паролю.

Создадим группу и добавим в нее пользователя

sudo groupadd smbgrp sudo usermod -a -G smbgrp proft

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

sudo mkdir -p /srv/samba/proft sudo chown -R proft:smbgrp /srv/samba/proft sudo chmod -R 0770 /srv/samba/proft

Создадим samba-пользователя

sudo smbpasswd -a proft

Добавим в /etc/samba/smb.conf новый ресурс

[proft] path = /srv/samba/proft valid users = @smbgrp guest ok = no writable = yes browsable = yes

Перезапустим сервер

sudo systemctl restart smbd

Пример настройки ресурса в котором есть симлинк на папку пользователя (/srv/samba/media/video » /home/proft/video)

[media] path = /srv/samba/media guest ok = yes read only = yes browsable = yes force user = proft

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

Просмотр общих ресурсов компьютера

smbclient -L 192.168.24.101 -U%

Еще один способ подключения для анонимного пользователя с командной строкой

smbclient -U nobody //192.168.24.101/public ls

Если на сервере настроен более высокий уровень безопасности, то может потребоваться передать имя пользователя или домена с помощью параметров и соответственно.

smbclient -L 192.168.24.101 -U proft -W WORKGROUP

Монтирование samba-ресурса

# создание точки монтирования mkdir -p ~/shares/public # монтирование ресурса # для анонимного пользователя nobody mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=nobody,password=,workgroup=WORKGROUP,ip=192.168.24.101,utf8 # для пользователя proft mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,password=1,workgroup=WORKGROUP,ip=192.168.24.101,utf8

Еще лучше пароли хранить в отдельном файле

# sudo vim /etc/samba/sambacreds username=proft password=1 username=noboy password=

Выставим права доступа 0600

sudo chmod 0600 /etc/samba/sambacreds

Новая строка для монтирования

mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101

И пример для /etc/fstab

//192.168.24.101/public /home/proft/shares/public cifs noauto,username=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101 0 0

Открыть ресурс в файловом менеджере Nautilus/Nemo/etc можно по такому пути smb://192.268.24.101.

Если Nemo пишет Nemo cannot handle «smb» locations. значит не хватает пакета gvfs-smb.

Доступ к серверу с Windows и Android клиента

Под Windows узнать рабочую группу с консоли можно с помощью

net config workstation

Открыть ресурсы на удаленной машине можно набрав в строке Explorer (Проводник) или в Run (Start — Run) UNC-адрес: \192.168.24.101.

Под Android подключится к серверу можно с помощью ES File Explorer, на вкладке Network добавляем сервер, просто по IP (без указания схемы, smb). После чего можно открывать расшаренные ресурсы. Для статистики: HDRIP-фильм идет без подтормаживания.

Дополнительное чтиво

blog comments powered by

!!!

За что отвечают и для чего нужны ldap, kerberos, winbind и sssd?

Перезагрузить клиентов и сервисы

На UNIX системе

gate# net ads keytab create -U Administrator # !!! May be no need gate# net ads keytab add HTTP -U Administrator gate# net ads keytab add imap -U Administrator gate# net ads keytab add cifs -U Administrator gate# net ads keytab add xmpp -U Administrator # Not work in openfire 🙁 freebsd# ktutil list или linux# klist -ek /etc/krb5.keytab

На контроллере домена

Проверка:

C:\>setspn -L gate

Использование WINBIND в библиотеке PAM

FreeBSD

[gate:~] # cat /etc/pam.d/sshd … auth sufficient /usr/local/lib/pam_winbind.so auth required pam_unix.so no_warn try_first_pass

Ubuntu

root@gate:~# more /etc/pam.d/sshd … auth sufficient pam_winbind.so # Standard Un*x authentication. …

Авторизация

Авторизация в режиме ADS/DOMAIN

gate# cat smb.conf[global] … winbind use default domain = Yes winbind enum users = yes winbind enum groups = yes winbind cache time = 36 idmap config * : range = 20000-40000 template homedir = /home/%U template shell = /bin/shfreebsd# service samba_server restart или ubuntu# service winbind restart

Использование WINBIND в библиотеке NSSWITCH

gate# wbinfo -n user1 gate# wbinfo -S … gate# wbinfo -i user1gate# apt install libnss-winbind gate# cat /etc/nsswitch.conf debian# service nscd restart debian# service nscd reload… group: files winbind passwd: files winbind #shadow: files winbind #for linux #gshadow: files winbind #for linux …gate# id user1 gate# getent passwdgate# getent group gate# chown -R user1:'domain users' /home/user1/ gate# chown user1 /var/mail/user1 gate# chown -R user2:'domain users' /home/user2/ gate# chown user2 /var/mail/user2

Дополнительные материалы

Регистрация unix системы в домене в режиме DOMAIN

gate# cat smb.conf [global] workgroup = CORPX security = DOMAIN winbind use default domain = Yes [gate:~] # /usr/local/etc/rc.d/samba stop или root@gate:~# /etc/init.d/winbind stop gate# net rpc join -U root Administrators's password: Joined domain CORPX [gate:~] # /usr/local/etc/rc.d/samba start или root@gate:~# /etc/init.d/winbind start gate# wbinfo -t gate# wbinfo -u gate# wbinfo -g

Аутентификация в режиме DOMAIN

gate# ntlm_auth —username=user1 password: NT_STATUS_OK: Success (0x0)

Как ввести Ubuntu/Debian/Linux в домен Windows?

Имеем Ubuntu Server 12.04 и контроллер домена Windows Server 2008 R2. Введем сервер Ubuntu в домен Windows.

Обновимся:

# apt-get update

# apt-get upgrade
Установим нужный софт:

# apt-get install krb5-user samba winbind

Настроим корректно DNS. Допустим на нашем сервере с ubuntu две сетевые карты, одна в мир, другая в локалку.
В /etc/network/interfaces у интерфейса, который смотрит в мир пропишем днс-сервер провайдера:

iface eth0 inet static
address 144.16.0.55
netmask 255.255.255.0
network 144.16.0.0
broadcast 144.16.0.255
gateway 142.16.0.1
dns-nameservers 12.145.44.1

Дальше добавим DNS-записи в /etc/resolvconf/resolv.conf.d/head :

 domain testdomen.local  #наш домен
search testdomen.local  #наш домен
nameserver 10.0.0.3     #контроллер домена (dns-server)

Перезапускаем систему подсети:

# /etc/init.d/networking restart

Теперь нужно проверить, пингуется ли наш контроллер по имени. Если да, то идем дальше.

Настройка синхронизации времени с контроллером домена

Синхронизируем время с контроллером:

# ntpdate -q 10.0.0.3

или

# ntpdate testserver

Теперь настраиваем авторизацию через Kerberos. Правим /etc/krb5.conf
Моя конфигурация:

[libdefaults]
default_realm = TESTDOMEN.LOCALkrb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true

v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true

[realms]
TESTDOMEN.LOCAL = {
kdc = 10.0.0.3                        #ip контроллера
admin_server = 10.0.0.3       #ip контроллера
}

[domain_realm]
.testdomen.local = TESTDOMEN.LOCAL
testdomen.local = TESTDOMEN.LOCAL

[login]
krb4_convert = false
krb4_get_tickets = false

В этих настройках важен регистр написания имени домена.

Пробуем авторизоваться в домене:

# kinit admin@TESTDOMEN.LOCAL

admin — логин существующего пользователя домена.

Отсутствие ошибок означает правильность настройки. Проверим список полученных билетов Kerberos:

# klist

Распространенные ошибки:
Ошибка kinit(v5): Clock skew too great while getting initial credentials
Нужно синхронизировать время с контроллером домена командой, написанной вначале статьи.

Winbindd NSS Samba Linux

И не важно, что оно совпадает или почти совпадает.

Ошибка kinit(v5): Preauthentication failed while getting initial credentials
Введен неправильный пароль юзера.

Ошибка kinit(v5): KDC reply did not match expectations while getting initial credentials
Проверить правильность конфига /etc/krb5.conf

Ошибка kinit(v5): Client not found in Kerberos database while getting initial credentials
Нет такого пользователя в домене

Конфигурирование Samba
Правим конфиг самбы /etc/samba/smb.conf
Мой конфиг:

[global]
workgroup = TESTDOMEN
realm = TESTDOMEN.LOCAL
server string = %h server (Samba, Ubuntu)
dns proxy = no
socket options = TCP_NODELAY
domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no#### Debugging/Accounting ####

log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d

####### Authentication #######
security = ADS
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user

Настройка Winbind

Добавляем в /etc/samba/smb.conf в секцию [global] следующее:

idmap uid = 10000 — 40000
idmap gid = 10000 — 40000
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
winbind refresh tickets = yes

Чтобы Ubuntu прозрачно работала с пользователями домена (к примеру, назначение пользователей домена владельцами папок и файлов), нужно указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах. Изменяем в /etc/nsswitch.conf пару строк:

passwd: compat winbind
group: compat winbind

Ввод сервера Ubuntu в домен Windows

Стартуем нужные сервисы:

# service smbd start
# service winbind start
# service nmbd start

Вводим машину в домен:

# net ads join -U admin -D TESTDOMEN

admin — администратор домена

Всё, ubuntu в домене.

Рестартуем нужные сервисы:

# service smbd restart
# service winbind restart
# service nmbd restart

Проверяем, может ли ubuntu server получить список юзеров или групп домена:

# wbinfo -g
# wbinfo -u

Если работает, то теперь все готово для того, чтобы настроить Squid 🙂

Запись опубликована автором MishLen в рубрике Система (Linux) с метками samba. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *