Как настроить совместный доступ к папке в локальной сети между Windows и Ubuntu с возможностью редактировать файлы
Попробовал создать общую папку из под Windows и подключиться к ней из Ubuntu. Подключился без проблем, но вот файлы в эту папку не могу добавлять из Ubuntu, хотя в настройках общего доступа в Windows выставлены все галочки.
Пошел от обратного: создал папку на Ubuntu, к которой открыл общий доступ и подключил ее в Windows
Здесь уже лучше, могу создавать файлы из обеих ОС, но вот редактировать не могу, только переименовывать и удалять. А вот отредактированный сохранить не дает. Как в Windows (если файл создан из Ubuntu) так и наоборот.
когда я добавляю файл из Windows, то не могу редактировать его из Ubuntu пока не выполню команду sudo chmod -R a+rwx 1, но это команду мне приходится выполнять каждый раз, когда я добавляю новый файл, это неудобно. Не пойму как сделать чтобы сразу была возможность редактировать.
Ответы (1 шт):
Для реализации того, что в win-мире называется «общими папками» применяется протокол SMB. В nix-мире основной его реализацией является samba.
На сколько я вижу, возможности по конфигурации пользовательских шар (usershare, те что создаются непривилегированными пользователями в том числе через гуйню) в samba до сих пор довольно убогие. У меня так и не получилось придумать, как в сносном виде настроить её в режиме «общей файлопомойки». Так что предлагаю вариант, как это сделать по-нормальному:
Создать специального пользователя для доступа по
smb:useradd -r sambaguest -d /var/lib/samba/ -s /bin/falseгде:
-r— создать системного пользователя-d /var/lib/samba/— просто произвольный условно-подходящий по смыслу домашний каталог.- -s
/bin/false— логин-оболочка, которая запрещает пользователю вход
см. подробности в
man useraddСоздать специальный каталог для шары и дать права
mkdir -p /mnt/my_shareИ задать его владельца и права:
chown root:sambaguest /mnt/my_share chmod 2775 /mnt/my_shareЗдесь важно, что устанавливается группа
sambaguestи setgid-бит, который делает так, что вновь созданные файлы и каталоги будут наследовать группу и права родительского каталога.В
/etc/samba/smb.confзадать в секцииglobal, собственно этого пользователя как гостевого:[global] ; ... guest account = sambaguest ; пользователь от имени которого будут работать гостиИ в том же
/etc/samba/smb.confдобавить описание новой шары:[my] ; Видимое название шары comment = Любимая файлопомойка ; произвольный комментарий path = /mnt/my_share browseable = yes ; разрешить получение её в общем списке writeable = yes ; разрешить запись guest ok = yes ; разрешить доступ гостям create mask = 0664 ; маска прав на создаваемые файлы directory mask = 0775 ; маска прав на создаваемые каталогисм. подробности в
man smb.confПерезапустить samba-демона:
systemctl restart smbdДобавить своего пользователя в группу
sambaguest:gpasswd sambaguest -a engeneПосле этого перелогиниться. (Хотя в свежей бубунте со свежим logind опять всё поломали и окромя релогина придётся явно убить сессию пользователя:
loginctl terminate-user engene.)По желанию, можно симлинкнуть этот каталог в свой домашний:
ln -s /mnt/my_share ~/share
Всё это создаст полноценную совместную файлопомойку: у любого клиента в локальной сити, как и у локальных пользователей в группе sambaguest будет возможность создавать, изменять и удалять все файлы в указанном каталоге.


