Андрей Смирнов
Время чтения: ~20 мин.
Просмотров: 0

Smbv1 не устанавливается по умолчанию в windows 10 версии 1709, windows server версии 1709 и более поздних версиях.smbv1 is not installed by default in windows 10 version 1709, windows server version 1709 and later versions

Версии протокола SMB в Windows

SMB (Server Message Block, иногда называется LAN-Manager) это сетевой протокол для удаленного доступа к файлам, принтерам и другим сервисам. Для подключения используется порт TCP 445. Различные версии протокола SMB появлялись в следующих версиях Windows:

  • CIFS — Windows NT 4.0
  • SMB 1.0 — Windows 2000
  • SMB 2.0 — Windows Server 2008 и WIndows Vista SP1
  • SMB 2.1 — Windows Server 2008 R2 и Windows 7
  • SMB 3.0 — Windows Server 2012 и Windows 8  (появилась поддержка SMB шифрования)
  • SMB 3.02 — Windows Server 2012 R2 и Windows 8.1
  • SMB 3.1.1 – Windows Server 2016 и Windows 10

При сетевом взаимодействии по протоколу SMB между клиентом и сервером используется максимальная версия протокола, поддерживаемая одновременно и клиентом, и сервером.

Ниже представлена сводная таблица, по которой можно определить версию протокола SMB, которая выбирается при взаимодействии разных версий Windows:

Операционная система Win 10, Server 2016 Windows 8.1,Server 2012 R2 Windows 8,Server 2012 Windows 7,Server 2008 R2 Windows Vista,Server 2008 Windows XP, Server 2003 и ниже
Windows 10 ,Windows Server 2016 SMB 3.1.1 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8.1 ,Server 2012 R2 SMB 3.02 SMB 3.02 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 8 ,Server 2012 SMB 3.0 SMB 3.0 SMB 3.0 SMB 2.1 SMB 2.0 SMB 1.0
Windows 7,Server 2008 R2 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.1 SMB 2.0 SMB 1.0
Windows Vista,Server 2008 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 2.0 SMB 1.0
Windows XP, 2003 и ниже SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0 SMB 1.0

К примеру, при подключении клиентского компьютера с Windows 7 к файловому серверу с Windows Server 2012 R2 будет использоваться протокол SMB 2.1.

Совет. Определить версию протокола SMB, по которой клиент взаимодействует с сервером можно с помощью команды помощью Powershell:

Чтобы на стороне сервера вывести список используемых клиентами версий протокола SMB и количество клиентов, используемых ту или иную версию протокола SMB, выполните команду:

