Автор Тема: Настройка Samba для одноранговой сети  (Прочитано 1557 раз)

Оффлайн Natalia

  • Начинающий
  • *
  • Сообщений: 5
Добрый день.
У меня одноранговая локальная сеть в которой есть ПК с Alt Рабочая станция 10.1 и c Windows. Нужно, чтобы в ПК друг друга видели и имели доступ к расшаренным папкам как с линукса в виндовс так и наоборот.
Samba  была установлена сразу на этапе установки ОС.  вот что я прописала в smb:
 [global]
workgroup = WORKGROUP
        security = user
        guest ok = yes
   passdb backend = tdbsam
        domain master = no
        interfaces = lo enp1s0             //мой ПК на Альте, статический IP
        interfaces = 192.168.1.1/24 eth0    //характеристики сетки windows. там тоже у всех статика
        printing = cups
   printcap name = cups
   load printers = yes
   cups options = raw
   include = /etc/samba/usershares.conf

[public]
comment = Public Alt
path = /home/01/Shara
public = yes
read only = no
writable = yes
printable = no
guest ok = yes
browseable = yes

вот выхлоп от команды  testparm:
 # testparm /etc/samba/smb.conf
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
# Global parameters
[global]
   domain master = No
   interfaces = 192.168.1.1/24 eth0
   printcap name = cups
   security = USER
   usershare allow guests = Yes
   usershare max shares = 100
   usershare prefix allow list = /home /srv /mnt /media /var
   usershare prefix deny list = /etc /dev /sys /proc
   idmap config * : backend = tdb
   cups options = raw
   guest ok = Yes
   include = /etc/samba/usershares.conf
[public]
   comment = Public Alt
   path = /home/01/Shara
   read only = No

