Настройка локальной сети в Linux. Доступ к общей папке Windows из Linux Локальная сеть в ubuntu

Несмотря на кажущуюся простоту доступа к общей папке Windows из Linux некоторые пользователи, особенно начавшие пользоваться Linux, могут столкнуться с проблемой, которая, на первый взгляд, может оказаться неразрешимой. При этом пользователи Windows будут говорить "ничего не знаю – от меня пули вылетают". Чтобы не возникло впечатления о "глючности" Linux попробуем в этом вопросе разобраться.

Рассматривается частный вопрос о работе в домашней сети Linux с общей папкой Windows XP с целью изменения в ней данных, то есть записи и удаления. Содержание публикации не раскрывает работу с более поздними версиями Windows (хотя ситуация с ними может быть похожей), а также работу в доменных сетях, то есть в сетях с централизованным управлением политикой паролей и базой данных пользователей, например, Windows Active Directory.

Итак, на Windows открывается папка общего доступа. Но при обращении пользователя Linux к этой папке через сетевое окружение оказывается, что "достучаться" невозможно даже к узлу.

В самом начале можно столкнуться с проблемой отсутствия доступа даже к рабочей группе.


Это может объясняется небольшой инерционностью при первом обращении по протоколу SMB, который используется для доступа к папкам и файлам Windows из сети. Подождите немного, хотя бы несколько секунд, и повторите попытку. В конечном счёте Вы компьютер "увидите".


При дальнейшем обращении высветится форма запроса полномочий доступа, например:


Пользователь Linux вводит свой пароль и... снова на экране получает эту же форму запроса. И так может продолжаться до бесконечности.

Причина в том, что как в Linux, так и в Windows, в целях обеспечения безопасности на уровне файловой системы действуют так называемые права на файлы и папки. А в данном случае пользователь Linux пытается обратиться к папке Windows под своим именем и паролем, о котором Windows не имеет никакого представления. Обращаться к ресурсу необходимо с использованием тех данных, о которых "знает" Windows. То есть, используя какие-то имя пользователя и пароль Windows, которые Windows известны.

Так как на русскоязычных Windows имена пользователей могут быть кириллическими, то есть, например, Администратор, Вася, Петя, красотка и т.п., то для целей предоставления доступа к папке попросите администратора компьютера Windows завести пользователя с латинским логином или переименовать существующий логин на латинские буквы. Например, можно создать специального пользователя,


у которого будет постоянный пароль и он будет находиться в группе "Пользователи". Этим можно исключить возможные дальнейшие случаи "системного непонимания" между Linux и Windows.

Права на предоставляемую в доступ папку нуждаются в некоторой корректировке, так как по умолчанию для пользователей назначаются права "только чтение".

Пояснение. Чтобы увидеть полное содержание вкладки "Безопасность" на системе Windows откройте Проводник и в разделе "Сервис – Свойства папки – Вид" снимите галочку в поле "Использовать простой общий доступ к файлам".




Не нужно выставлять "Полный доступ" ни на вкладке "Доступ – Разрешения", ни на вкладке "Безопасность", хотя очень многие поступают именно так. Полный доступ подразумевает разрешение на смену как разрешений на объект, так и его владельца. И если в какой-то мере это может быть допустимо в рамках домашней сети из 2-3 компьютеров, то в других случаях лучше так не делать.

Лучше поставить галочку в поле "Изменение" (Все – это активные, то есть не отключенные, учётные записи пользователей на компьютере Windows).


Далее необходимо перейти к вкладке "Безопасность" и для пользователей компьютера Windows поставить галочку в поле "Запись".



Но и это ещё не всё. Нужно нажать на кнопку "Дополнительно" и для строки с внесённым изменением (столбец "Разрешение – Запись") добавить галочки в полях "Обзор папок", "Содержание папки", "Удаление подпапок и файлов", "Удаление".




При этом установить галочку в поле "Применять эти разрешения к объектам и контейнерам только внутри этого контейнера" (см. рисунок выше).

Ого, сколько всего. Прямо страсти какие-то мексиканские. И всё это надо сделать на Windows.


Теперь вернёмся к вопросу обращения к папке из Linux. Вводим правильные значения. Вместо


укажем имя пользователя в формате компьютер\пользователь. Так как компьютер, к которому осуществляется обращение называется H-38, а функционирующий в моей маленькой сети сервер DHCP назначает имя домена vot, то ввожу необходимые данные и, наконец-то, получаю перечень общих ресурсов компьютера H-38.



Как видно из рисунка, клиент Samba отобразил не только папку Data, но и скрытые ресурсы ADMIN и C, используемые системой Windows для целей администрирования (скрытые ресурсы Windows отображаются значком $ после имени ресурса).

