Решение ошибки «System error 1231 has occurred» при подключении сетевого диска

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

C:\Users\Administrator>net use K:\\192.168.0.5\dir /persistent:no /user:name password
System error 1231 has occurred.
The network location cannot be reached. For information about network troublesho
oting, see Windows Help.

Позже я определил, что в свойствах подключения по локальной сети (также может называться Ethernet и Local Area Connection) сняты галочки с «Клиент для сетей Microsoft» и «Общий доступ к файлам и принтерам для сетей Microsoft».

После того как я отметил галочками эти компоненты и применил, диск успешно подключился:

C:\Users\Administrator>net use K:\\192.168.0.5\dir /persistent:no /user:name password
The command completed successfully.

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

Смотрите также мою статью — Установка и настройка Samba в Linux

Решение WARNING: The «syslog» option is deprecated

Заметил однажды предупреждение в файле /var/log/samba/log.:

[2018/04/13 20:51:05.280655,  1] ../lib/param/loadparm.c:1629(lpcfg_do_global_parameter)
  WARNING: The "syslog" option is deprecated

Как и сообщается, опция «syslog» устарела, и чтобы предупреждение не появлялось, её необходимо убрать из конфигурации.

Я открыл файл конфигурации в текстовом редакторе:

sudo nano /etc/samba/smb.conf

Нашел эту опцию:

syslog = 0

И закомментировал её:

#syslog = 0

После изменений необходимо перезапустить samba, можно так:

sudo service samba restart
sudo restart smbd
sudo restart nmbd

После этого предупреждение больше не появлялось.

Смотрите также:
Установка и настройка Samba в Linux

IPTables правила для Samba

Чтобы открыть доступ к Samba в IPTables необходимо добавить сразу четыре правила:

sudo iptables -A INPUT -p udp -m udp --dport 137 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 138 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT

Чтобы открыть доступ только конкретной сети, например 192.168.1.0/24:

sudo iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 137 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 138 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 139 -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 445 -j ACCEPT

Чтобы удалить правило укажем ту же команду, заменив -A на -D, например:

sudo iptables -D INPUT -s 192.168.1.0/24 -p udp -m udp --dport 137 -j ACCEPT
sudo iptables -D INPUT -s 192.168.1.0/24 -p udp -m udp --dport 138 -j ACCEPT
sudo iptables -D INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 139 -j ACCEPT
sudo iptables -D INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 445 -j ACCEPT

Посмотреть список правил можно командой:

sudo iptables -nvL

Смотри также мои статьи:
Настройка IPTables
Установка и настройка Samba в Linux

Установка system-config-samba

system-config-samba — простое приложение для настройки samba с графическим интерфейсом.

Устанавливается командой:

sudo apt-get install system-config-samba

Запускается:

sudo system-config-samba

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

Смотрите также:
Установка и настройка Samba в Linux

Решение проблемы с автозапуском Samba в Linux

Установил и настроил однажды Samba на очередном Ubuntu Server 14.04.5 LTS как описывал в этой статье Установка и настройка Samba в Linux.

И после перезапуска системы не все запускалось, smbd и nmbd были запущены, если что их можно перезапустить так:

sudo restart smbd
sudo restart nmbd

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

sudo service samba start

Чтобы samba автоматически запускалась при старте системы — выполним команду:

sudo update-rc.d samba defaults

Все.

Мониторинг Samba в Zabbix

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

Создадим шаблон, например с именем «Template Service Samba» и добавим в него следующий элемент данных:

Имя: Количество процессов nmbd
Тип: Zabbix агент
Ключ: proc.num[nmbd]

Аналогично создадим и для smbd.
Можно также создать элементы данных отображающие количество использованной памяти процессом, в этом случае ключ будет выглядеть так:

proc.mem[nmbd,,sum]

А также добавим для них графики.

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

Имя: Не работает nmbd на {HOST.NAME}
Выражение: {Template Service Samba:proc.num[nmbd].max(1)}<1