вот что пишет от команды systemctl status smb.service:
systemctl status smb.service
● smb.service - Samba SMB Daemon
     Loaded: loaded (/lib/systemd/system/smb.service; enabled; vendor preset: d>
     Active: active (running) since Mon 2023-06-05 10:55:21 MSK; 2h 27min ago
       Docs: man:smbd(8)
             man:samba(7)
             man:smb.conf(5)
    Process: 2753 ExecStart=/usr/sbin/smbd --no-process-group $SMBDOPTIONS (cod>
   Main PID: 2755 (smbd)
      Tasks: 4 (limit: 18992)
     Memory: 17.6M
        CPU: 1.264s
     CGroup: /system.slice/smb.service
             ├─ 2755 /usr/sbin/smbd --no-process-group
             ├─ 2756 /usr/sbin/smbd --no-process-group
             ├─ 2757 /usr/sbin/smbd --no-process-group
             └─ 4969 /usr/sbin/smbd --no-process-group

июн 05 10:55:21 linuxit01 systemd[1]: Starting Samba SMB Daemon...
июн 05 10:55:21 linuxit01 smbd[2753]: [2023/06/05 10:55:21.310129,  0] ../../so>
июн 05 10:55:21 linuxit01 smbd[2753]:   smbd version 4.16.10 started.
июн 05 10:55:21 linuxit01 smbd[2753]:   Copyright Andrew Tridgell and the Samba>
июн 05 10:55:21 linuxit01 systemd[1]: Started Samba SMB Daemon.


У меня не видят компы друг друга. Если пытаюсь вручную прописать сетевую папку ПК хоть на линуксе, хоть на винде - при попытке подключиться, появляется ошибка "Не удалось подключить ресурс: недопустимый аргумент. Выберите другой режим просмотра и попробуйте еще раз." (хоть анонимно, хоть как зарегистрированный пользователь)

при вводе команды service smbd start
No files found for smbd.service.
service: smbd: Unrecognized service

Что у меня не так? Где ошибка? Как заставить запустить сервис?

Оффлайн NickM

  • Завсегдатай
  • *
  • Сообщений: 896
при вводе команды service smbd start
No files found for smbd.service.
service: smbd: Unrecognized service
Такого сервиса не существует и его не надо пытаться запускать.

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

+

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

path = /home/01/Shara
Расшаривать директории из /home - может оказаться не самой лучшей идеей.

Оффлайн Natalia

  • Начинающий
  • *
  • Сообщений: 5
Взяла из прилагаемого "Пример настройки smb.conf для "файлопомойки"" конфигурацию global - не помогло. https://www.altlinux.org/Samba - отсюда я и начинала. Уже неделю пытаюсь эту проблему решить. Все также не вижу ни я Windows  ни меня (Альт).

Цитировать
Расшаривать директории из /home - может оказаться не самой лучшей идеей.
- это не безопасно или не правильно?

Оффлайн NickM

  • Завсегдатай
  • *
  • Сообщений: 896
Все также не вижу ни я Windows  ни меня (Альт).
Не исключено, что проблема может быть связана с безопасностью протокола SMB.

Вы тестируете всего на двух системах - "Windows" и "Linux"?

Что скажет команда с "Linux":
smbclient -L [имя_компьютера_Windows] --user [существующий_пользователь_на_Windows]
Что-то типа такого, когда, например, компьютер с "Windows" называется winpc, а существующий пользователь Windows-системы winuser:
smbclient -L winpc --user winpc/winuser, естественно, что при этом "DNS" должен работать и резолвить имена.

Оффлайн kessys

  • Завсегдатай
  • *
  • Сообщений: 624
1. Забыть про анонимных пользователей
2. Забыть про SMB 1.0 также из-за него может просто и не подключиться по сети

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

Оффлайн Natalia

  • Начинающий
  • *
  • Сообщений: 5
При вводе этих двух команд выводится информация по ПК Windows со всеми сетевыми принтерами и расшаренными дисками, но в конце пишет
Цитировать
SMB1 disabled -- no workgroup available

В файле smb.conf добавила строку
Цитировать
client min protocol = NT1
прямо под строкой
Цитировать
workgroup = WORKGROUP
после этого запустила 
Цитировать
systemctl restart smb nmb
Строчка с ошибкой ушла, но в сетевом окружении так и не появились ПК ни в Линуксе ни в Windows.

Что означает фраза
Цитировать
естественно, что при этом "DNS" должен работать и резолвить имена.
Как ее победить?



Оффлайн Natalia

  • Начинающий
  • *
  • Сообщений: 5
1. Забыть про анонимных пользователей
2. Забыть про SMB 1.0 также из-за него может просто и не подключиться по сети

Какой итог вы хотите видеть я так и не понимаю.
Смысл искать в сети с пользовательского пк другие пк с другой системой идея не суперудачная, но вот подключается по имени пк или IP нормально.
Нам нужно чтобы в сети работали как Windows ПК так и Linux ПК с общими папками, пока полностью не перейдем на Linux.

Оффлайн NickM

  • Завсегдатай
  • *
  • Сообщений: 896
Как ее победить?
Работу DNS можно проверить с помощью утилиты nslookup;

но в сетевом окружении так и не появились ПК ни в Линуксе ни в Windows.
Что покажет:
net view, в командной строке с "Windows"?

Никогда не работал с рабочей группой, но возможно всё дело в роли мастер-браузера, которую неизвестно кто выполняет в Вашей сети?

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

Оффлайн kessys

  • Завсегдатай
  • *
  • Сообщений: 624
1. Забыть про анонимных пользователей
2. Забыть про SMB 1.0 также из-за него может просто и не подключиться по сети

Какой итог вы хотите видеть я так и не понимаю.
Смысл искать в сети с пользовательского пк другие пк с другой системой идея не суперудачная, но вот подключается по имени пк или IP нормально.
Нам нужно чтобы в сети работали как Windows ПК так и Linux ПК с общими папками, пока полностью не перейдем на Linux.
На каждом пк по папке расшаренной? или на 1 пк расшарена папка?
Я так понимаю если работа с папкой постоянно, то лучше изучить способы подключения сетевых дисков и не пытаться видеть пк,
диски они подключаться сами 8-)
О подпись)
Жизнь с kde не так плоха, Но без ssd, это жестоко грустно.

Оффлайн Natalia

  • Начинающий
  • *
  • Сообщений: 5
Я так понимаю если работа с папкой постоянно, то лучше изучить способы подключения сетевых дисков и не пытаться видеть пк,
диски они подключаться сами
Как вариант, если сразу при установке насоздавать общих папок для пользователей и значки вывести - это возможный выход. Но это работает только если из Linux в Windows. Сейчас пытаюсь вручную также подтянуть из Windows - просит авторизоваться и каких только данных не ввожу, всегда пишет "Не удалось подключить ресурс Windows. Недопустимый аргумент. Выберите другой режим просмотра и попробуйте еще раз."

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

Оффлайн kessys

  • Завсегдатай
  • *
  • Сообщений: 624
Я так понимаю если работа с папкой постоянно, то лучше изучить способы подключения сетевых дисков и не пытаться видеть пк,
диски они подключаться сами
Как вариант, если сразу при установке насоздавать общих папок для пользователей и значки вывести - это возможный выход. Но это работает только если из Linux в Windows. Сейчас пытаюсь вручную также подтянуть из Windows - просит авторизоваться и каких только данных не ввожу, всегда пишет "Не удалось подключить ресурс Windows. Недопустимый аргумент. Выберите другой режим просмотра и попробуйте еще раз."

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

Логин пароль на компьютере для расшаривания должен какой-то существовать отдельный для каждого пк лучше, а не совместный.
тему windows - linux не пробовал ибо сетевой диск просто решает всё
О подпись)
Жизнь с kde не так плоха, Но без ssd, это жестоко грустно.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Вот, из моих записок, как то пытался по быстрому перенести файловый сервер из  Windows в Linux. Может, что полезное найдешь в моих эксперементах.
Принцип настройки простой. Создаешь пользователя в системе, чтобы иметь возможность расшаривать права на файловой системе и работать с acl списками. С помощью pdbedit создать аналогичного пользователя в самбе и создать "правильный" smb.conf.

добавить пользователя можно и командой pdbedit:
# pdbedit -a <User_name>
Удаление существующего пользователя:
# pdbedit -x <User_name>

с автоматичесским вводом пароля (ввод;подтверждение)
(echo "pass"; echo "pass") | pdbedit -a admin
pdbedit -L  просмотр списка пользователей

Задача, из списка пользователей в csv формате ОТДЕЛ|ЛОГИН|ОРГАНИЗАЦИЯ|ПАРОЛЬ|ОПИСАНИЕ:
-создать системных пользователей;
-создать smb пользователей;
-создать структуру каталогов по принципу /mnt/Документы/Отдел/Папка_с_файлами_по_имени_логина;
-назначить права на структуру каталогов;

Цель:
-в локальной сети поднять samba сервер;
-пользователи windows должны иметь доступ к файлам без авторизации, если логин и пароль на системах сервера-клиента совпадают;

-linux пользователи вводят логин и пароль или настраивают autofs;
-каждый пользователь имеет доступ только в свой каталог;


#!/bin/bash
# Имя netbios name в файле
NBNAME="altnas"
# Список csv, где первые два поля отдел и логин, а четвертое пароль
# ОТДЕЛ|ЛОГИН|ОРГАНИЗАЦИЯ|ПАРОЛЬ|ОПИСАНИЕ
LIST="/mnt/shared/temp/usersmb.csv"
# Разделитель полей в списке
DELIM="|"
# Разделитель полей для цикла for
IFS=$'\n'
# Путь к каталогу в котором создать структуру каталога в виде ОТДЕЛ/ЛОГИН
DIRS="/mnt/Documents"
for LOGINPW in $(cut -d $DELIM -f 1,2,4 --output-delimiter="|" "$LIST")
do
# Выделить из переменной поля разделенные "|"
OTDEL=`echo "$LOGINPW" | cut -d "|" -f 1`
LOGIN=`echo "$LOGINPW" | cut -d "|" -f 2`
PASSW=`echo "$LOGINPW" | cut -d "|" -f 3`
# Добавить пользователя без домашнего каталога
# и присвоить пароль. Шаблон ${user,,} - нижний регистр
adduser -M ${LOGIN,,} && echo "${LOGIN,,}:$PASSW" | chpasswd
# Добавить системного пользователя в базу smb пользователей. Шаблон ${user,,} - нижний регистр
HOMEDIR="\\\\$NBNAME\\$OTDEL\\$LOGIN"
PROFILEDIR="\\\\$NBNAME\\$OTDEL\\$LOGIN\\profile"
(echo $PASSW; echo $PASSW) | pdbedit -a ${LOGIN,,} -h $HOMEDIR -p $PROFILEDIR
done
# Создать структуру каталогов
# создать корневой каталог общей папки самбы и назначить права
mkdir -p $DIRS && chmod 755 $DIRS
for PATHDIR in $(cut -d $DELIM -f 1,2 --output-delimiter="/" "$LIST")
do
mkdir -p "$DIRS/$PATHDIR"
# Выделить из переменной поля разделенные "/"
LOGIN=`echo "$PATHDIR" | cut -d "/" -f 2`
# Применить права к каталогу
chown ${LOGIN,,}:${LOGIN,,} "$DIRS/$PATHDIR" && chmod 750 "$DIRS/$PATHDIR"
# Создать список валидных пользователей для добавления в smb.conf
VALIDUSER="$VALIDUSER ${LOGIN,,}"
done
# Если пользователей много, можно создать список валидных
# пользователей, закоментировать и поместить в файл конфигурации самбы
VALIDUSER="#valid users = $VALIDUSER"
#echo $VALIDUSER >> /etc/samba/smb.conf

Место расположение файла со списком пользовательских данных LIST="/mnt/shared/temp/usersmb.csv"
ОТДЕЛ|ЛОГИН|ОРГАНИЗАЦИЯ|ПАРОЛЬ|ОПИСАНИЕ
Описание не задействовал, чтобы не усложнять скрипт.

# cat /mnt/shared/temp/usersmb.csv
Агрономы|user1|OOO "1"|5cvb94|OOO "1"; АГРО; гл. агроном;
Агрономы|user2|OOO "1"|9rty19|OOO "1"; АГРО; агроном по защите растений;
Агрономы|user3|OOO "1"|ww7388|OOO "1"; АГРО; агроном;
Агрономы|user4|OOO "1"|5ty549|OOO "1"; АГРО; агроном;
Агрономы|user5|OOO "1"|4sss45|OOO "1"; АГРО; агроном;

Файл конфигурации smb сервера:
# cat /etc/samba/smb.conf
[global]
workgroup = WORK
netbios name = altnas
printing = CUPS
printcap name = CUPS
show add printer wizard = No
wins support = yes
[Documents]
comment = Documents
path = /mnt/Documents
valid users = user1 user2 user3 user4 user5
read only = No
browseable = yes
create mask = 0660
directory mask = 0770

Скрипт запускается под root (su -l).
Регистр букв логина не влияет на авторизацию пользователей windows (User1=user1) (Возможно от настроек зависит)
опробовано на startkit sysv-server p9 c до установленной LXDE оболочкой.

# service smb start
После того, как созданы пользователи и каталоги, можно сгруппировать пользователей по группам и создать общие папки назначив на них групповые права. Оказалось не так просто раскидать (перенести пользователей) взятых из одной системы в другую.
Выдернул сотню пользователей из сервера Windows разбросанных по разным группам в файл csv в формате ГРУППА|ПОЛЬЗОВАТЕЛЬ.
Теперь можно залить в систему Linux группы с пользователями в них:
#!/bin/bash
# Список csv, где два поля
# ГРУППА|ПОЛЬЗОВАТЕЛЬ
LIST="/mnt/shared/temp/GroupUsers.csv"
# Разделитель полей в списке
DELIM="|"
# Разделитель полей для цикла for
IFS=$'\n'
for GROUP in $(cut -d $DELIM -f 1,2 --output-delimiter="|" "$LIST")
do
# Выделить из переменной поля разделенные "|"
# Команда tr -d [:cntrl:] позволяет удалить управляющие символы из переменной
# Иногда при экспорте в csv могут попадать управляющие символы и usermod сыплет ошибки
GRP1=`echo ${GROUP,,} | tr -d [:cntrl:] | cut -d "|" -f 1`
USR1=`echo ${GROUP,,} | tr -d [:cntrl:] | cut -d "|" -f 2`
#echo -e "$GRP1 | $USR1"
# Добавить группу и пользователя в группу
groupadd -f $GRP1
usermod --append --groups ${GRP1,,} ${USR1,,}
done