Однако при попытке обращения к папке Data система снова выдаёт запроc на введение учётных данных. При этом по умолчанию предлагается подключиться анонимно.


Вспомните, что общий доступ был предоставлен для пользователей Windows. Поэтому необходимо вводить имя и пароль конкретного пользователя.

Если пароль пользователя Windows никогда меняться не будет (а в самом начале рекомендовалось создать на Windows пользователя с неизменяемым паролем), то можно выбирать "Запомнить навсегда" и тогда пароль при обращении к папке общего доступа в дальнейшем запрашиваться не будет. Это же справедливо и для обращения к компьютеру. В приводимых примерах пароль не сохраняется.

Все манипуляции, по открытию общего доступа в локальной сети к папке, я проводил в Ubuntu 14.04 LTS.

  1. Для начала, щелкните правой кнопкой мыши на папке, которую вы хотите предоставить в сеть и выберите опцию «Общедоступная папка локальной сети». Если данная опция не доступна из контекстно меню по щелчку мышки, то Вам необходимо открыть Ubuntu Software Center — найти и устанавливать nautilus-share . После перезапустить Nautilus, командой:
    nautilus -q

    или просто выйти и зайти снова в систему.

  2. Когда откроется диалоговое окно «Общий доступ к папке», выберете «Опубликовать эту папку». Нажмите кнопку «Установить службу», если система этого попросит.
    После финиша процесса установки, придется снова выйти и зайти в систему.
  3. После всех инсталляций, по настройке папки для общего доступа, откроются дополнительные опции. В зависимости от ваших потребностей, Вы можете включить: «Разрешить другим пользователям изменять содержимое папки», «Гостевой доступ (для пользователей без локальной учетной записи)». На этом этапе можно применить все настройки. Данная папка будет доступна по локальной сети для всех пользователей .
  4. Но если вы хотите, чтобы клиентские машины, могли получать доступ к этой папке только по имени пользователя и паролю, то нужно выполнить следующие условия:
  • Открыть Ubuntu Software Center, найти и установить system-config-samba .
  • Запустить из меню, установленный графический инструмент настройки службы Samba.
  • Настройки -> Пользователи Samba.
  • Нажмите кнопку «Добавить пользователя».

Затем выберите имя пользователя, введите имя в «Имя пользователя Windows» и «Пароль Samba» -> OK.

Теперь, вы можете получить доступ к этой папке из локальной сети другой «машины», используя имя пользователя и пароль.

Перед тем, как приступать к настройке сетевого подключения в Линукс, надо начать с того, что посмотреть — какие настройки сети используются сейчас. Для этого надо воспользоваться командой ifconfig . В информационном режиме она доступна и без прав ROOT, хотя для её полноценного использования лучше получить привилегии суперпользователя, введя команду sudo ifconfig . Результатом её работы будет список имеющихся в системе сетевых подключений и их параметров.

В разных версиях Линукс имя сетевого интерфейса может быть сокращением от Ethernet — eth0, eth1, eth2 и т.п.

На интерфейс lo — сокращение от loopback — то есть локальная петля с адресом 127.0.0.1 .
Для примера рассмотрим интерфейс Eth0.
В строке inet addr отображается текущий IP-адрес компьютера в локальной сети, подключенной к этой сетевой карте. В примере это: 192.168.1.144
Bcast — это широковещательный адрес в сети, так называемый Бродкаст(Broadcast).
Mask — это маска сети.
HWaddr — это аппаратный адрес сетевой карты, он же MAC-адрес, используемый на канальном уровне.

Информацию о текущих подключения узнали, теперь рассмотрим настройку локальной сети в Linux. Сделать это можно тремя способами:
1 — Через графическую оболочку
2 — через команду ifconfig или инструмент Network Manager
3 — через конфигурационные файлы сетевого сервиса Netork или Networking.

На мой взгляд, последний способ — самый удобный и надёжный, а значит — правильный. Чтобы настроить сеть в Линукс надо открыть файл, содержащий конфиг интерфейса. Тут всё зависит от того, какой дистрибутив Linux используется.

Вариант 1. В дистрибутивах, основанных на Debian (Ubuntu, Kubuntu и т.п.)

Файл с параметрами сетевого подключения:

/etc/network/interfaces

Для того, чтобы изменить в linux настройки сети, файл его надо с правами root любым текстовым редактором. Например, через nano:

Sudo nano /etc/network/interfaces

Для автоматического получения адресов от DHCP-сервера надо пописать следующее:

Allow-hotplug eth0 iface eth0 inet dhcp

Если адрес надо прописать статически, то указываем следующее:

Allow-hotplug eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.1

