Samba в GNOME: доступ к файлам в локальной сети
В Linux доступ к файлам по сети обычно осуществляется через службу Samba - она совместима с Windows, что очень удобно.
В качестве альтернативы для редкой переброски отдельных файлов и каталогов можно использовать LocalSend: он совместим с Android / iOS / MacOS / Windows, что также очень удобно.
Далее рассмотрим кратчайший возможный путь настройки Samba на примере Debian 13 (Trixie) со средой рабочего стола GNOME, чтобы при его использовании не возникало проблем с именами пользователей и разрешениями, но в то же время не было "всем всё можно".
В следующих инструкциях везде заменяйте USER и GROUP на ваше имя пользователя и вашу группу (обычно совпадает с именем пользователя). Также обратите внимание, что в файле /etc/samba/smb.conf всё разделено на разделы, каждый из которых начинается с его имени в квадратных скобках.
С правами root:
- Установить пакеты: samba nautilus-share gvfs-fuse
- В файле /etc/samba/smb.conf в раздел [global] (он находится в самом начале файла) добавьте:
force user = USER
force group = GROUP - Там же удалите целиком весь раздел [homes] (он находится ближе к концу файла).
- Добавьте себя в группу sambashare: usermod -G sambashare USER
- Создайте системного пользователя с именем samba: useradd -rM -s /usr/sbin/nologin samba
- Добавьте пользователя samba в базу данных Samba: smbpasswd -a samba (укажите пароль, который будет использоваться для доступа по сети к вашему компьютеру)
- Перезапустите Samba: systemctl restart smbd
- Перелогиньтесь
Если вам нужно, чтобы ваш компьютер был доступен из Windows 10+:
- Дополнительно установите пакет wsdd2
- В файле /etc/samba/smb.conf в раздел [global] добавьте:
ntlm auth = yes
server min protocol = SMB2
client min protocol = SMB2 - Перезапустите Samba: systemctl restart smbd
Всё. Теперь можно разделять доступ прямо из Файлов (нажимайте правой кнопкой на каталоге). Для доступа с других компьютеров нужно будет указывать имя пользователя samba, но локально все файлы будут принадлежать вашему пользователю, как если бы были созданы вами (т.е. в стиле Windows).
В приложениях созданных под GTK сетевые пути можно открывать напрямую, а для Qt нужно сначала открыть нужный сетевой путь в Файлах, чтобы он примонтировался, а затем уже в приложении зайти в каталог /run/user/1000/gvfs. 1000 - это ваш UID (идентификатор пользователя), он может быть другим (1001, 1002 и т.д.), если исторически ваш пользователь в этой системе уже не первый.
Не забывайте про возможность создания закладок, ведущих на /run/user/1000/gvfs или на часто используемый сетевой путь.
Чтобы сетевые точки монтирования, созданные Файлами были доступны из приложений flatpak, с нужно добавить в глобальные разрешения для файловой системы строку xdg-run/gvfs с помощью Flatseal или в терминале: flatpak --user override --filesystem=xdg-run/gvfs
Проблемы с доступом
Для обнаружения компьютеров в сети Файлы используют Avahi (также известен как Bonjour), а для ресолвинга IP адресов Avahi использует mDNS. Поэтому распространённой проблемой является невозможность зайти ни на один компьютер в сети из-за того, что ваш домашний роутер не поддерживает трансляцию mDNS. Выглядит это так, что список компьютеров в Файлах отображается, но при тычке на любом из них практически сразу вылетает ошибка доступа вместо нормального запроса имени и пароля.
Самым простым решением является прописать 1.1.1.1 (DNS сервер Google) или 8.8.8.8 (DNS сервер CloudFlare) в качестве основного в настройках DHCP-сервера вашего роутера. Можно также, например, установить и настроить на вашем компьютере dnscrypt-proxy (в таком случае в качестве DNS адреса нужно будет указать 127.0.0.1 - т.е. вашу собственную машину).
efenstor.net