===== Введение ===== Эта статья является логическим продолжением следующих статей: * [[Построение домашней сети с применением 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: подключить сетевой диск при запуске]]