воскресенье, 3 января 2010 г.

Ssh - ubuntu - samba - ubuntu или квест для линукса с оркестром

Всё началось с того, что знакомый дал мне винчестер, чтобы я поперекидывал на него всякую инфу. Тут надо заметить, что у меня стоит 2 компьютера, один из которых служит мини-сервачком: роутер, качалка и ещё по мелочи. Живёт этот сервачок на балконе. На обоих машинках стоит Ubuntu, а связаны они гигабитной сеткой.
Прикинув, что самому разбираться, что именно заливать на эту "дискетку", лень, решил открыть другу доступ на ssh, и пускай возится. Было холодно и сыро, на балкон лезть не хотелось, посему винчестер подключил к рабочему компьютеру, планируя расшарить при помощи nfs.

И вот тут меня ждал облом. Оказалось, что в десктопном ядре выключен nfs-kernel-server. Разбираться с userspace-серверами не хотелось. Махнув рукой, решил попробовать расшарить самбой через гномовскую гуишку. Тыц-тыц, "свойства папки", пара галочек - готово. Захожу на сервачок по ssh, устанавливаю smbfs, монтирую шару командой sudo mount -t cifs //10.1.1.96/pocket /media/pocket - вроде работает. Пробую копировать - амба, файлы копирует, а при копировании каталогов создаёт каталог, а файлы в него писать отказывается. На права ругается.

Ладно, думаю, мало ли, какая бага может быть в гуях. Правлю smb.conf, создаю шару ручками - та же фигня. Часа полтора я плясал над этим конфигом. В конце-концов, от безнадёги решил попробовать копировать, залогинившись на ssh под рутом. Всё прекрасно копируется. Ага, значит конфиг самба-сервера тут совершенно ни при чём! 5-минутное курение мануала опций mount.cifs выявило опцию "noperm". В общем, что происходило: клиент создаёт каталог; сервер меняет владельца на nobody (стандартный владелец для гостевой учётки); клиент смотрит права на запись в каталог, видит, что у него нет разрешения на запись и отказывается копировать. Опция noperm позволяет работать с файлами на примонтированном устройстве без проверки прав со стороны клиента. Ещё пришлось добавить к mount опцию "iocharset=utf8", т.к. по умолчанию имена создаваемых файлов передаются в кодировке nls_default, а nls_default в убунтушном ядре выставлен по умолчанию в cp437. В конечном итоге рабочая команда для монтирования выглядела так:
sudo mount -t cifs //10.1.1.96/pocket /media/pocket -o username=guest,password="",noperm,iocharset=utf8

В конечном итоге, знакомому был выдан доступ по ssh и мне не пришлось тратить время на возню с выбором и копированием файла (вместо четырёх часов возни с самбой :) ).

Комментариев нет:

Отправить комментарий