В нашем примере имеется 825 клиентов, подключенных к серверу с помощью SMB 2.1 (Win 7 / 2008 r2) и 12 клиентов через SMB 3.02 (Win 8.1/ 2012 r2.

Согласно таблице Windows XP, Windows Server 2003 для доступа к общим файлам и папкам на сервере могут использовать только SMB 1.0, который в новых версиях Windows Server (2012 R2 / 2016) может быть отключен.  Таким образом, если в вашей инфраструктуре одновременно используются компьютеры с Windows XP (снятой с поддержки), Windows Server 2003 / R2 и сервера с Windows Server 2012 R2 / Server 2016, нужно понимать, что устаревшие клиенты не смогут получить доступ к файлам и папкам на файловом сервере с новой ОС. А в том случае, если в Windows Server 2016 / 2012 R2 с отключенным SMB 1.0 используется в качестве контроллера домена, то это означает, что клиенты на Windows XP / Server 2003 не смогут выполнить логон скрипты (NETLOGON) и некоторые групповые политики, хранящиеся в сетевых папках на контроллерах домена (например, при использовании централизованного хранилища admx-шаблонов). На старых клиентах при попытке подключиться к ресурсу на файловом сервере с отключенным SMB v1 появляется ошибка:

The specified network name is no longer available

API

The SMB2 class is the constructor of your SMB2 client.

the parameter accepts this list of attributes:

  • (mandatory): the share you want to access
  • (mandatory): the domain of which the user is registred
  • (mandatory): the username of the user that access the share
  • (mandatory): the password
  • (optional): default , the port of the SMB server
  • (optional): default , the number of simulatanous packet when writting / reading data from the share
  • (optional): default , the timeout in milliseconds before to close the SMB2 session and the socket, if setted to the connection will never be closed unless you do it

Example:

varSMB2=require('smb2');var smb2Client =newSMB2({  share'\\\\000.000.000.000\\c$', domain'DOMAIN', username'username', password'password!'});

Asynchronous readdir(3). Reads the contents of a directory. The callback gets two arguments (err, files) where files is an array of the names of the files in the directory excluding ‘.’ and ‘..’.

Example:

smb2Client.readdir('Windows\\System32',function(err,files){if(err)throw err;console.log(files);});
  • String
  • Object
  • Function

Asynchronously reads the entire contents of a file. Example:

smb2Client.readFile('path\\to\\my\\file.txt',function(err,data){if(err)throw err;console.log(data);});

The callback is passed two arguments (err, data), where data is the contents of the file.

If no encoding is specified, then the raw buffer is returned.

  • String
  • String | Buffer
  • Object
  • Function

Asynchronously writes data to a file, replacing the file if it already exists. data can be a string or a buffer.

The encoding option is ignored if data is a buffer. It defaults to ‘utf8’.

Example:

smb2Client.writeFile('path\\to\\my\\file.txt','Hello Node',function(err){if(err)throw err;console.log('It\'s saved!');});

Asynchronous mkdir(2). No arguments other than a possible exception are given to the completion callback. mode defaults to 0777.

Example:

smb2Client.mkdir('path\\to\\the\\folder',function(err){if(err)throw err;console.log('Folder created!');});

Asynchronous rmdir(2). No arguments other than a possible exception are given to the completion callback.

Example:

smb2Client.rmdir('path\\to\\the\\folder',function(err){if(err)throw err;console.log('Folder deleted!');});

Test whether or not the given path exists by checking with the file system. Then call the callback argument with either true or false. Example:

smb2Client.exists('path\\to\\my\\file.txt',function(err,exists){if(err)throw err;console.log(exists ?"it's there""it's not there!");});

Asynchronous unlink(2). No arguments other than a possible exception are given to the completion callback.

smb2Client.unlink('path\\to\\my\\file.txt',function(err){if(err)throw err;console.log("file has been deleted");});

Asynchronous rename(2). No arguments other than a possible exception are given to the completion callback.

smb2Client.rename('path\\to\\my\\file.txt','new\\path\\to\\my\\new-file-name.txt',function(err){if(err)throw err;console.log("file has been renamed");});

This function will close the open connection if opened, it will be called automatically after ms of no SMB2 call on the server.

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

Настройка Samba-сервера выполняется в несколько этапов. Так как все данные пользователей и машин хранятся в LDAP, вначале неободимо выполнить настройку OpenLDAP-сервера, а затем — настройку LDAP для хранения учётных записей пользователей Linux. Это необходимо для работы Linux-клиентов. После этого можно настроить Samba-сервер.

Настройка Samba

Перед настройкой Samba-сервера настройте LDAP для хранения учётных записей Unix-пользователей. Для этого выполните:

cl-setup unix

 * ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы и базу данных сервиса LDAP.
 Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes

 * Добавлен ldif файл ...                                                                                        
 * Unix сервис сконфигурирован ...                                                                               

Для настройки Samba-сервера выполните:

cl-setup samba

 * ПРЕДУПРЕЖДЕНИЕ: Выполнение этой программы изменит конфигурационные файлы Samba сервиса.
 Если вы готовы продолжить выполнение программы, введите 'yes', если нет - 'no': yes

 * Добавлен ldif файл ...                                                                                        
 * Запускается Samba ...                                                                                         
 * Пользователь client добавлен в Unix сервис
 * Пользователь client добавлен в Samba сервис
 * Пользователь admin добавлен в Unix сервис
 * Пользователь admin добавлен в Samba сервис
 * Samba сервис сконфигурирован ...                                                                              

В качестве параметров вы можете указать netbios и workgroup.

  • — устанавливает имя NetBIOS, под которым будет работать Samba сервер. По умолчанию оно устанавливается равным первому компоненту DNS-имени хоста.
  • — имя домена или рабочей группы NT для компьютеров, которые будут получать доступ к этому серверу.

Задайте пароль администратора (пользователь с логином ):

cl-passwd —smb admin samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя admin Samba сервиса изменен

Заметка

Пользователь используется только для ввода клиентского компьютера с ОС Windows в домен. Admin не имеет домашней директории.

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

Пример создания администратора домена:

cl-useradd -p —gid «Domain Admins» -c «Администратор домена» d_admin samba

Новый SMB пароль:
Повторите новый SMB пароль:
* Пользователь d_admin добавлен в Unix сервис
* Пользователь d_admin добавлен в Samba сервис

Добавление и удаление пользователей

Для работы с пользователями используйте аналоги стандартных Unix-команд: , , , , , , . Синтаксис этих команд будет во многом совпадать с одноименными системными утилитами.

Для примера добавьте пользователя test и задайте ему пароль:

cl-useradd test samba

* Пользователь test добавлен в Unix сервис
* Пользователь test добавлен в Samba сервис

cl-passwd test samba

Новый пароль:
Повторите новый пароль:
* Пароль пользователя Unix сервиса изменен
* Пароль пользователя test Samba сервиса изменен

API

The SMB2 class is the constructor of your SMB2 client.

the parameter accepts this list of attributes:

  • (mandatory): the share you want to access
  • (mandatory): the domain of which the user is registred
  • (mandatory): the username of the user that access the share
  • (mandatory): the password
  • (optional): default , the port of the SMB server
  • (optional): default , the number of simulatanous packet when writting / reading data from the share
  • (optional): default , the timeout in milliseconds before to close the SMB2 session and the socket, if setted to the connection will never be closed unless you do it

Example:

varSMB2=require('smb2');var smb2Client =newSMB2({  share'\\\\000.000.000.000\\c$', domain'DOMAIN', username'username', password'password!'});

Asynchronous readdir(3). Reads the contents of a directory. The callback gets two arguments (err, files) where files is an array of the names of the files in the directory excluding ‘.’ and ‘..’.

Example:

smb2Client.readdir('Windows\\System32',function(err,files){if(err)throw err;console.log(files);});
  • String
  • Object
  • Function

Asynchronously reads the entire contents of a file. Example:

smb2Client.readFile('path\\to\\my\\file.txt',function(err,data){if(err)throw err;console.log(data);});

The callback is passed two arguments (err, data), where data is the contents of the file.

If no encoding is specified, then the raw buffer is returned.

  • String
  • String | Buffer
  • Object
  • Function

Asynchronously writes data to a file, replacing the file if it already exists. data can be a string or a buffer.

The encoding option is ignored if data is a buffer. It defaults to ‘utf8’.

Example:

smb2Client.writeFile('path\\to\\my\\file.txt','Hello Node',function(err){if(err)throw err;console.log('It\'s saved!');});

Asynchronous mkdir(2). No arguments other than a possible exception are given to the completion callback. mode defaults to 0777.

Example:

smb2Client.mkdir('path\\to\\the\\folder',function(err){if(err)throw err;console.log('Folder created!');});

Asynchronous rmdir(2). No arguments other than a possible exception are given to the completion callback.

Example:

smb2Client.rmdir('path\\to\\the\\folder',function(err){if(err)throw err;console.log('Folder deleted!');});

Test whether or not the given path exists by checking with the file system. Then call the callback argument with either true or false. Example:

smb2Client.exists('path\\to\\my\\file.txt',function(err,exists){if(err)throw err;console.log(exists ?"it's there""it's not there!");});

Asynchronous unlink(2). No arguments other than a possible exception are given to the completion callback.

smb2Client.unlink('path\\to\\my\\file.txt',function(err){if(err)throw err;console.log("file has been deleted");});

Asynchronous rename(2). No arguments other than a possible exception are given to the completion callback.

smb2Client.rename('path\\to\\my\\file.txt','new\\path\\to\\my\\new-file-name.txt',function(err){if(err)throw err;console.log("file has been renamed");});

This function will close the open connection if opened, it will be called automatically after ms of no SMB2 call on the server.

Returns a read stream on the file. Unlike fs.createReadStream, this function is asynchronous, as we need use asynchronous smb requests to get the stream.

Example:

smb2Client.createReadStream('path\\to\\the\\file',function(err,readStream){if(err)throw err;var writeStream =fs.createWriteStream('localFile')readStream.pipe(writeStream)});

Returns a write stream on the file. Unlike fs.createWriteStream, this function is asynchronous, as we need use asynchronous smb requests to get the stream.

Example:

smb2Client.createWriteStream('path\\to\\the\\file',function(err,readStream){if(err)throw err;var readStream =fs.createReadStream('localFile')readStream.pipe(writeStream)});

Ensures that the directory exists. If the directory structure does not exist, it is created.

Process ID

The Process ID of the server process/thread for a command with deferred/async completion. If a SMB2 command can not be completed immediately the server will respond immediately with STATUS_PENDING and specify a value for the PID that the client can use later to Cancel the request. This STATUS_PENDING reply has the P bit set to 1 to indicate that the PID is valid. Once the command completes later the server will send a second reply to the command, this time still keeping the P bit set to 1 and repeating the same PID as in the initial STATUS_PENDING reply.

If the client wants to SMB2/Cancel a pending command it can do so by sending a SMB2/Cancel to the server with the P bit set to 1 and the PID as was returned in the initial STATUS_PENDING reply.

This is used by SMB2/Notify and SMB2/Cancel to set and cancel a directory watch but can also be used for reads from named pipes if they can not be completed immediately. See SMB2/Cancel for a discussion on how the PID is used in these cases.

Normally for non-async commands the P bit will be set to 0 and the PID will be set to the default value of 0x0000feff.

Доступ к SMB-ресурсам из Linux

Машины с Linux (UNIX) могут также просматривать и монтировать
SMB-ресурсы. Заметьте, что это может быть сделано когда сервером является
либо машина с Windows, либо с сервером Samba!

Программа клиента SMB для UNIX-машин включена в дистрибутив Samba. Она
обеспечивает ftp-подобный интерфейс командной строки. Вы можете
использовать эту утилиту для переноса файлов между ‘сервером’ под
управлением Windows и клиентом под Linux.

Большинство дистрибутивов Linux также включают полезный пакет smbfs,
который позволяет монтировать и размонтировать SMB-ресурсы. Больше
информации о smbfs можно получить дальше.

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

    /usr/bin/smbclient -L host

где ‘host’ это имя машины, которую вы хотите видеть. Эта команда вернет
список имен ‘сервисов’ — т.е. имен дисков или принтеров к которым может
быть получен доступ. До тех пор, пока SMB сервер не будет настроен без
управления доступом, он будет запрашивать у вас пароль. Введите в ответ на
запрос пароль для пользователя ‘гость (guest)’ или ваш персональный пароль
на этой машине.

Например:

    smbclient -L zimmerman

Вывод этой команды должен выглядеть примерно так:

Browse list показывает другие SMB сервера в сети с доступными ресурсами.

Для использования клиента, выполните следующую команду:

    /usr/bin/smbclient service 

где ‘service’ — имя машины и сервиса. Например, если вы пытаетесь
обратиться к директории, которая доступна под именем ‘public’ на
машине названной ‘zimmerman’, то имя сервиса должно звучать как
\\zimmerman\public. Однако в следствии ограничений
оболочки, вам необходимо спрятать обратный слэш, так что в итоге
это командная строка выглядеть следующим образом:

    /usr/bin/smbclient \\\\zimmerman\\public mypasswd

где ‘mypasswd’ — символьная строка вашего пароля.

Вы получите приглашение smbclient:

Напечатайте ‘h’ чтобы получить помощь об использовании smbclient:

Если вы умеете использовать ftp, то вам не будут нужны справочные страницы
о smbclient.

Хотя вы можете использовать smbclient для тестирования, вы скоро устанете
использовать его в работе. Для работы вам скорее всего понадобится пакет
smbfs. Smbfs поставляется с двумя простыми утилитами, smbmount и
smbumount. Они работают подобно mount и umount для SMB-ресурсов.

Одно важное замечание: Чтобы использовать эти утилиты, у вас должна быть
поддержка smbfs вкомпилированная в ядро!

Следующий пример показывает типичное использование smbmount для
монтирования SMB-ресурса, названного «customers» с машины с
именем «samba1»:

Запуск команды mount покажет вам, что ресурс смонтирован, точно также как и
через экспорт NFS:

Пожалуйста прочитайте справочные страницы smbmount и smbumount для
дополнительной информации о описанных выше операциях.

NextPrevious

Спонсоры:

Хостинг:

Maxim ChirkovДобавить, Поддержать, Вебмастеру

Настройка Samba в Ubuntu 16.04

Ставим Samba и если у кого нет — пакет gksu, для возможности запуска окна настроек Samba:

sudo apt install samba system-config-samba gksu

Теперь переходим к настройке сервера

Создаём резервную копию оригинального файла конфигурации Samba:

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

После этого, создаём свой файл конфигурации:

sudo gedit /etc/samba/smb.conf

Указываем глобальные настройки файлового сервера.
Копируем в файл эти строки:


workgroup = WORKGROUP
server string = Samba Server %v
netbios name = SambaSrv
security = user
map to guest = bad user
name resolve order = bcast host
wins support = no
dns proxy = no

Что мы скопировали?
А вот что:

workgroup - рабочая группа, в которой находятся все наши машины
server string - строка коментария, где %v - это макрос, который будет заменён на версию Самбы
netbios name - имя Самба-сервера, которое будет отображаться в Windows
security - по умолчанию выполнять аутентификацию на уровне пользователя
map to guest - это инструкция демону, которая сообщает, что делать с запросами. bad user - означает,
что запросы с неправильным паролем будут отклонены, если такое имя пользователя существует
name resolve order - очередность разрешения IP адресов по NetBIOS имени. bcast - означает отправить
в локальную сеть широковещательный запрос. Если все компьютеры между которыми планируется взаимодействие
находятся в одной сети этот вариант оптимальный.
wins support - не устанавливайте этот параметр в yes если у вас нет нескольких подсетей и вы не хотите,
чтобы ваш nmbd работал как WINS сервер

Сохраняем изменения.

Теперь даём общий доступ к папке в Ubuntu, чтобы машины с Windows могли ею пользоваться.

Общий доступ к папке в Ubuntu

Создаём папку, к которой будем открывать доступ для всех:

sudo mkdir -p /samba/obmen

Ключ -p разрешает создавать вложенные папки.
~ — создать каталоги в домашней папке пользователя

После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:

cd /samba
sudo chmod -R 0755 obmen
sudo chown -R nobody:nogroup obmen/

Внесём изменения в файл настройки samba, добавив следующий раздел:


path = /samba/obmen
browsable = yes
writable = yes
guest ok = yes
read only = no

Теперь ваш конфигурационный файл должен выглядеть вот так:


workgroup = WORKGROUP
server string = Samba Server %v
netbios name = SambaSrv
security = user
map to guest = bad user
name resolve order = bcast host
dns proxy = no


path = /samba/obmen
browsable =yes
writable = yes
guest ok = yes
read only = no

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

sudo service smbd restart

С анонимным доступом к общему ресурсу мы закончили.

Теперь можем проверить доступность этой папки в Windows-машине.

Нажимаем Win+R и в адресной строке пишем:

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

Защищенный общий доступ к папке Ubuntu

Чтобы расшарить папку для Windows в Ubuntu, к которой будут иметь доступ только пользователи из определенной группы, создадим отдельную папку и опишем ее в файле настройки Samba в Ubuntu.

Создаем папку:

sudo mkdir -p /samba/obmen/sec

Устанавливаем права, чтобы доступ к папке получали только пользователи из группы securedgroup.

Создаем группу:

sudo addgroup securedgroup

Настраиваем права:

cd /samba/obmen
sudo chmod -R 0770 sec/
sudo chown -R alex:securedgroup sec

Добавляем настройки в конфигурационный файл samba

Открываем конфигурационный файл

sudo gedit /etc/samba/smb.conf

И добавляем в него этот блок:


path = /samba/obmen/sec
valid users = @securedgroup
guest ok = no
writable = yes
browsable = yes

Перезапускаем сервер Samba.

Теперь доступ к общей папке в Ubuntu могут получить только пользователи группы securegroup.

Чтобы проверить как это работает добавим пользователя alex в нашу группу:

sudo usermod -a -G securedgroup alex

Чтобы пользователь мог работать с расшаренными папками в Ubuntu, он должен быть в базе данных Samba.

Создаём для него пароль Samba:

sudo smbpasswd -a alex

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

Для применения изменений перезагружаем файловый сервер.

Для того, чтобы доступ к папке мог получить только определённый пользователь, заменяем @securedgroup на имя пользователя.

Вот и всё

10 октября 2016, 18:32
  
Александр

Linux

  
12922

Из этой категории

  • Установка LAMP-сервера и phpMyAdmin в Debian 10Установка XAMPP в Debian 10 (Ubuntu) LinuxОтключить пароль SUDO в LinuxBash-команды для экономии времениУстанавливаем Brackets в Debian 10Работа с пакетами при помощи dpkgНастройка Linux Debian 10Скачиваем сайты целиком — утилита wget15 специальных символов-команд, которые нужно знать для работы в Bash Linux42 команды Linux

Авторизация с Active Directory

Разберем пример конфигурирования файлового сервера samba в домене Windows и настроим авторизацию пользователей на базе LDAP Active Directory.

Подключение к Active Directory

Введем наш сервер в домен. Сначала необходимо убедиться, что сервер доступен по своему доменному имени. Если серверу так и не было задано вменяемого имени, вводим команду:

hostnamectl set-hostname samba.dmosk.local

* где samba — имя сервера; dmosk.local — домен.

После добавляем в DNS наш сервер samba. Ждем минут 15, если у нас используется доменная инфраструктура с несколькими сайтами.

Устанавливаем необходимые компоненты:

dnf install samba-client samba-winbind samba-winbind-clients krb5-workstation

Открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

В разделе редактируем следующие опции:

workgroup = DMOSK
security = ads

* где DMOSK — NETBIOS имя домена; ads — указывает, что для samba будет использоваться модель безопасности LDAP Active Directory.

Также в добавим следующие строки:

kerberos method = secrets and keytab
realm = DMOSK.LOCAL
winbind enum groups = Yes
winbind enum users = Yes
idmap config * : rangesize = 1000000
idmap config * : range = 1000000-19999999
idmap config * : backend = autorid

* где:

  • kerberos method — метод проверки kerberos. В данном примере сначала используется secretts.tdb, а затем системная таблица ключей.
  • realm — сервер Active Directory. В нашем примере прописан домен, так как по нему можно обратиться к любому из серверов AD.
  • winbind enum groups — задает пределы перечисления групп через setgrent(), getgrent() и endgrent().
  • winbind enum users — задает пределы перечисления пользователей через setpwent(), getpwent()и endpwent().
  • idmap config * : rangesize — определяет количество доступных uids и gids в каждом доменном диапазоне.
  • idmap config * : range — определяет доступные совпадающие диапазоны uid и gid, для которых серверная часть является авторитетной.
  • idmap config * : backend — задает idmap плагин для использования в качестве SID/uid/gid подсистемы

Вводим сервер в домен: 

net ads join -U Administrator@dmosk.local

* где Administrator — учетная запись пользователя AD с правами на ввод компьютеров в домен; dmosk.local — наш домен.

Мы должны увидеть, примерно, следующее:

Using short domain name — DMOSK
Joined ‘SAMBA’ to dns domain ‘dmosk.local’

Разрешаем автозапуск winbind и стартуем его:

systemctl enable winbind —now

Выбираем профиль для аутентификации:

authselect select winbind —force

Проверяем, что наш сервер может получить список пользователей Active Directory:

wbinfo -u

… и групп:

wbinfo -g

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

Настройка шары

Открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

Создаем шару:

    comment = Folder for AD users
    path = /data/ad
    public = no
    writable = yes
    read only = no
    guest ok = no
    valid users = «@DMOSK\Domain Users» «@DMOSK\Domain Admins»
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777
    inherit owner = yes

* в данном примере мы будем шарить папку на сервере /data/ad; мы предоставим доступ всем пользователям групп Domain Users и Domain Admins домена DMOSK.

Создаем каталог и задаем права:

mkdir /data/ad

chmod 777 /data/ad

Теперь можно перезапустить самбу:

systemctl restart smb

Пробуем подключиться к серверу. У нас должна появиться еще одна папка ad. 

Права ACL

И в продолжение разговора о интеграции с AD, попробуем настроить ACL для более тонкого предоставления прав доступа.

Для этого снова открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

В раздел добавим:

acl compatibility = auto

… и создадим новую шару:

    comment = Folder for AD ACL
    path = /data/adacl
    public = no
    writable = yes
    read only = no
    guest ok = no
    admin users = «@DMOSK\Domain Admins»
    inherit acls = yes
    inherit owner = yes
    inherit permissions = yes
    map acl inherit = yes

* где admin users — пользователи, которые могут менять права папки; inherit acls — наследование acl прав; inherit permissions — наследование прав от папки родителя; map acl inherit — использовать ли схему контроля доступа, хранимую в Windows ACL.

Создаем каталог и задаем права:

mkdir /data/adacl

chmod 777 /data/adacl

Перезапускаем самбу:

systemctl restart smb

Подключаемся к нашей созданной общей папке. Кликаем по ней правой кнопкой мыши — выбираем свойства. На вкладке «Безопасность» мы можем менять права:

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации