Когда мне нужно было быстро поднять smb сервер, чтобы разово перекинуть какие-то файлы, раньше я устанавливал samba и делал для неё простейший конфиг. Потом в Linux появилась поддержка протокола smb и сервера на его основе в ядре в виде пакета ksmbd. Стал использовать его. Хотя принципиально ни по времени настройки, ни по удобству он особо не выигрывает у самбы. Настройка плюс-минус такая же. В нём основное преимущество в скорости по сравнению с samba, что для разовых задач непринципиально.
На днях в комментариях поделились информацией о том, что есть простой smb сервер на базе python. Попробовал – на 10-ке Debian все делается через Ж. на 12 Debiane все решается без проблем. Решил его попробовать. Он реализован в отдельном пакете python3-impacket
.
1 |
apt install python-impacket |
Это довольно обширный набор сетевых утилит, которые обычно используют пентестеры. В том числе там есть и smb сервер. Запустить его можно в одну строку примерно так:
1 2 |
cd /usr/share/doc/python3-impacket/examples/ python smbserver.py share /mnt/share -smb2support |
- share – имя шары
- /mnt/share – директория для smb сервера, не забудьте на неё сделать права 777, так как доступ анонимный
- smb2support – использовать 2-ю версию протокола, если это не добавить, то с Windows 11 подключиться не получится.
Запуск сервера реально простой и быстрый. Не нужны ни конфиги, ни службы. Запускаем в консоли команду, делаем свои дела и завершаем работу сервера. Для разовых задач идеально, если бы не довольно жирный сам пакет impacket.
Если нужна аутентификация, то её можно добавить:
1 |
python smbserver.py share /mnt/share -smb2support -username user -password 123 |
Только учтите, что винда по какой-то причине не предлагает ввести имя пользователя и пароль, а пытается автоматически подключиться, используя имя пользователя и пароль, под которыми вы находитесь в системе в данный момент. Я не очень понял, почему так происходит. Если кто-то знает, поделитесь информацией. По идее, должно вылезать окно аутентификации. Но по логам smbserver вижу, что винда автоматически случится под той учёткой, от которой пытаешься подключиться.
Если подключаться с Linux, то таких проблем нет. Смотрим информацию о сетевых папках сервера:
1 |
smbclient -L 172.20.204.133 --user user --password=123 |
Подключаемся к настроенной шаре:
1 |
smbclient //172.20.204.133/share --user user --password=123 |
Такой вот инструмент. В принципе, удобно. Можно использовать наравне с веб сервером:
1 |
python3 -m http.server 8000 |
Постоянно использую этот веб сервер для разовой передачи файлов. Запустил из нужной директории, скачал и завершил работу сервера.