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