Оффлайн Nicom

  • Завсегдатай
  • *
  • Сообщений: 621
У меня одноранговая локальная сеть в которой есть ПК с Alt Рабочая станция 10.1 и c Windows.
Сеть изолированная, или имеет выход в интернет через маршрутизатор?
Адреса компьютеров статические, или раздаются по DHCP?
Кто держит DNS зону в этой сети?
Кто работает в качестве сервера WINS?
Какие версии виндовс имеются в сети?
Нужно, чтобы в ПК друг друга видели и имели доступ к расшаренным папкам как с линукса в виндовс так и наоборот.
Зачем Вам этот зоопарк?

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

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

Для сервера, на первом этапе, можно выделить старый системник с возможностью подключения SATA дисков. Но, лучше сразу купить новое железо, пусть даже и не дорогое, например на подобной материнской плате https://www.dns-shop.ru/product/aa5fcb18c142ed20/materinskaa-plata-gigabyte-b560m-ds3h-plus/, на ней 6 разъёмов SATA и 2 слота M2 для NVME дисков.
Процессор можно использовать любой, подойдёт даже самый слабый и дешёвый для данного сокета.
RAM вполне хватит и 4 ГБ, но лучше сразу поставить 8 двумя планками по 4, скорость работы с памятью увеличится.
Жёсткие диски для хранилища лучше применять предназначенные для корпоративного сектора, например WD Ultrastar, Toshiba MG, они предназначены для работы в режиме 24х7.
Для системы, но не для хранилища, можно применить любой SSD, как и любой живой старый HDD.
Хранилище, в виде одного диска, или RAID массива, лучше монтировать в /home/srv, так можно проще управлять им, например, от одного диска перейти к RAID массиву, или настроить LVM.

Сервер лучше подключять через UPS, чтобы не зависеть от кратковременных пропаданий электричества.

Вот мои настройки smb.conf подобного сервера. У меня целый зоопарк пользовательских ОС, начиная с win XP до win 10, Altlinux 9 и 10 платформы.
Для win 10 и 11, Вам придётся запустить демона WSD, читайте https://forum.altlinux.org/index.php?topic=47589.msg381901#msg381901
Здесь описаны только 2 расшаренных каталога, остальные Вы создадите сами по аналогии.
Права на каталоги регулируются группами пользователей.
Спойлер
[global]
log level = 1
allow insecure wide links = yes

workgroup = WORKGROUP
dos charset = 866
deadtime = 480
keepalive = 600
enhanced browsing = no
hostname lookups = yes

os level = 65
domain master = yes
preferred master = yes
local master = yes
# wins support = no
name resolve order = host wins bcast lmhosts
wins server = 192.168.0.1
wins proxy = yes
remote announce = 192.168.0.1
remote browse sync = 192.168.0.1

security = user
passdb backend = tdbsam:/etc/samba/passdb.tdb

locking = no

ntlm auth = ntlmv1-permitted
server min protocol = NT1

logon path = \\%L\profiles\.msprofile
logon home = \\%L\%U\.9xprofile
logon drive = P:


printcap name = /dev/null
printing = bsd
load printers = no
disable spoolss = no
show add printer wizard = no

