вторник, 20 декабря 2011 г.

Lubuntu 11.10 - расшарить "Общедоступные"

Преамбула: средний непродвинутый офисный пользователь, пересаженный из-под оффтопика =) в какую-нибудь linux-based desktop operating system, обычно хочет в числе прочего лазить по сети на другие машины и скидывать туда свои файлы / забирать выложенные / редактировать их прямо по сети - и не хочет задумываться о том, как именно это работает =)
В Ubuntu 10.04.3 LTS - до сих пор используем, консервативный и вылизанный Gnome 2 без сырых нововведений незаменим на машинах пользователей - это почти решалось средствами GUI (большинство уже знает - контекстное меню каталога, "Общий доступ", как именно это работает без прав администратора - искать по ключевым словам samba usershare). Почти - потому что у пользователей возникали естественные вопросы: "А почему это он мне файл в общедоступные положил, а я теперь его ни редактировать, ни стереть не могу?"
Всё правильно, права доступа. Да, Ubuntu хватает интеллекта назначить доступному для всех на чтение-запись каталогу права rwxrwxrwx. Но "net usershare ..." почему-то не умеет писать от имени владельца юзершары - по крайней мере, я не нашёл, как это сделать именно в юзершаре. По умолчанию nobody/nogroup, и права доступа тоже по умолчанию - право на запись имеет только владелец.
Обходил проблему указанием в /etc/samba/smb.conf глобальных директив (всё равно шара будет одна) create mask = 0666 и directory mask = 0777 - некрасиво, невозможно сделать средствами GUI и тяжело объяснять пользователям...
Сейчас пытаюсь переходить на Lubuntu - минималистичный такой desktop, libreoffice & thunderbird заменили на abiword+gnumeric & sylpheed (как минимум abiword не очень хорошо понимает документы word, но никто не мешает снести и поставить то, что удобно и привычно)... в общем-то есть всё, что действительно необходимо, и нет ничего лишнего!
Отличная вещь.
Юзершар - нет.
В смысле, нет плагина (или что там в нём) к PCManFM (файловый менеджер в Lubuntu), который умел бы делать юзершары из GUI.
В процессе поиска решения была найдена утилита system-config-samba, про которую я как-то раньше не знал =) Решение тоже не идеальное, но для одного пользователя получилось сделать общедоступный каталог и заставить самбу работать с этой шарой от имени самого пользователя, а не nobody. Что не очень хорошо с точки зрения безопасности =) , но раз уж допускаем нецентрализованный бардак с доступными на запись сетевыми каталогами у каждого пользователя, то чего уж тут... пусть так =)

Итак, пошаговая инструкция.
Терминал.
sudo apt-get install samba system-config-samba python-glade2
Последнее нужно для system-config-samba, эта утилита написана на питоне, и в пакет явно забыли добавить зависимость... Без python-glade2 из GUI system-config-samba запускается на долю секунды и сразу закрывается - даже сам факт запуска трудно заметить, как будто вообще ничего не происходит...
GUI.
Кнопка с ласточкой - Системные - Samba.
Ваш пароль. Предполагается, что ваш пользователь имеет права администратора. После установки Lubuntu единственный созданный в процессе установки пользователь их имеет =)
В открывшемся окне уже указан один общедоступный каталог, с названием ресурса print$. Чтобы он вам когда-то пригодился, у вас должен быть установлен принтер, в сети должны быть Windows-машины, которые нужно подключать по сети к этому принтеру и при этом обязательно автоматически устанавливать драйвер принтера... который ещё надо скачать с сайта CUPS и положить в print$, да не просто так, а выполнив дополнительные действия с конфигом самбы... В общем, интересующиеся читают man cupsaddsmb, а я у себя так никогда этого и не делал - тут слишком мало машин с Windows, и их можно просто напрямую подключить к CUPS - они умеют печатать через IPP (кроме Windows 7 Starter Edition, увы...)
Offtopic off =) Просто не трогайте этот ресурс, он стандартный системный.
Настройка - Параметры сервера. При желании можно указать workgroup - вашу машину будут видеть в этой рабочей группе, здесь сделал рабочие группы по комнатам, среди полусотни пользователей искать нужную машину стало удобнее =)
Опять оффтопик: имя машины самба берёт по умолчанию из имени хоста. Если почему-то надо его сменить - редактировать (с правами администратора, конечно) /etc/hostname и затем поправить в /etc/hosts хотя бы строку, в которой старое имя хоста и 127.0.1.1. Разумеется, чтобы имя сменилось в самбе, нужно перезапустить хотя бы самбу =)
Вкладка Безопасность. Режим аутентификации меняем на Ресурс. Гостевая учётная запись - ставим того пользователя, для которого создаём общедоступный каталог, это важно!!!
Нажимаете OK. Нажимаете зелёный плюс (или Файл - Добавить ресурс, то же самое). Каталог: нажимаете Обзор, находите от корня файловой системы /home/user/Общедоступные (а почему мы не в домашней папке пользователя? - а потому, что вы сейчас root! =), OK. Ставите птички Запись разрешена и Виден. Вкладка Доступ: включаете радиокнопку Предоставить доступ всем.
Всё.
Конфигурация сетевого каталога записана в /etc/samba/smb.conf, можно полюбоваться. Самба уже перезапущена. Доступ по сети к данному конкретному каталогу осуществляется с правами вашего пользователя, так что даже менять права доступа к папке Общедоступные не нужно...
Очевидный недостаток: если в системе два и более пользователя - "общедоступные" можно сделать только кому-то одному. Но в офисах в основном один пользователь, автоматически логинящийся в систему, под которым за компьютером может сидеть кто угодно, правда ?-)

Необходимый бантик. Запустите PCManFM ("Файловый менеджер"). Введите в строку адреса network:///, нажмите ввод - знакомая картина? Теперь выберите Закладки - Добавить закладку, и у вас будет что ответить на вопрос "а как тут в сеть зайти?"
smb:/// - это, насколько я понял, почти то же самое, но через network:/// ещё должны быть видны AFP-шары. Когда-то хотел попробовать сделать "Общедоступные" через AFP, но столкнулся с (забыл какими) трудностями. Если есть быстрый и аккуратный метод использовать AFP для того же, что здесь сделано через SMB - оставьте, пожалуйста, в комментах ссылку, и комьюнити будет вам благодарно ;)
Менее необходимый, но тоже нужный бантик: если вы хотите, чтобы при просмотре network:/// сразу показывались машины, принадлежащие не к рабочей группе WORKGROUP, а, например, к YOUR_WG - введите в терминале gconftool-2 -t string -s /system/smb/workgroup YOUR_WG