неділю, 26 квітня 2015 р.

Расшаривание каталога по сети через Samba

Наверное, все читатели этого блога знают (или хотя бы приблизительно помнят), как в винде делается доступной по сети любому пользователю любая папка. И это очень просто - ПКМ (правая кнопка мыши) по нужной папке, выбор пункта Свойства в контекстном меню, далее Доступ, выбираем Общий доступ и, возможно, некоторые дополнительные параметры. Даже гуглится это всё тоже очень просто и легко.
Для расшаривания каталогов в линуксе есть много разных способов, для доступа же к расшаренному каталогу способ фактически один - смонтировать (присоединить к файловой системе) расшаренный каталог. Монтируется всё через команду mount (постарайтесь узнать побольше информации о ней используя встроенную документацию - man mount, а не чуть что - сразу в гугл). Конечно же, не всё подходит для того, чтобы иметь возможность доступаться до папок расшаренных под Windows и наоборот - чтобы расшаренный каталог под Linux был доступен для Windows. При этом, чтобы был такой же стандартный интерфейс доступа (сетевое окружение - выбор нужной машины и нужной папки). И вот именно для такой задачи существует набор приложений Samba. Samba имеет клиент-серверную архитектуру и потому два основных приложения: samba сервер - для расшаривания, samba клиент - для доступа.
Весь нужный набор приложений для большинства задач в Ubuntu Linux устанавливается вместе с пакетом samba (всё остальное тянется по зависимостях), в Fedora Linux сервер и клиент идут отдельно. Возможно, в других дистрибутивах линукса ещё есть какие-то особенности и отличия, поэтому Вам надо будет погуглить, как установить samba на свой дистрибутив (вполне возможно, что вам надо будет лишь либо сервер, либо клиент). Тем более, что в Интернете имеется множество инструкций, а здесь Я рассматриваю лишь общие черты и подход к работе. Также существует и графическая утилита для конфигурации самба-сервера (system-config-samba), но ведь так не интересно, и поэтому всю настройку будем производить через терминал и конфигурационный файл samba.
Итак, если Вы выполнили установку, можно перейти к настройке, для этого откроем в режиме суперпользователя файл /etc/samba/smb.conf (хотя здесь отличий не встречал, всё же имеется вероятность, что в вашем дистрибутиве может быть другой путь). В конфигурационном файле имеется глобальная секция ([global]), где настраиваются общие параметры для всех расшаренных каталогов, и своя отдельная секция для каждого расшаренного каталога. Также, имеется секция для расшаривания принтера и других устройств. Опять-таки, в разных дистрибутивах (а также, в разных версиях самбы) имеются весомые различия в настройке, по крайней мере пока что. В Ubuntu Linux всё довольно просто, добавляем в конфигурационный файл например такую секцию:
[Shared_Downloads]
path = /home/sergius/Downloads
browsable =yes
writable = yes
guest ok = yes
read only = no
Все параметры имеют название, которое говорит само за себя: path - путь к расшариваемой папке; browsable - можно ли её просматривать; writable - доступна ли она для записи; guest ok - можно ли заходить не авторизированным пользователям, то есть тех, учётной записи которых нет на данном компьютере; read only - инверсия writable (оба параметра существуют возможно для того, чтобы играться с глобальной и локальной настройками, в данном случае достаточно указать один из них).
Расшаривание обычных каталогов по сути большего не требует, но здесь, как видно, расшаривается подкаталог Downloads из домашнего каталога пользователя sergius. А, как мы знаем, никакому пользователю, кроме рута, нельзя лазить по каталогах других пользователей. Поэтому, надо ещё дать права на листинг пользовательских директорий (бит прав х) и права на чтение (а также запись, если мы поставили параметр writable = yes) для всех пользователей. Команда chmod решает эти задачи:
chmod 711 /home/sergius
chmod -R 777 /home/sergius/Downloads
После всех настроек надо перезапустить демон сервера самбы и всё. На Fedora из SELinux дела обстоят куда сложнее. Тут надо и файрволл настроить, чтобы пропускал, да и политика насчёт домашних каталогов пользователей жёстче. Поэтому инструкция побольше и посложней. Самому до такого додуматься почти нереально. Итак, сначала пробуем по этой ссылке How to enable samba share Fedora 20, здесь рассказано о том, как настроить тот selinux и firewall для самбы. Конкретно же каталог расшарить можно опять-таки через конфигурационный файл:
[Downloads]
path = /home/sergius/Downloads
browseable = yes
guest ok = yes
writeable = yes
Далее так же надо дать права на домашний каталог, но... Здесь есть ещё один фокус. Ищем в файле строку security = share (в глобальной секции) и вместо неё пишем:
security = user
map to guest = Bad User
Эти две строчки означают, что любой пользователь, который не имеет учётной записи станет гостём. Ну и после всех настроек, надо перезапустить демон. Опять-таки, возможно, что в других дистрибутивах имеются свои нюансы, поэтому надо будет погуглить, если без этого у Вас что-то не работает.
Ещё хотелось бы добавить, что если хотите таки расшарить какую-то папку, видимую в Windows-домене, но при этом доступную лишь избранным, надо:

1) guest ok = no
2) добавить нужных пользователей через smbpasswd -a <user>

А если выставить имя пользователя и пароль такие же как и доменные, то на вашу шару винда должна пускать без проса пароля, а сразу, как в обычную папку.
Ну и на домашнее задание, попробуйте разобраться как подключиться к шаре через терминал с помощью smbclient и скачать какую-то папку.