===== Введение =====
Эта статья является логическим продолжением следующих статей:
* [[Построение домашней сети с применением Linux, Android, Windows и MacOS]] - основные моменты настройки сети;
* [[Организация файлообменной системы в домашней сети]] - обсуждение теоретической части задачи настройки файлообменной системы;
В предыдущих статьях были описаны тезисы и организационные моменты при создании файлообменной системы в домашней сети. Рассмотрим практическую реализацию. Не обязательно делать всё как описано - главное понять суть и использовать возможности программных средств. Пользователю потребуются знания, связанные с установкой программного обеспечения в существующем дистрибутиве, прав доступа в Unix, работы в текстовых редакторах.
Несколько допущений в модели сети:
- На Windows-машине, на диске C:\ установлена только операционная система и на нём же сохраняется профиль пользователя. На диске D:\ располагаются остальные данные: видео, музыка, игры и прочее.
- На Linux-машинах, системные каталоги отделены от пользовательских данных - т.е. каталоги: /home , /data/video , /data/music , /data/downloads , /data/tmp представляют собой отдельные разделы или диски большого объёма, примонтированные к корневой файловой системе. Можно даже сделать /data отдельным разделом, а в нём уже разместить физические каталоги video, music, tmp.
- Домашняя сеть работает внутри квартиры или домохозяйства и доступ к ресурсам по логинам и паролям не делается. Для случая, когда машины работают в локальной сети многоквартирного дома или домовой сети, следует применять доступ к ресурсам по логину\паролю - этот ариант не описывается в данной статье.
Схема домашней сети:
[{{ Homelan-ver20.png?500 |Схема модели домашней сети}}]
===== План работ =====
Сперва настроим серверную часть.\\
Компьютер с Windows (comp4).
* Открываем доступ "только на чтение" "для всех" в каталог видеоколлекции d:\Video
* Открываем доступ "только на чтение" "для всех" в каталог музыкальной коллекции d:\Music
* Открываем доступ на чтение и запись "для всех" в каталог d:\tmp
Компьютер с Linux (comp1).
* Установка samba
* Открываем доступ "только на чтение" "для всех" в каталог видеоколлекции /data/video
* Открываем доступ "только на чтение" "для всех" в каталог музыкальной коллекции /data/music
* Открываем доступ на "чтение" "для всех" в каталог торрент-загрузок /data/downloads
* Открываем доступ на "чтение и запись" "для всех" в каталог /data/tmp
Компьютер с Linux (comp2).
* Установка samba
* Открываем доступ "только на чтение" "для всех" в каталог видеоколлекции /data/video
* Открываем доступ "только на чтение" "для всех" в каталог музыкальной коллекции /data/music
* Открываем доступ на "чтение и запись" "для всех" в каталог /data/tmp
Компьютер с MacOS (comp3).
* Открываем доступ "только на чтение" "для всех" в каталог видеоколлекции /data/video
* Открываем доступ "только на чтение" "для всех" в каталог музыкальной коллекции /data/video
* Открываем доступ на "чтение и запись" "для всех" в каталог /data/tmp
После того, как серверная часть настроена и проверена, можно приступить к организации монтирования ресурсов. Для примера, будет рассмотрено несколько вариантов доступа к сетевым каталогам между разными операционными системами.
===== Настройка серверной части =====
Серверная часть отвечает за публикацию ресурсов в сети. В разных операционных системах, серверная часть реализована по-разному. В Windows - в виде сервиса "Сервер", Linux - в виде демона SAMBA, MacOS - в виде какой-то своей сборки SAMBA. Ниже будет рассмотрена настройка серверной части вышеперечисленных систем.
==== Настройка Windows (comp4) ====
Трудностей не представляет:
[{{ Winxp-lancatalog-nastr.png?400}}]
- Через "Мой компьютер" находим каталог, который будет открыт в сеть.
- Вызываем для этого каталога контекстное меню (правая кнопка мыши) - откроется окно свойств каталога (папки).
- Переходим на вкладку "Доступ".
- Cтавим галочку на "Открыть общий доступ к этой папке". В поле "Имя общего ресурса" вводим имя каталога, как оно будет отображаться в сети.
- Если есть желание разрешить изменение файлов в этом каталоге, можно поставить галочку на "Разрешить изменение файлов по сети". В этом случае все пользователи сети смогут читать\записывать\удалять файлы в этом каталоге. Как уже условились, эту галочку нужно поставить только для каталога tmp
Возможен вариант, что вышеописанные поля будут "затенены" (т.е. нельзя в них что-то изменить) - это значит, что возможно не запущена служба "Сервер". Возможно система спросит "а не хотители запустить службу сервер прежде чем открыть доступ?" На это отвечаем положительно. Если предложения не поступило и поля остаются затенёнными - пробуем запустить службу "Сервер" вручную:
- Переходим: Пуск --> Панель управления --> Администрирование --> Службы. Для удобства раскрываем список на весь экран и переходим ниже на вкладку "Стандартный";
- Ищем в списке строку с именем "Сервер" и кликаем по ней 2 раза. Откроется окно управления службой;
- Тип запуска ставим "Автоматически", жмём ниже кнопку "Пуск". Программа попробует запустить службу. Если ей это удастся, то строка "Состояние" сменится с "Остановлено" на "Работает". Если служба не запустилась, открываем в окне "Администрирование" - "Просмотр событий" и изучаем логи на предмет ошибок;
- Далее в окне управления службой жмём "Применить", затем "ОК" и закрываем окно.
==== Настройка Linux (comp1 и comp2) ====
Независимо от дистрибутива, через менеджер пакетов или команды установки, нужно установить пакеты **samba**, **smbclient** и **cifs-utils** с зависимостями.\\
В Debian и Ubuntu, из консоли, это делается так:
# apt-get install samba smbclient cifs-utils
''samba'' - это собственно сервер, ''smbclient'' и ''cifs-utils'' - клиентская часть, - компоненты и библиотеки для подключения к SMB-ресурсам (шарам).
Далее действуем по такому плану:
- Определяемся с местоположением ресурсов локального компьютера, которые будут публиковаться в сеть (планируем ресурсы).
- Находим конфигурационный файл.
- Редактируем его.
- Проверяем на наличие ошибок и если таковые обнаружились - исправляем их редактированием конфигурационного файла.
- Перезапускаем демон.
- Проверяем как это работает по сети и, в случае необходимости, корректируем конфиг.
Теперь рассмотрим подробнее:
**1.** По условию задачи, нужно публиковать в сеть 3 каталога: /data/video, /data/music, /data/tmp , причём последний каталог с правами на чтение и запись.
**2.** Конфигурационный файл обычно располагается в каталоге /etc/samba и обзывается smb.conf . Править его надо из под учётной записи root. \\
Логинимся под root`ом. На всякий случай делаем резервную копию smb.conf:
$ su -
password:
#
# cd /etc/samba
# cp smb.conf smb.conf.bak
# mcedit smb.conf
**3.** Можно убрать все строки из начального файла и добавлять нужные, а можно редактировать уже существующий конфиг. За основу можно взять этот минимальный пример:
[global]
dos charset = 866
unix charset = UTF8
display charset = 866
workgroup = workgroup
server string = %h smb server
bind interfaces only = Yes
security = SHARE
obey pam restrictions = Yes
pam password change = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
name resolve order = host bcast wins
dns proxy = No
panic action = /usr/share/samba/panic-action %d
load printers = No
[video]
comment = cinema
path = /data/video
guest ok = Yes
[music]
comment = music
path = /data/music
guest ok = Yes
[tmp]
comment = rw dir
path = /data/tmp
force user = username
force group = usergroup
read only = No
create mask = 0666
directory mask = 0775
guest ok = Yes
Данный конфиг настраивает сервер на публикацию трёх вышеописанных ресурсов. Несколько слов по опциям:
* **dos charset**, **unix charset**, **display charset** - устанавливают корректное отображение имён файлов в кодировке utf-8 в Windows,
* **workgroup** - задаёт имя рабочей группы. По условию задачи, все компы домашней сети находятся в группе workgroup,
* **comment** - краткое описание каталога,
* **path** - реальный путь к каталогу,
* **guest ok = Yes** - разрешить гостевой вход в каталог (так если все пользователи смогут прочитать файлы из каталога).
Теперь отдельно разберём секцию tmp:
* опции **force user** и **force group** задают группу и имя пользователя, с которым будут создаваться файлы в файловой системе при записи в каталог из сети. В качестве username нужно подставить реальное имя пользователя и имя группы, зарегистрированного в системе.
* **read only = No** - задаёт что файлы в каталоге можно изменять,
* **create mask = 0666** и **directory mask = 0775** задают права доступа к записываемым на диск файлам из сети.
Для каталога /data/tmp нужно изменить права доступа, чтобы и сервер samba мог записывать в него и локальный пользователь. Делаем:
# chown username:usergroup /data/tmp
# chmod 775 /data/tmp
Этими командами мы меняем хозяина каталога на текущего пользователя т.е себя **username**, который находится в **usergroup**. У Вас могут быть другие значения - смотрите свой логин\группу. Далее каталогу даются права на чтение и запись для этого пользователя, а для остальны - только чтение и просмотр каталога.
**4.** После правки конфига запускаем утилиту проверки синтаксиса:
# testparm
Если ошибок нет переходим к следующму шагу.
**5.** Перезапускаем сервер:
# /etc/init.d/samba restart
**6.** Далее проверяем как "видятся" каталоги по сети и правильно ли работают права доступа - с другой машины пробуем зайти в сетевые каталоги по имени компьютера и пробуем записать файлы.
=== Если пользователей на компьютере несколько ===
Здесь сделаем отступление и рассмотрим вариант, когда на компьютере зарегистрирован не один пользователь, а несколько. Как сделать так, чтобы файлы в каталоге /data/tmp были доступны для модификации всем пользователям? Это делается путём добавления в систему отдельной группы и пользователя, а затем в эту группу добавляются нужные пользователи. Такими образом права на чтениеи запись объединяются на уровне прав группы. Каталог tmp в Samb`е при этом настраивается на доступ именно под отдельной группой\пользователей. Делаем так:
# groupadd smbshare
# useradd -s /bin/false -d /home/smbshare -c smbowner -g smbshare smbshare
Этими командами мы создали группу, а затем создали как-бы виртуального пользователя, который будет объединять права и поместили его в эту группу.\\
Теперь редактируем файл /etc/group - открываем его в редакторе, находим последнюю строку и дописываем в конец, через запятую всех локальных пользователей, что будут работать с сетевым каталогом:
smbshare:x:2002:username1,username02, username03
Где ''username1'', ''username02'', ''username03'' - это логины локальных пользователей в системе. Для вступления изменений в силу, нужно чтобы эти пользователи перелогинились.
Теперь редактируем секцию каталога **tmp** файла smb.conf и меняем параметры **force user** и **force group** на имя созданной группы и пользователя:
[tmp]
comment = rw dir
path = /data2/smb/tmp
force user = smbshare
force group = smbshare
read only = No
create mask = 0666
directory mask = 0775
guest ok = Yes
Не забываем, что нужно изменить ещё и права доступа на каталог **/data/tmp** , чтобы новый пользователь мог писать в него:
# chown smbowner:smbshare /data/tmp
# chmod 775 /data/tmp
После модификации конфига, не забудьте выполнить Шаги 4-6.
==== Настройка MacOS (comp3) ====
Открываем "Системные настройки" через меню со значком яблока в Finder и переходим на "Общий доступ".
[{{ Macos-netsrv01.png?300 }}]
Откроется окно управления сетевыми ресурсами.
* Ставим галочку на "Общий доступ к файлам".
* Ставим курсор в окно "Общие папки", после чего откроется окно выбора каталогов для публикации.
[{{ Macos-netsrv02.png?300 }}]
Выбираем нужные каталоги и жмём "Добавить".
[{{ Macos-netsrv03.png?300 }}]
Нажимаем на кнопку "Параметры...". Появится окно настроек типа доступа.\\
Убираем галочки со всех пунктов и оставляем только на "Предоставление общего доступа к файлам и папкам с помощью SMB"
[{{ Macos-netsrv04.png?300 }}]
Далее для каждого каталога перечисляем пользователя (должен быть зарегистрирован в системе) и права. Для гостевого (без пароля\логина) доступа к ресурсу, выбираем пользователя Everyone.
[{{ Macos-netsrv05.png?300 }}]
На этом настройка завершена. Осталось проверить работоспособность путём подключения к ресурсам с другого компьютера.
===== Организация доступа к сетевым каталогам (клиентская часть) =====
Клиентская часть выполняет функцию подключения к уже существующим ресурсам и их представления в локальной файловой системе. Если ресурсов в сети много, прежде чем приступить к настройке, будет лучше составить план что и куда монтировать.
==== Компьютер с Windows ====
=== Статическое монтирование ===
В WindowsXP возможно только статическое монтирование ресурсов и только как дисков. В случае недоступности ресурсов, возможны некоторые недолгие "зависания" "Проводника" и других программ. Как и в остальных случаях, сперва определяем что и куда будет монтироваться.
[{{ Winxp-netdisk01.png?300 }}]
Далее открываем "Проводник" и переходим в меню "Сервис" --> "Подключить сетевой диск...".
[{{ Winxp-netdisk02.png?300 }}]
Откроется окно мастера подключения ресурсов. Вводим букву диска (самый удобный вариант, когда буква диска будет совпадать с первой буквой сетевого каталога), затем вводим полный адрес к ресурсу, например **\\comp1\tmp** и ставим галочку "''Восстанавливать при входе в систему''". Если ресурс запаролен, то нажимаем ссылку "''Подключение под другим именем''", откроется окно с полями для ввода логина\пароля, куда нужно будет ввести учётные данные. Далее жмём "Готово" и если ресурс доступен, в системе появится виртуальный диск сетевого ресурса.
Такую процедуру нужно выполнить на comp4 для всех ресурсов.
=== Временное подключение к ресурсу ===
Для временного подключения к ресурсу можно воспользоваться "Проводником" или файловыми менеджерами.
В "Проводнике", в адресной строке записывается полный адрес ресурса, например \\comp1\tmp и осуществляется переход. Также можно обратиться к ресурсу через обозреватель сети "Сетевое окружение".
==== Компьютер с Linux ====
Для начала определимся ''что'' и ''куда'' будет монтироваться. На мой взгляд, самый удачный вариант организации точек монтирования (куда будет монтироваться ресурс) такой:
/mnt/имя_удалённой_машины/имя_ресурса
Настраиваем монтирование ресурсов к ''comp1''. Предположим, что на компе нужно примонтировать следующие ресурсы таких компов с такими правами:
* comp2
- /data/video r
- /data/music r
- /data/tmp rw
* comp3
- /data/video r
- /data/music r
- /data/tmp rw
Создаём точки монтирования. Логинимся в системе как root и создаём инфраструктуру каталогов для ''comp2'' :
- cd /mnt
- mkdir comp2
- mkdir video
- mkdir music
- mkdir tmp
Тоже самое для ''comp3'':
- mkdir comp3
- mkdir video
- mkdir music
- mkdir tmp
=== Статическое монтирование ===
Теперь настраиваем непосредственно монтирование. Это делается в файле **/etc/fstab** . Для нашего случая, формат записей в файле будет примерно таков:
что_монтируем куда_монтируем файловая_система опции 0 0
С помощью любимого текстового редактора в конец файла /etc/fstab добавляем строки для ''comp2'':
//comp2/video /mnt/comp2/video cifs ro,iocharset=utf8,gid=1000,uid=1000,_netdev 0 0
//comp2/music /mnt/comp2/music cifs ro,iocharset=utf8,gid=1000,uid=1000,_netdev 0 0
//comp2/tmp /mnt/comp2/tmp cifs rw,iocharset=utf8,gid=1000,uid=1000,_netdev 0 0
Для comp3:
//comp3/video /mnt/comp3/video cifs ro,iocharset=utf8,gid=1000,uid=1000,_netdev 0 0
//comp3/music /mnt/comp3/music cifs ro,iocharset=utf8,gid=1000,uid=1000,_netdev 0 0
//comp3/tmp /mnt/comp3/tmp cifs rw,iocharset=utf8,gid=1000,uid=1000,_netdev 0 0
В конце записи нужно обязательно оставить пустую строку. Вместо значения 1000, нужно подставить UID и GID того пользователя, кто работает на данном компьютере чаще всего. Эти цифры можно взять с помощью команды **id**. Пример:
$ id
uid=1000(user) gid=1000(user) группы=1000(user),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),115(scanner)
Опции: \\
**ro** - тип монтирования "только чтение",\\
**rw** - тип монтирования "чтение и запись",\\
**iocharset=utf8** - преобразовывать имена файлов и каталогов в UTF8, если не поставить, не ASCII символы будут отображаться иероглифами,\\
**uid** и **gid** - права с которыми будут отображаться файлы и каталоги на локальной машине,\\
**_netdev** - указывает на то, что файловая система располагается в сети и если сеть не работает не делаются попытки монтирования. Данный параметр обрабатывается по-разному в разных системах, \\
**0 0** - дамп и порядок проверки. В нашем случае эти цифры должны быть по нулям.
Для проверки монтирования, включаем остальные компьютеры и выполняем от имени root`а команду:
# mount -a
- эта команда примонтирует ещё не монтированные ресурсы, описанные в /etc/fstab . В случае проблем, будут выведены сообщения об ошибках. Если всё прошло удачно, переходим в /mnt , проверяем доступность ресурсов и параметры чтения\записи.
Сразу следует напомнить, что возможны ситуации, когда не все компьютеры (описанные в fstab) будут доступны в сети при загрузке машины. В этом случае, при загрузке, делается несколько попыток примонтировать ресурс и если ничего не выходит, попытки прекращаются. Когда удалённый компьютер оказывается включенным, ресурс не будет смонтирован автоматически. Поэтому, при обнаружении что ресурс ещё не смонтирован, а удалённый компьютер включён, следует от имени root`а ввести команду **mount -a** и все ресурсы смонтируются.
=== Автоматическое монтирование при обращении (по требованию) ===
Вышеописанный вариант монтирования несколько неудобен для децентрализованной файлообменной системы, поскольку случаев недоступности сетевых ресурсов (когда один или несколько компьютеров выключены), будет достаточно много и каждый раз вручную придётся вводить команду для монтирования. Есть вариант использовать демон **autofs** - он будет отслеживать обращения к сетевым ресурсам и при необходимости монтировать их на какое-то определённое время.
О варианте использования autofs, читайте в статье "[[Настройка монтирования ресурсов Samba по требованию в Debian]]".
=== Временное подключение в классическом GNOME ===
На "скорую руку" ресурс можно подключить в классической среде GNOME следующим образом:\\
1. Переходим через меню: "Переход" --> "Соединиться с сервером..."
[{{ Gnome-net-folder-connect.png?300 }}]
2. Выбираем "Тип сервиса:" "Ресурс ОС Windows". \\
3. В поле "Сервер:" вводим имя компьютера, на котором открыт нужный нам сетевой каталог.\\
4. В поле "Папка:" вводим имя каталога.\\
5. Жмём "Соединиться".\\
[{{ Gnome-net-folder-connect02.png?300 }}]
Таким образом ресурс будет примонтирован к виртуальной файловой системе GNOME. Чтобы его отмонтировать, нужно открыть Nautilus, в колонке "Места" найти строку с именем сервера и нажать в этой же строке рядом кнопку типа "eject". Если какой-то из файлов используется, отмонтировать ресурс не удастся.
==== Компьютер с MacOS ====
=== Временное и статическое монтирование ===
Открываем "Finder" и переходим: "Переход" --> "Подключение к серверу..."
[{{ Macos-netshare01.png?300 }}]
Откроется окно подключения к серверу. В строке "Адрес сервера:" вводим полный путь к ресурсу: \\
smb://comp1/video
[{{ Macos-netshare02.png?300 }}]
Далее жмём "Подключиться". Если к ресурсу нужен логи или пароль, то откроется окно с приглашением ввода логина\пароля.
Если ресурс смонтировался, ярлык к нему будет в боковой панели Finder`а.
Чтобы настроить автоматическое монтирование, открываем "Системные настройки" через меню со значком яблока в Finder.
[{{ Macos-netshare03.png?300 }}]
Далее переходим на "Учётные записи".
[{{ Macos-netshare04.png?300 }}]
Теперь переходим на "Объекты входа", откроется список автоматически-загружаемых приложений при входе в систему. Нажимаем на "+" и выбираем примонтированный ресурс (уже должен быть смонтирован). Для того, чтобы скрыть приглашение на ввод логина\пароля, ставим галочку на "скрыть".
===== Смотрите также =====
* [[http://www.nixzeya.ru.net/forum/index.php?topic=240.msg633#msg633| Обсуждение статьи на форуме]]
* [[Построение домашней сети с применением Linux, Android, Windows и MacOS]]
* [[Организация файлообменной системы в домашней сети]]
===== Источники информации =====
* [[http://heximal.ru/blog/vsyachina/mac-os-x-podklyuchit-setevoj-disk-pri-zapuske/| Mac OS X: подключить сетевой диск при запуске]]