Все.

Mikrotik SMB — настройка файлового сервера

На примере буду использовать маршрутизатор Mikrotik RB951G-2HnD.

Подключаем к маршрутизатору USB носитель.
Смотрим состояние:

store disk print

Форматируем его:

store disk format-drive 1

Перезагружаем маршрутизатор:

reboot

Добавление хранилища:

store add name=share disk=usb1 type=user-manager activate=yes comment="test"

Добавление шары:

ip smb share add name=test max-sessions=15 directory=/test disabled=no comment="test share"

Пример отключения шары:

ip smb share disable

Включение smb:

enable smb

Приведу примеры некоторых команд:
ip smb print (просомтр параметров)
ip smb set allow-guests yes/no (разрешает подключение гостевым пользователям без ввода пароля, стандартно yes)
ip smb set comment TEXT (комментарий, стандартно MikrotikSMB)
ip smb set domain NAME (установка имени рабочей группы, стандартно MSHOME)
ip smb set enabled yes/no (включение/выключение SMB, стандартно no)
ip smb set interfaces all/wlan1/bridge-local/… (установка интерфейсов на которых будет запущен SMB, стандартно all)

ip smb users add read-only=no name=логин password=пароль disabled=no (создание пользователя)
ip smb users disable (отключение пользователя)
ip smb users enable (активация пользователя)
ip smb users print (просмотр списка пользователей)
ip smb users remove (удаление пользователя)
ip smb users set read-only=no name=логин password=пароль (изменение пользователя)

ip smb share enable (активация шары)
ip smb share print (просмотр списка шар)
ip smb share remove (удаление шары)
ip smb share set (изменение параметров шары)

Для получения справки в командной строке используется символ «?».
Для переходя на уровень выше — «..».

Пример настройки фаервола для smb:

add action=accept chain=input disabled=no dst-port=137-138 protocol=udp src-address-list=smb-allow
add action=accept chain=input disabled=no dst-port=137,139 protocol=tcp src-address-list=smb-allow
ip firewall address-list add address=1.1.1.1 disabled=no list=smb-allow

Официальные документации:
wiki.mikrotik.com/wiki/Manual:IP/SMB
wiki.mikrotik.com/wiki/Manual:Store

К маршрутизатору также можно подключить жесткий диск через переходник USB-SATA.

Решение ошибок Samba «Unable to connect to CUPS server» и «failed to retrieve printer list»

Заметил однажды на некоторых серверах ошибки в лог-файле /var/log/samba/log.smbd:

Unable to connect to CUPS server localhost:631 — Connection refused
Unable to connect to CUPS server localhost:631 — Bad file descriptor
failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL

Если расшаривать принтеры не нужно, то в конфигурационном файле /etc/samba/smb.conf можно настроить следующее параметры:

[global]
...
load printers = no
show add printer wizard = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes

Перезапустить smbd чтобы изменения вступили в силу:

sudo restart smbd

После этого ошибка не должна появляться.

Смотрите также мою статью:
Установка и настройка Samba в Linux

Установка и настройка Samba в Linux

Установка в Linux Ubuntu/Debian:

sudo apt-get install samba

Создание резервной копии конфигурационного файла на всякий случай:

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

Открытие конфига для редактирования, например в редакторе nano:

sudo nano /etc/samba/smb.conf

Коротко опишу параметры стандартного конфига:

[global]
# netbios имя
netbios name = ИМЯ
# Имя рабочей группы
workgroup = WORKGROUP
# Описание компьютера
server string = %h server (Samba, Ubuntu)
# Включение функций WINS (Windows Internet Name Service) сервера. WINS сервер регистрирует связки NETBIOS-имени с IP-адресом.
# wins support = no
# Адрес другого существующего в сети WINS сервера.
;   wins server = w.x.y.z
# Делать ли запрос к DNS серверу если WINS сервер не смог разрешить NetBIOS имя
 dns proxy = no