В этом конфиге рассмотрен пример обычной домашней сети, где адрес компьютера будет 192.168.1.2, адрес шлюза и DNS-сервера (их фукнции обычно выполняет wifi-роутер)- .

Вариант 2. RedHat-based дистрибутивы (Fedora, OpenSuse, CentOS)

Файл с настройками сети Linux:

/etc/sysconfig/network-scripts/ifcfg-eth0

Открываем его так же через nano или vim:

Vim /etc/sysconfig/network-scripts/ifcfg-eth0

В случае автоматического получения настроек от DHCP-сервера:

DEVICE=eth0 BOOTPROTO=dhcp HWADDR=00-1C-1B-11-F6-07 ONBOOT=yes

Статический IP-адрес:

DEVICE=eth0 HWADDR=00-1C-1B-11-F6-07 IPADDR=192.168.1.2 NETMASK=255.255.255.0 BROADCAST=192.168.1.255 GATEWAY=192.168.1.1 ONBOOT=yes

IP-адреса DNS-серверов в этом случае прописываются в файле

/etc/resolv.conf

вот пример для публичных DNS-серверов от Google:

Nameserver 8.8.8.8 nameserver 8.8.4.4

Настройка сети в Линукс завершена. Остаётся только перезапустить сеть командой:

Service network restart

Собственно всё.

В качестве постскриптума расскажу как включить и выключить сеть в Linux. Делается это через всё ту же команду ifconfig. Выключить сетевую карту eth0:

Sudo ifconfig eth0 down

Включить сетевую плату в Линуксе обратно:

Sudo ifconfig eth0 up

Полностью остановить работу всех сетевых интерфейсов.

Service network stop

/etc/init.d/network stop

Включить всё назад:

Service network start

/etc/init.d/network restart

процесс настройки соединения по сетевому кабелю двух компьютеров на линукс можно разделить на две условные части: вначале мы установим связь между ПК, чтобы они могли пинговать друг друга, а потом уже непосредственно настраиваем програмное обеспечение для обмена данными. В данном случае NFS сервер будем делать. Чтобы подружить компьтеры на ubuntu необходимо присвоить одному ip 192.168.0.1, а второму пк ip 192.168.0.2. Соответственно сетевую маску для обеих машин 255.0.0.0 В терминале можно написать: sudo eth0 192.168.0.1 netmask 255.0.0.0 up или же, если у вас есть Network Manager - то в его настройках это легко сделать. Стоит отметить, что когда я прописывал айпи и маску через консоль,а потом подключение устанавливал через network manager - то ничего не работало. Нужно или отключить его, или же присваивать ручками айпишник и маску. Итак, прописав всё на обеих машинах, подсоединив их по сетевому кабелю в терминале пробуем пропинговать другой пк. для этого пишем ping 192.168.0.2 Если идёт обмен пакетами, значит всё хорошо и переходим к другому этапу. Тут следует определиться какая машина будет в роли сервера, а какая в роли клиента. Я ПК с 192.168.0.1 решил сделать сервером. Устанавливаем на серверный ПК необходимые пакеты: sudo apt-get install -y nfs-kernel-server nfs-common portmap Запускаем переконфигурирование portmap и перезапускаем процесс sudo dpkg-reconfigure portmap sudo /etc/init.d/portmap restart Теперь пришло время создать папку с шарой (share folder) на NFS сервере Открываем любиым текстовым редактором, я использую nano файл /etc/exports sudo nano /etc/exports и туда добавить строчку, примерно такого содержания /home/user/music 192.168.0.2 (rw,sync,no_subtree_check) где вначале мы задаём адрес к шаровой папке, а потом указываем сразу IP клиента. Ну и сохраняем конфиг после манипуляций Пишем на последок: sudo exportfs -a Настройка Клиентской ubuntu Все проделанные нами действия осуществлялись на Серверной машине, теперь переходим на клиентскую Ubuntu. И начинаем с установки новеньких пакетов: sudo apt-get install portmap nfs-common Теперь осталось только примонтировать серверную папку у себя. Создадим в домашнем каталоге простого пользователя пустую директорию: mkdir share монтируем sudo mount 192.168.0.1:/home/user/music /home/user/share Объяснять тут нечего, указываем что и куда монтировать. Можно сделать монтирование папки при запуске системы, для этого будем использовать fstab sudo nano /etc/fstab и вставим туда: 192.168.0.1:/home/user/music /home/user/share nfs rsize=8192,wsize=8192,timeo=14,intr Теперь, чтобы примонтировать папку всего навсего нужно написать mount /home/user/share Вот так легко и просто при помощи сетевого кабеля я соединил в локальную сеть две машины под управлением ubuntu для нехитрого перекидывания важных файлов