Вопрос или проблема
Совместное использование папки в Windows – это тривиальная задача. Совместное использование папки в Linux, похоже, осуществляется только с помощью Sambashare. По крайней мере, все руководства, которые я нашел, используют этот подход. Это довольно ужасно, требует конфигурационных файлов, групп пользователей, дополнительных пакетов и т.д. Есть ли способ поделиться локальной папкой без этой программы? В данный момент кажется проще загрузить вещи в облако для передачи файлов между двумя компьютерами с Linux в локальной сети.
Совместное использование между машинами Linux также тривиально и, можно сказать, проще и безопаснее, чем на Windows.
Samba – это реализация нативного совместного использования Windows под Linux, обеспечивающая совместимость между двумя ОС.
Если вы просто хотите загрузить файлы с сервера, например, на Windows, вы можете подключиться к нему по SSH и использовать что-то вроде FileZilla для загрузки/выгрузки файлов с машины. Это не потребует дополнительного программного обеспечения, безопасно и относительно быстро.
Я не знаю, почему Samba является первым вариантом, который предлагают люди, так как нативный способ в Linux – это NFS. Это очень просто:
На сервере:
sudo apt install nfs-kernel-server
sudo vim /etc/exports
- Добавьте запись экспортируемой папки, например:
/home/pi/Downloads *(rw,async,no_root_squash,no_subtree_check)
– это дает всем доступ на чтение и запись, замените “*” на фактический IP-адрес вашего клиентского устройства, для получения дополнительных опций проконсультируйтесь с документацией. sudo exportfs -arv
sudo systemctl enable --now nfs-server
Теперь сервер готов, на клиенте:
sudo mkdir -p /mnt/my_nfs_share
sudo vim /etc/fstab
- Добавьте автоматическую точку монтирования, например:
your.server.ip:/home/pi/Downloads /mnt/pi_nfs_share nfs defaults,vers=4 0 0
sudo mount -a
Вот и все, ваша папка сервера доступна на клиенте по адресу /mnt/my_nfs_share
Samba – это стандартный набор программ для совместимости Windows в Linux и Unix. С 1992 года Samba предоставляет безопасные, стабильные и быстрые файловые и печатные сервисы для всех клиентов, использующих протокол SMB/CIFS, таких как все версии DOS и Windows, OS/2, Linux и многих других.
Samba – это название программного обеспечения для Linux, которое вы называете sambashare, и не путать с SMB
, что не означает samba, а скорее Server Message Block, что является протоколом.
Чтобы поделиться локальной папкой Linux в сети, так чтобы она монтировалась между системами в сети и отображалась как D:
в Windows, вы должны использовать SMB (протокол блоков сообщений службы), так как это то, что знает Windows. Для передачи данных между двумя системами Linux вы будете использовать NFS.
Каждое руководство, которое я нашел, использует этот подход. Это довольно ужасно, требует конфигурационных файлов, групп пользователей, дополнительных пакетов и т.д.
Вы слушаете/читаете от неправильных людей. Samba очень проста, и в RHEL/CentOS 7, 8 или 9, файл по умолчанию /etc/samba/smb.conf
(один файл) уже предварительно настроен так, что все, что вам нужно сделать, это systemctl enable smb
, и ваша папка /home/<имя_пользователя>
уже будет доступна для общего использования, при условии, что вы уже выполнили yum install samba
. Имейте в виду, что она не делится вашей домашней папкой или чем-либо другим, чтобы она была доступна для чтения/записи всем через SMB, это так же просто, как иметь имя пользователя в Linux таким же, как имя пользователя в Windows, и пароль для входа в Windows таким же, как пароль для входа в Linux, и вы получите доступ без запроса.
Примечание: глупый SELINUX (безопасный Linux) требует выполнения дополнительной команды setsebool -P samba_enable_home_dirs on
, так что я могу понять, как незнание этого может расстроить и заставить ненавидеть Samba.
Ответ proxx хорош, т.е. можно просто использовать ssh и scp/rsync для передачи. Однако лучшее решение, которое работает на разных платформах, – это Syncthing. Настройка была тривиальной, и это имеет преимущество работы по LAN, а также по интернету без необходимости настраивать перенаправление портов на маршрутизаторе.
Для Windows на Linux через Syncthing также есть SyncTrayzor, который является просто графическим интерфейсом.
Ответ или решение
Как поделиться локальной папкой в LAN без использования Samba?
Поделиться папкой между Linux-машинами можно несколькими способами, помимо Samba. Один из наиболее распространенных и простых способов — использование протокола NFS (Network File System) или SSH для передачи файлов. Ниже представлены два подхода:
1. Использование NFS для обмена файлами
На сервере:
-
Установите пакет NFS, если он еще не установлен:
sudo apt install nfs-kernel-server
-
Откройте файл конфигурации для экспорта папки:
sudo vim /etc/exports
-
Добавьте строку для экспортируемой папки. Например, для папки
/home/pi/Downloads
:/home/pi/Downloads *(rw,async,no_root_squash,no_subtree_check)
- Замените
*
на фактический IP-адрес вашего клиента, если вы хотите ограничить доступ.
- Замените
-
Примените изменения:
sudo exportfs -arv
-
Включите и запустите службу NFS:
sudo systemctl enable --now nfs-server
На клиенте:
-
Создайте точку монтирования:
sudo mkdir -p /mnt/my_nfs_share
-
Откройте файл
fstab
для автоматического монтирования:sudo vim /etc/fstab
-
Добавьте строку для автоматического монтирования:
your.server.ip:/home/pi/Downloads /mnt/my_nfs_share nfs defaults,vers=4 0 0
-
Смонтируйте все файловые системы:
sudo mount -a
Теперь папка на сервере доступна на клиенте по пути /mnt/my_nfs_share
.
2. Использование SSH для передачи файлов
Если вы не хотите использовать NFS, вы можете передавать файлы через SSH, используя такие утилиты, как scp
или rsync
.
Пример с использованием scp:
-
Для копирования файла с клиента на сервер:
scp /путь/к/файлу user@server_ip:/путь/к/папке/
-
Для копирования файла с сервера на клиент:
scp user@server_ip:/путь/к/файлу /путь/к/папке/
3. Использование Syncthing
Если вам нужно более удобное и эффективное решение, рассмотрите использование Syncthing. Это приложение позволяет синхронизировать файлы между устройствами в реальном времени и работает как на локальной сети, так и через Интернет, не требуя настройки переадресации портов.
- Установите Syncthing на обоих устройствах.
- Настройте устройства, следуя указаниям в интерфейсе.
- После первоначальной настройки вы сможете делиться папками между устройствами легко и быстро.
Заключение
Существует множество способов делиться папками и файлами между Linux-системами в локальной сети. Использование NFS является надёжным и простым вариантом, тогда как SSH предлагает удобные инструменты для передачи отдельных файлов. Syncthing же представляет собой удобное решение для синхронизации данных между машинами. Выбор метода зависит от ваших нужд в безопасности, простоте настройки и удобстве использования.