SMB cервер с помощью python на Linux

SMB cервер с помощью python на Linux

Когда мне нужно было быстро поднять smb сервер, чтобы разово перекинуть какие-то файлы, раньше я устанавливал samba и делал для неё простейший конфиг. Потом в Linux появилась поддержка протокола smb и сервера на его основе в ядре в виде пакета ksmbd. Стал использовать его. Хотя принципиально ни по времени настройки, ни по удобству он особо не выигрывает у самбы. Настройка плюс-минус такая же. В нём основное преимущество в скорости по сравнению с samba, что для разовых задач непринципиально.

Если у вас есть желание научиться администрировать системы на базе Linux, рекомендую познакомиться с онлайн-курсом «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Подробная информация.

На днях в комментариях поделились информацией о том, что есть простой 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.

Python smbserver

Если нужна аутентификация, то её можно добавить:

# 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

Постоянно использую этот веб сервер для разовой передачи файлов. Запустил из нужной директории, скачал и завершил работу сервера.

Если у вас есть желание научиться администрировать системы на базе Linux, но вы с ними никогда не работали и не знакомы, то рекомендую начать с онлайн-курса «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Цена за курс минимальная (символическая). Информация о курсе и цене.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Qiziqarli malumotlar
SMB cервер с помощью python на Linux