# Параметр определяет в каком порядке использовать сервисы имен для получения IP адреса (lmhosts - искать IP в файле lmhosts самбы, host - /etc/hosts, wins - через wins сервер указанный в "wins server", bcast - послать широковещательный запрос на все сетевые интерфейсы)
;   name resolve order = lmhosts host wins bcast

# Определяет какие будут использоваться интерфейсы
;   interfaces = 127.0.0.0/8 eth0
# Указывает что нужно строго использовать только интерфейсы указанные в "interfaces"
;   bind interfaces only = yes

# Адрес размещения файла логов
log file = /var/log/samba/log.%m
# Более детальный уровень логов
log level = 3
debug timestamp = yes
# Максимальный размер файла в килобайтах, если размер превышен, то создается новый, а к существующему добавляется расширение .old, "0" - без ограничения по размеру)
 max log size = 1000
# Записывать ли логи в системный журнал syslog
#   syslog only = no
# Уровень логов которые будут писаться в системный журнал syslog (0 - LOG_ERR, 1 - LOG_WARNING, 2 - LOG_NOTICE, 3 - LOG_INFO)
   syslog = 0
# Доступ к ресурсам осуществляется по: user - имени пользователя и паролю, share - паролю, server - переадресация проверки на другой сервер (если не получится будет использоваться "security = user", domain - имитация работы сервера домена Windows
# security = user
# Шифрование передающихся между клиентом и сервером паролей
   encrypt passwords = true
# Механизм хранения информации о пользователях (smbpasswd, tdbsam, ldapsam)
   passdb backend = tdbsam
# Использование PAM для аутентификации
   obey pam restrictions = yes
# Cинхронизация пароля UNIX с паролем SMB при изменении зашифрованного пароля SMB в файле smbpasswd
   unix password sync = yes
# Программа которая будет использоваться для смены паролей UNIX
   passwd program = /usr/bin/passwd %u
# Строка управляющая обменом “chat” между демоном smbd и программой смены паролей
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
# Использование PAM для смены паролей UNIX вместо указанной программы в "passwd program"
   pam password change = yes
# (Never - запросы с неправильным паролем отклоняются; Bad User - запросы с неправильным паролем отклоняются, но если имя пользователя существует, будет произведена попытка входа гостем; Bad Password - запросы с неправильным паролем обрабатываются как попытка зайти гостем; Bad Uid - в режиме security = domain/ads когда пользователь прошел аутентификацию, но не имеет учетной записи UNIX будет считаться гостем.
   map to guest = bad user

########## Domains ###########
# Поддержка службы входа в сеть для Windows 9X
;   domain logons = yes
# Путь к директории где будут хранится пользовательские профили (Application Data, Рабочий стол, NTuser.dat, ...)
;   logon path = \\%N\profiles\%U
#   logon path = \\%N\%U\profile
# Путь присоединения домашней директории для рабочих станций Windows NT
;   logon drive = H:
# Домашняя директория при авторизации клиента
#   logon home = \\%N\%U
# Файл сценария, который будет скачан и выполнен на клиентском компьютере при входе в систему.
;   logon script = logon.cmd
# Путь к сценарию, который будет выполнен демоном smbd от пользователя root при обстоятельствах описанных ниже
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
# Путь к сценарию который запускается при добавлении учетной записи компьютера в домен SAMBA
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
# Путь к сценарию который запускается от root пользователя smbd при создании новай группы
; add group script = /usr/sbin/addgroup --force-badname %g

########## Printing ##########
# Отображение всех принтеров
#   load printers = yes
# Определяет какая статусная информация о принтере будет интерпретироваться в системе.
;   printing = bsd
# Переопределение вкомпилированного printcap name
;   printcap name = /etc/printcap
;   printing = cups
;   printcap name = cups