vfs objects = recycle
recycle:repository = /home/srv/smbshares/.recycle/%U
recycle:directory_mode = 2775
recycle:subdir_mode = 0775
recylce:excludedir = tmp temp cache
recycle:exclude = *.tmp *.temp *.o *.obj ~$* *.~?? *.log *.trace ~*.* *.bak .~lock* *.trashinfo?
recycle:versions = Yes
recycle:touch = Yes
recycle:keeptree = Yes


[homes]
   comment = Home Directories
   invalid users = root
   valid users = %S, %D%w%S
   browseable = No
   read only = No
   inherit acls = Yes
   create mask = 0664
   directory mask = 0775

[ОБМЕН]
   invalid users = root
   comment = Каталог для обмена файлами, (как флешка)
   path = /home/srv/smbshares/obmen/
   read only = No
   create mask = 0666
   directory mask = 0777

[Бухгалтерия]
   browseable = yes
   writeable = yes
   path = /home/srv/smbshares/buh
   comment = Бухгалтеры
   valid users = @buh
   create mask = 0664
   directory mask = 0775
Но, у меня в другой подсети выделен сервер WINS.
Если у Вас нет отдельного WINS сервера, то отредактируйте следующие опции
Спойлер
wins support = yes
# wins server = 192.168.0.1
wins proxy = no
# remote announce = 192.168.0.1
# remote browse sync = 192.168.0.1

Для облегчения добавления пользователей на сервере я использую скрипт, размещённый в /root/bin, там-же создаётся и дополняется файл со списком всех добавляемых пользователей.
Спойлер
#!/bin/bash
echo 'Пользователь? (латиница и знаки -_)'
read NM
echo 'Пароль?'
read PW
echo 'Дополнительная информация. Можно и на русском языке'
read DL
echo -e '\n\nUser - '"$NM"'; Passwd - '"$PW"'; Info - '"$DL"'\n'
read -p 'Всё верно? [y,N]' inp

if [  "$inp" == "y"  ]; then
    echo -e '\n\tДелаем!\n'
    echo -e '\nUser - '"$NM"'; Passwd - '"$PW"'; Info - '"$DL" >> /root/bin/new_added_users.txt
    adduser --base-dir /home/srv/smbshares/users --no-create-home --comment "$DL" --gid users --groups users --shell /bin/bash "$NM"
    echo -e "$PW"'\n'"$PW" | passwd "$NM"
    mkdir /home/srv/smbshares/users/"$NM" && chmod g+rx /home/srv/smbshares/users/"$NM" && chown "$NM":users /home/srv/smbshares/users/"$NM"
    echo -e "$PW"'\n'"$PW" | pdbedit -a -u "$NM"
    echo "$NM" >> /etc/vsftpd/user_list
fi
Запуск демонов
Спойлер
systemctl enable --now nmb.service
systemctl enable --now smb.service

Я "подписался" на уведомления в этой теме, будут вопросы - спрашивайте.

Оффлайн Homatech

  • Начинающий
  • *
  • Сообщений: 32
    • Email
Здравствуйте.
Попробуйте вставить в smb.conf, в раздел [global]
   server min protocol = NT1.
   server max protocol = SMB3
Мне помогло. Думаю первая строка. Вторую добавил до кучи.
Еще: если в сети есть машины с Win 10\11, на них необходимо будет включить старый протокол SMB 1. На Win 7 вроде ничего делать не надо. Восьмой нету.
С бедой которую вы описали сражался буквально на этой неделе. Правда у меня получалось зайти в общую папку по пути smb://МойЛинуксКомпьютер/ОбщаяПапка набрав его в строке файлового менеджера Thunar. Вы вроде пишите что даже так не могли зайти.
У меня на машине стоит Simply Linux 10. На ней же в виртуалке (VirtualBox 6.1) Win 7. У других в моём отделе Win 10. Вот с этим и экспериментировал.
Теперь я со своей машины через самбу вижу себя, и все Win машины видят меня.
Вы, кстати права на общую папку в Альте выставили?
« Последнее редактирование: 06.07.2023 15:06:27 от Homatech »