############ Misc ############
# Присоединение и обработка другого конфигурационного файла
;   include = /home/samba/etc/smb.conf.%m
#         SO_RCVBUF=8192 SO_SNDBUF=8192
# Параметры сокета для обслуживания клиентов
#   socket options = TCP_NODELAY
# Команда выполняющаяся при получении сервером сообщения WinPopup
;   message command = /bin/sh -c '/usr/bin/linpopup "%f" "%m" %s; rm %s' &
# Сопоставление списка просмотра сети. Мастер браузеры в изолированных подсетях передадут свои локальные списки просмотра и запросят законченную копию списка для всей глобальной сети.
#   domain master = auto
# Диапазон пользовательских идентификаторов для сопоставления SIDов UNIX пользователей SIDам NT пользователей.
;   idmap uid = 10000-20000
# Диапазон групповых идентификаторов для сопоставления SIDов UNIX групп SIDам NT групп
;   idmap gid = 10000-20000
;   template shell = /bin/bash
;   winbind enum groups = yes
;   winbind enum users = yes
;   usershare max shares = 100
# Разрешить не аутентифицированным пользователям получить доступ к общим ресурсам пользователей
   usershare allow guests = yes

#======================= Share Definitions =======================
;[homes]
# комментарий к папке
;   comment = Home Directories
# Общий ресурс отображаться в списке доступных общих ресурсов в сетевом окружении и в списке просмотра
;   browseable = no
# Запрет на изменение и создание файлов
;   read only = yes
# Права доступа для создаваемого файла
;   create mask = 0700
# Права доступа для создаваемой директории
;   directory mask = 0700
# Список пользователей, которым разрешен доступ
;   valid users = %S
;[netlogon]
;   comment = Network Logon Service
;   path = /home/samba/netlogon
# Не требовать для подключения пароль
;   guest ok = yes
;   read only = yes
;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
;   write list = root, @lpadmin
;[cdrom]
;   comment = Samba server's CD-ROM
;   read only = yes
;   locking = no
;   path = /cdrom
;   guest ok = yes

# Команда запускаемая при подключении к сервису
;   preexec = /bin/mount /cdrom
# Команда запускаемая при отключении от сервиса
;   postexec = /bin/umount /cdrom

# Разрешает только указанными IP присоединяться к Samba-серверу
hosts allow = 172.16. 192.168.1. 192.168.0. 127. 10.

Проверка параметров конфигурации:

testparm

Проверка демона:

netstat -nlp

Просмотр версии samba:

smbd --version

Создание директорию для шары:

sudo mkdir -p /srv/samba/share
sudo chown nobody.nogroup /srv/samba/share/

Просмотр привилегий на файлы и папки:

ls -l /srv/samba

Пример изменения привилегий:

sudo chown ПОЛЬЗОВАТЕЛЬ:ГРУППА -R /srv/samba/ПОЛЬЗОВАТЕЛЬ/
sudo chmod -R 0777 /srv/samba

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

sudo useradd имя_пользователя

Добавление samba пользователя (пользователь с таким именем уже должен быть создан в системе):

sudo smbpasswd -a имя_пользователя

Активация пользователя:

sudo smbpasswd -e имя_пользователя

Создание файла пользователей:

sudo touch /etc/samba/smbusers
sudo nano /etc/samba/smbusers
имя_пользователя = Admin

Перезагрузка samba:

sudo service samba restart
sudo restart smbd
sudo restart nmbd

Просмотр сетевой информации компьютера в Windows:

net config workstation

Пример команды подключения сетевого диска в Windows (можно добавить в автозагрузку bat файлом)

net use K: \\192.168.1.5\dir /persistent:no /user:пользователь пароль

Смотрите также:
IPTables правила для Samba
system-config-samba

Решение ошибок:
Проблемы с автозапуском Samba в Linux
WARNING: The «syslog» option is deprecated
System error 1231 has occurred
«Unable to connect to CUPS server» и «failed to retrieve printer list»