Как соединить windows linux

Время на прочтение6 мин

Количество просмотров29K

В прошлой статье я обещал рассмотреть механизм удаленного подключения с Windows на серверы под управлением *nix, и наоборот при помощи PowerShell. Обещанного обычно ждут три года, но я успел чуть раньше. Что ж, если хочется с верного макбука управлять гетерогенной инфраструктурой, или наоборот ― с Surface Pro рулить Linux-серверами без всяких putty, ― прошу под кат.

Microsoft Loves Linux

Еще в 2015 году Microsoft торжественно объявила о запуске программы «Microsoft Linux». Сюда вошла как банальная поддержка гостевых *nix-like OS на Hyper-V, так и встроенная в Windows 10 Ubuntu и возможность запуска в Docker продуктов Microsoft, таких как SQL Server.

Компания также опубликовала исходный код PowerShell, что позволило запускать «Ракушку Мощи» не только на Windows. Из-под одноименного аккаунта на Github, помимо исходного кода, выложены и бинарники под большинство современных систем (лицензия MIT).

Это позволяет настроить удаленное управление с помощью единого инструмента ― PowerShell. Помимо подключения к консоли компьютера, можно запускать отдельные команды, в том числе и на нескольких серверах одновременно. Довольно удобно для автоматизации задач администрирования, таких как массовое изменение настроек, инвентаризация, сбор логов.

Порой удобно совмещать традиционные консольные команды со вставками PowerShell:

cat /etc/passwd | ConvertFrom-Csv -Delimiter ':' -Header Name,Passwd,UID,GID,Description,Home,Shell | Sort-Object Name | Format-Table

Для подключения к Windows-машинам при помощи PowerShell используется протокол WS-Man. Для GNU\Linux привычен SSH. Так как сегодня становятся универсальными оба протокола, разберем их подробнее.

PowerShell 6.0 под Windows и *nix, пока еще находится в бете. Поэтому не рекомендую без хорошего тестирования применять на боевых серверах описанное ниже.

Магомед не идет к горе

Когда технология удаленного доступа при помощи PowerShell только набирала обороты, единственным универсальным способом подключения к разным системам был протокол WS-Man. Для тестового стенда я взял Windows Server 2016 и Centos 7, для которых и буду настраивать возможность удаленного подключения и выполнения команд при помощи этого протокола.

Для начала установим на Centos свежий PowerShell:

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/microsoft.repo

yum install -y powershell

pwsh

После установки появилась возможность запускать привычные Windows-администратору командлеты. Например, посмотрим версию PS и получим список запущенных процессов командлетами $PSVersionTable и Get-Process:

Работаем в консоли PowerShell на CentOS.

Чтобы подключаться к Linux-машине с консоли Windows, нам понадобится установить и настроить:

  • OMI (Open Management Infrastructure) ― адаптация WMI, которую также можно использовать для управления компьютерами с ОС, отличными от Windows;
  • PSRP (PowerShell Remoting Protocol) ― библиотека, необходимая для удаленного подключения PowerShell.

Подробно с работой и эволюцией OMI и PSRP можно ознакомиться в отличном материале от Matt Wrock, я же просто установлю OMI командой:

yum install omi

Далее нужно настроить порты и аутентификацию в конфигурационном файле /etc/opt/omi/conf/omiserver.conf, после чего перезапустить сервер командой:

/opt/omi/bin/service_control restart

Для упрощения эксперимента я не буду настраивать ни NTLM-аутентификацию, ни Kerberos. Еще и шифрование отключу ― разумеется, в боевой среде делать этого не стоит. Для включения текстовой аутентификации и шифрования на стороне Windows в работе winrm достаточно выполнить следующие команды:

winrm set winrm/config/client/auth @{Basic="true"}
winrm set winrm/config/client @{AllowUnencrypted="true"}
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"}

После настройки можно проверить работу OMI из консоли Windows:

winrm enumerate http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/OMI_Identify?__cimnamespace=root/omi -r:http://server:5985 -auth:Basic -u:root -p:"password" -skipcncheck -skipcacheck -encoding:utf-8 -unencrypted

Подключаемся к CentOS из cmd.

Теперь проверим работу обратным подключением ― из Linux к Windows:

/opt/omi/bin/omicli ei root/cimv2 Win32_Environment --auth Basic --hostname server -u username -p password --port 5985 

… а затем с CentOS подключаемся к Windows.

После того, как WMI\OMI заработал, нужно установить и настроить PSRP. К сожалению и вопреки инструкции, бинарник отсутствует. Библиотеку пришлось компилировать, долго и нудно исправляя возникающие ошибки зависимостей:

yum groupinstall 'Development Tools'
yum install openssl-devel pam-devel
git clone --recursive [https://github.com/PowerShell/psl-omi-provider.git](https://github.com/PowerShell/psl-omi-provider.git)

cd psl-omi-provider/
make release
rpm -ihv target/Linux_ULINUX_1.0_x64_64_Release/psrp-1.4.1-0.universal.x64.rpm

Теперь мы сможем подключаться с Windows на Linux и наоборот при помощи PowerShell. Начнем с Windows на Linux:

$cred = Get-Credential

#пропустим проверку сертификата для нашей тестовой лаборатории
$o = New-PSSessionOption -SkipCACheck -SkipRevocationCheck -SkipCNCheck

#выполнение команды:
Invoke-Command -ComputerName server -ScriptBlock { Get-Process } -Authentication Basic -SessionOption $o -Credential $cred -UseSSL | Select-Object -First 5

#подключение к консоли
Enter-PSSession -ComputerName 'server' -Credential $cred -Authentication basic -UseSSL -SessionOption $o

С Windows на Linux.

Аналогичным образом можно провести и обратное подключение.

Invoke-Command можно «натравить» на список компьютеров, и с рабочей станции Windows создать пользователя на всех серверах Linux командой вида:

 Invoke-Command -ComputerName server1,server2,server3  -ScriptBlock { adduser admin;echo admin:password | chpasswd
 }

Надо сказать, что способ не самый удобный и эффективный. Минусов добавляет компиляция библиотек, разнообразные баги ― например, на момент написания статьи PSRP не позволял нормально подключиться из Linux в Windows.

Да и сами разработчики рекомендуют не плясать вокруг WS-Man, а обратиться к проверенному способу ― SSH. Что ж, попробуем и его.

Гора идет к Магомету

На этот раз машина с Windows получит чуть больше специфической подготовки ― нужно установить свежий PowerShell и OpenSSH.

После можно проверить синтаксис командлета New-PSSession. Если все произошло как надо, то командлет, помимо привычного параметра ComputerName, будет поддерживать и HostName.

PowerShell 6.0.0-beta.9 и обновленный синтаксис командлета.

Установка OpenSSH описана в отдельной инструкции.

Но под спойлером вы найдете все основные моменты.

Качаем последний релиз или используем пакет из репозитория Chocolatey. Все это разархивируем в \Program Files\OpenSSH.

В консоли с правами администратора переходим в папку с разархивированным содержимым и запускаем установку командой:

powershell -ExecutionPolicy Bypass -File install-sshd.ps1

Теперь генерируем ключи:

.\ssh-keygen.exe -A
.\FixHostFilePermissions.ps1 -Confirm:$false

В тестовой среде мы будем использовать парольную аутентификацию, поэтому стоит убедиться что она включена в файле sshd_config:

```bash
PasswordAuthentication yes
```

Если вы также хотите автоматически запускать PowerShell при подключении по SSH, то в параметре subsystem нужно прописать путь к желаемой версии PS:

Subsystem   powershell C:/Program Files (x86)/PowerShell/6.0.0-beta.9/pwsh.exe -sshs -NoLogo -NoProfile

Для работы клиента SSH нужно добавить директорию в %PATH% любым удобным способом. Например, таким:

setx path "%path%;C:\Program Files\OpenSSH"

Остается только настроить и запустить службы:

Set-Service sshd -StartupType Automatic
Set-Service ssh-agent -StartupType Automatic
net start sshd

После установки уже можно наслаждаться подключением к серверу Windows по ssh.

C Windows через Putty на Linux, с Linux обратно на Windows по SSH.

На достигнутом останавливаться не будем и перейдем к настройке Linux. При настройке сервера SSH по умолчанию достаточно прописать PowerShell в Subsystem:

Subsystem powershell /usr/bin/pwsh -sshs -NoLogo -NoProfile

Теперь проверим подключение через командлет New-PSSession и Invoke-Command.

Сначала Windows:

Работаем из PowerShell с Linux-сервером.

Теперь подключимся из Linux к Windows:

Работаем из PowerShell с Windows-сервером.

В отличие от WS-Man, SSH настраивается намного проще и работает стабильнее. Да и беспарольное подключение по ключам настраивать привычнее.

В хозяйстве пригодится

С однозначным «советом потребителю» все опять сложно: SSH проще в настройке и стабильнее, но WS-Man использует API и позволяет применять инструменты вроде JEA. На боевых серверах использовать WS-Man я бы не стал однозначно, а вот реализация OpenSSH в Windows как сервера, так и клиента мне понравилась. Для самопальной автоматизации вполне подойдет даже без PowerShell.

В любом случае, границы между Linux и Windows хоть и медленно, но начинают стираться, что безусловно радует.

Очень часто бывает так, что в доме находятся компьютеры с разными операционными системами. И нужно организовать между ними локальную сеть, обеспечить общий доступ к файлам. Сделать это очень просто.

Общие сведения.

Для создания общих сетевых ресурсов в среде Windows, применяется протокол CIFS (ранее известный как SMB), поддержка которого в UNIX-подобных системах обеспечивается программным обеспечением Samba. Samba работает по протоколам TCP и UDP, соединение шифруется. С помощью Samba возможно обеспечить не только общий доступ к файлам и принтерам, но и, например, построить контроллер домена с поддержкой Active Directory (об этом в следующий раз). С помощью Samba можно открыть общий доступ не только между Windows и Linux, но и между Linux и Linux. Однако есть некоторые ограничения. Во первых, SMB — это «виндовый» протокол, со всеми вытекающими. Он не слишком хорошо интегрируется с UNIX-системами. Не вдаваясь в сложные технические описания, скажу лишь что скорость передачи данных по Samba медленнее, зачастую значительно, она нестабильна, как и загрузка сетевого канала, а также даёт весьма ощутимую нагрузку на процессор. Поэтому если в вашей домашней сети нет Windows-машин, то предпочтительнее использовать протокол сетевой файловой системы — NFS.

Суть работы NFS весьма проста. Удалённый ресурс встраивается в общее дерево файловой системы, и в результате каталог, который находится на файловом сервере или другом компьютере, отображается в вашей системе как локальный, будто находится на диске. NFS работает по протоколу TCP. NFS весьма полезна при создании так называемых тонких клиентов (бездисковые рабочие станции, в которых система загружается по сети). Скорость передачи данных по NFS в 2 раза выше, чем через Samba, загрузка сети равномерная, а нагрузка на центральный процессор минимальная. Однако у NFS есть два недостатка. Первый — довольно фиговая поддержка в Windows (реализуется через подсистему UNIX и отдельное приложение). Второй — отсутствие шифрования (c версии NFSv4, для шифрования может использоваться протокол Kerberos). Тем не менее, для Линуксовой сети, NFS — идеальный вариант.

Внимание: на обеих системах должны быть настроены статические IP адреса.В Windows кликнете правой кнопкой на значке сетевых подключений и выберите «Центр управления сетями и общим доступом», далее «Изменение параметров адаптера», выберите нужный адаптер (вашу сетевую карту) и зайдите в её свойства. Перейдите в пункт «Протокол Интернета версии 4» и выберите «Использовать следующий IP адрес»:

Если ваши компьютеры соединены напрямую, поле «Основной шлюз» можете оставить пустым. Если через роутер — укажите IP адрес роутера (тот, через который осуществляется доступ к его вэб-интерфейсу, обычно 192.168.0.1). В Linux аналогичную операцию можно провести в Network Manager (настройка сетевых подключений, вкладка IPv4):

Если вы используете фаерволл (брандмауэр Windows либо другое аналогичное ПО, а также iptables в Linux или фаерволл в вашем роутере), убедитесь что открыты нужные порты (Для SAMBA: 135, 139, 445/TCP; 137, 138/UDP. Для NFS: 2049/TCP).

Linux => Windows

Представим ситуацию: у вас есть второй компьютер (или файловый сервер), под управлением Ubuntu 14.04, на котором находится большая коллекция ваших видео, фото и так далее, расположенная на отдельном диске, который монтируется в /media/MyDATA. Этот диск нужно расшарить на компьютер под управлением Windows 8.1. Первым делом, установим необходимые пакеты:

sudo apt install samba samba-common smbclient

Теперь необходимо сконфигурировать Самбу. У вас есть два пути: консольный и графический.

Консольный.

Открываем файл /etc/samba/smb.conf:

sudo nano /etc/samba/smb.conf

Полностью удаляем всё содержимое и вписываем такие настройки:

[global]
workgroup = WORKGROUP
netbios name = Ubuntu-PC
server string = Ubuntu PC
map to guest = bad user
guest account = nobody
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192


#Следовать по симлинкам
unix extensions = no
wide links = yes
follow symlinks = yes


log level = 1


# UTF кодировка
unix charset = UTF-8
dos charset = cp1251
store dos attributes = yes


max log size = 10




[MyDATA]
path = /media/MyDATA
writeable = yes
available = yes
public = yes
guest ok = yes
force user = nobody
force group = nobody

В секции global описываются общие параметры: WORKGROUP — имя рабочей группы (должно быть одинаково для всех машин в локальной сети), Ubuntu-PC — имя компьютера, с которого расшариваются каталоги (укажите своё), вход без пароля, гостевой доступ и оптимизации для соединения. В секции MyDATA описывается доступ к диску, смонтированному в /media/MyDATA. При желании вы можете указать доступ к отдельным каталогам на этом диске, аналогичным способом. Сохраните файл и выполните команду:

testparm -s

Эта команда проверит конфиг на наличие ошибок и в случае их обнаружения, укажет где что исправить.

Теперь запустите сервер Samba:

sudo service start smbd

Графический.

Для настройки параметров Samba в графическом интерфейсе, существует 2 замечательные утилиты — system-config-samba (есть только в Ubuntu и производных) и gadmin-samba (есть везде). Эти утилиты представляют собой весь конфиг Самбы, выполненный в графическом режиме. Для Ubuntu установим первую утилиту:

sudo apt install syste-config-samba

Здесь всё предельно понятно и в настройках разберётся любой :)

Для других дистрибутивов (например Debian), установите пакет gadmin-samba:

sudo apt install gadmin-samba

После настройки, перезапустите демон Samba. Для Ubuntu:

sudo service restart smbd

Для Debian:

sudo systemctl restart smbd.service

Также можно открыть доступ к нужному каталогу из файлового менеджера, открыв свойства каталога:

В Windows необходимо включить сетевое обнаружение. Для этого в центре управления сетями, зайдите в «Изменить дополнительные параметры общего доступа»

После этого, в сетевом окружении, должны появиться расшаренные каталоги.

Linux => Linux

А теперь представим, что у нас есть компьютер с Debian 8 (IP адрес 192.168.0.2), и ноутбук с Ubuntu 14.04 (IP адрес 192.168.0.3). С ноутбука нужно расшарить раздел диска, который смонтирован в /media/DATA (это раздел для торрентов и прочей файлопомойки). Для этого мы используем NFS:

sudo apt install nfs-kernel-server nfs-common rpcbind

Укажем что нужно расшаривать:

sudo nano /etc/exports

/media/DATA 192.168.0.0/255.255.255.0(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)



/media/DATA — то, что нужно расшарить.
192.168.0.0/255.255.255.0 — только компьютерам в этой подсети будет обеспечен доступ к общему ресурсу (можете указать конкретный IP адрес).
rw — поддержка чтения и записи.
no_root_squash — Позволяет пользователю root (на стороне клиента) иметь доверенный полный доступ к разделу.
no_subtree_check — Если монтируется только часть тома, то сервер будет выполнять проверку принадлежности файла запрошенного клиентом, именно к той части тома, которая примонтирована. Это замедляет передачу данных, по этому зачастую данная опция включена в список параметров.
crossmnt — Этот параметр похож на nohide он дает возможности видеть каталоги смонтированные на основной системе. Таким образом, когда дочерняя файловая система «B» установлена на основной «А», установив crossmnt на «А» имеет тот же эффект, что и установка «nohide» на B.
fsid=0 — NFS-сервер должен быть в состоянии идентифицировать каждую файловую систему, которую экспортирует. Для сервера NFSv4, существует выделенная файловая система, которая является корнем всей экспортируемой файловой системе. fsid = root или fsid = 0 означают одно и то же.

Применяем настройки:

sudo exportfs -a

Далее нужно указать, каким хостам в сети разрешено иметь доступ к серверу:

sudo nano /etc/hosts.allow

Указываем доступ для всех машин, находящихся в подсети 192.168.0.0/255.255.255.0:

nfsd: 192.168.0.0/255.255.255.0
rpcbind: 192.168.0.0/255.255.255.0
mountd: 192.168.0.0/255.255.255.0

Если вы указали в файле exports только IP адрес нужной машины, то соответственно, указывайте его.

Теперь запустите сервис:

sudo service nfs-kernel-server start

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

sudo apt install nfs-common rpcbind

Создайте директорию для монтирования общего ресурса:

sudo mkdir /media/Share

Монтирование вручную.

sudo mount -t nfs4 192.168.0.3:/ /media/Share

В результате всё содержимое диска /media/DATA (на ноутбуке) окажется доступным на компьютере в каталоге /media/Share, как если бы эти данные хранились на нём. Для того чтобы ресурс монтировался автоматически после загрузки системы, есть два способа.

Монтирование через fstab.

Файл /etc/fstab содержит в себе информацию о присутствующих файловых системах, точках монтирования и параметрах монтирования. Чтобы ресурс /media/DATA монтировался на ваш компьютер автоматически, добавьте в конец файла /etc/fstab следуюущую строку:

192.168.0.3:/   /media/Share   nfs   user,rw,noauto   0   0

Опция noauto запрещает автоматическое монтирование во время загрузки, так как сеть может быть недоступна в этот момент. Вместо этого, в файловом менеджере, в левой колонке появится пункт Share, кликнув на который, сетевой ресурс автоматически смонтируется. Однако при таком способе монтирования, есть пара существенных недостатков. Во первых, если в момент выключения компьютера, был открыт какой-либо файл, расположенный на сетевом ресурсе, компьютер откажется выключаться. Во-вторых, такая же ситуация произойдёт в случае пропажи связи между клиентом (компьютером) и сервером (ноутбуком). Для того, чтобы этих проблем не было, существует второй способ монтирования.

Монтирование с помощью AutoFS.

AutoFS — это пакет для обеспечения монтирования съёмных и сетевых накопителей, только при обращении к ним. При отсутствии обращения к сетевому ресурсу или съёмному устройству в течении определённого времени, он автоматически размонтируется, и мгновенно монтируется при первом же обращении к нему. Устанавливаем:

sudo apt install autofs

Настраиваем:

sudo nano /etc/auto.master

В конец файла добавляем строку:

/mnt    /etc/auto.nfs —timeout=60

/mnt — каталог для монтирования сетевого ресурса.
/etc/auto.nfs — путь к файлу, в котором описаны параметры монтирования.
—timeout=60 — время в секундах, после которого произойдёт размонтирование ресурса (можете указать своё).

Сохраняем и переходим к следующему файлу:

sudo nano /etc/auto.nfs

Добавляем строку:

Share       -fstype=nfs,rw,noatime,noexec,nosuid,tcp,async,rsize=32768,wsize=32768,intr,nolock,soft,noauto  192.168.0.3:/

Создадим директорию Share в каталоге /mnt, куда будет монтироваться ресурс:

sudo mkdir /mnt/Share

Вот и всё. Теперь в каталоге /mnt/Share, при первом же обращении к нему, будет появляться содержимое удалённого ресурса /media/DATA. Кнопка подключения сетевого диска появится в файловом менеджере.

Дополнительные материалы:

Руководство Samba
Руководство NFS

 

Что такое SAMBA?

Установка

Конфигурационный файл smb.cnf

Пользователи и пароли

Доступ к дискам Linux из Windows

Доступ к дискам Windows из Linux

Доступ к принтеру Linux для клиентов Windows

Доступ к принтеру Windows для клиентов Linux

Русификация и тестирование файла конфигурации

В последнее время популярность Linux растет буквально каждый день. Linux является
высокопроизводительной некоммерческой операционной системой, одной из разновидностей
Unix. Как известно, она была создана выпускником Хельсинкского университета
Линусом Торвальдсом. Основными преимуществами Linux являются открытость и мультипоточность,
кроме того, в ней есть возможности четкого разграничения ресурсов и уровней
доступа пользователей. На сегодняшний день многие производители программного
обеспечения поддерживают эту операционную систему; среди них выделим Oracle
и Informix.

В этой статье рассматривается, как
организовать совместное использование ресурсов
операционных систем Windows и Linux с помощью пакета
программ Samba.

Что такое SAMBA?

Samba — набор программ, которые
предназначены для организации доступа клиентов
к файловому пространству сервера и принтерам с
помощью протоколов SMB (Server Message Block)и CIFS (Common Internet
Filesystem). Первоначально написанный для Unix Samba
теперь также работает под управлением и других
ОС, в частности OS/2 и VMS. Это означает, что такие
средства этих операционных систем, как
файл-сервер и сервер печати, могут быть
использованы для SMB- и CIFS-клиентов. В настоящее
время существуют соответствующие клиенты для DOS,
Windows NT, Windows 95, Linux smbfs, OS/2, Pathworks. Протокол SMB
используется Microsoft Windows NT и 95 для организации
доступа к дискам и принтерам.

При помощи SAMBA возможно:

  • предоставлять доступ к файловой системе под ОС Linux для Windows-машин;
  • получать доступ к файловой системе под ОС Windows для Linux-машин;
  • предоставлять доступ к принтерам под ОС Linux для Windows-машин;
  • получать доступ к принтерам под ОС Windows для Linux-машин.

Компоненты пакета Samba выполняют
следующие функции:

  • Демон smbd предоставляет службы доступа к файлам и принтерам для клиентов
    протокола SMB, таких как Windows 95/98, Windows for Workgroups, Windows NT
    или LanManager. Конфигурация для этого демона задается в файле smb.cfg.
  • Демон nmbd обеспечивает поддержку сервера имен Netbios для клиентов. Он
    может запускаться в интерактивном режиме для опроса других демонов службы
    имен.
  • Программа smbclient является простым SMB-клиентом для UNIX-машин. Она используется
    для доступа к ресурсам на других SMB-совместимых серверах (таких как Windows
    NT), а также позволяет UNIX-станции воспользоваться удаленным принтером, подключенным
    к любому SMB-серверу (например, к компьютеру с WfWg).
  • Утилита testparm предназначена для проверки файла конфигурации smb.conf.
  • Утилита smbstatus позволяет выяснить, кто в данный момент использует сервер
    smbd.
  • Утилита nmblookup дает возможность запрашивать имена NetBios из UNIX-машин.
  • При помощи утилиты make smbcodepages создаются файлы для описания SMB кодовой
    страницы.
  • Утилита smbpasswd дает возможность шифровать пароли.

Каждый компонент детально описан на страницах руководства, поставляемого с
пакетом Samba.

Установка

Пакет Samba очень прост в установке и
настройке.

Для начала будем считать, что вы
установили дистрибутив RedHat с поддержкой Samba.

Итак, начнем.

Для работы пакета Samba необходим запуск
двух демонов:

  • smbd (демон SMB);
  • nmbd (демон сервера имен NetBIOS).

Они устанавливаются в /usr/sbin и могут
запускаться либо вручную, либо автоматически при
загрузке из системных скриптов, либо из inetd.conf.
Рассмотрим оба автоматических запуска.

Первый способ — из системных
стартовых скриптов. Необходимо написать
следующий скрипт в файл /etc/rc.d/init.d/smb и создать на
него символические ссылки с именами файлов,
указанных в комментариях.

#!/bin/sh 
# 
# /etc/rc.d/init.d/smb - запускает и останавливает SMB-сервисы
#
#Следующие файлы должны быть символическими ссылками на этот файл:
# symlinks: /etc/rc.d/rc1.d/K35smb (Убивает SMB-сервисы при выключении)
# /etc/rc.d/rc3.d/S91smb (Запускает SMB-сервисы 
# в мультипользовательском режиме)
# /etc/rc.d/rc6.d/K35smb (Убивает SMB-сервисы при перезагрузке)
#
# Источник библиотеки функций.
. /etc/rc.d/init.d/functions
# Источник сетевой конфигурации.
. /etc/sysconfig/network
# Проверка сети.
[ ${NETWORKING} = “no” ] && exit 0
# Смотрите, как мы здесь вызываем.
case “$1” in
  start)
    echo -n “Starting SMB services: “
    daemon smbd -D 
    daemon nmbd -D 
    echo
    touch /var/lock/subsys/smb
    ;;
  stop)
    echo -n “Shutting down SMB services: “
    killproc smbd
    killproc nmbd
    rm -f /var/lock/subsys/smb
    echo “”
    ;;
  *)
    echo “Usage: smb {start|stop}”
    exit 1
esac

Второй способ. Запуск SMB-демонов из inetd.
Для этого необходимо включить следующие строки в
файл /etc/inetd.conf:

# SAMBA NetBIOS services (for PC file and print sharing) 
netbios-ssn stream tcp nowait root /usr/sbin/smod smod 
netbios-ns dgram upd wait root /usr/sbin/nmbd nmbd 

Далее производится рестарт демона inet:

kill –HUP 1

Выберите один из способов запуска демонов и примените его. Следует заметить,
что при установке пакета SAMBA по умолчанию демоны всегда включаются в «автомат».
Так что скрипты можно не редактировать.

После того как мы разобрались с запуском демонов, необходимо сконфигурировать
SMB-сервер. Это операция заключается в настройке главного конфигурационного
файла — /etc/smb.cnf.

Конфигурационный файл smb.cnf

Настройка Samba в Linux (или других
UNIX-машинах) контролируется единственным файлом
— /etc/smb.cnf. Этот файл определяет, к каким системным
ресурсам вы намереваетесь дать доступ клиентам и
какие ограничения собираетесь наложить на
использование этих ресурсов.

Рассмотрим этот файл. Он состоит из
секций и параметров. Секции начинаются с
наименования, заключенного в квадратные скобки,
и продолжаются до начала следующей секции. Они
содержат параметры следующей формы:

  ‘имя = параметр’  

В файле все записи — линии. Каждая
линия может быть комментарием, названием секции
или параметром. Секции и имена параметров не
чувствительны к регистру.

Каждая секция в конфигурационном
файле (кроме секции [global]) описывает ресурс
доступа. Имя секции — это имя ресурса доступа.
Ресурс доступа включает путь к директории
доступа и описание прав доступа пользователей.

Например, создадим на диске директорию
/common и выделим ее как сетевой ресурс для всех
клиентов по записи и чтению:

[common]
    path = /common 
    public = yes
    guest ok = yes
    writable = yes
    printable = no

Все записанные любым пользователем в
этот ресурс файлы будут иметь права:

  • для создателя — все (чтение, запись, исполнение);
  • для группы (в которую входит пользователь) — чтение;
  • для всех остальных — чтение.

Если мы хотим предоставить права всем
пользователям на любой файл, необходимо добавить
в эту секцию строку следующего вида:

create mask = 0777

Существует три специальные секции:

  1. Секция [global] определяет некоторые переменные, которые Samba будет использовать
    для определения доступа ко всем ресурсам.
  2. Секция [homes] позволяет удаленным пользователям иметь доступ к своим (и
    только своим) домашним каталогам на Linux-машине. Так что если пользователи
    Windows попытаются подключиться к этому разделу со своих Windows-машин, то
    они будут подключены к своим персональным домашним директориям. Заметим, что
    для того, чтобы это сделать, они должны быть зарегистрированы на этой Linux-машине.
  3. Секция [printers] схожа с [homes], но для принтеров.

Для понимания SMB-сервера верхнего и
нижнего регистра в наименовании файлов в секции
[global] необходимо раскомментировать строку

case sensitive = yes

Пример части файла:

[global]
; Раскомментируйте эту строку, если вы хотите дать доступ
                       ; пользователю “гость”
; guest account = nobody 
log file = /var/log/samba-log.%m ;путь лог-файла
lock directory = /var/lock/samba 
share modes = yes


[homes]                ; В сети ресурс будет    виден как имя пользователя 
                       ;или будет отсутствовать, 
; если пользователь не найден 
comment = Home         ; В комментарии    будет написано “Home” 
guest ok = no          ; Запретим    гостевой доступ 
browsable = no         ; Не будем показывать    другим 
read only = no         ; Разрешим запись  
create mode = 700      ; Создаваемые файлы будут    видны только пользователю

[public]               ;Под таким именем ресурс будет виден
path = /var/public     ; Путь к ресурсу
comment = Welcome!     ; Что будет написано при детальном листинге
force user = nobody    ; Работа с файлами будет производиться 
; от лица nobody
guest ok = yes         ; Возможен ли доступ для    любого пользователя
browsable = yes        ; Появится ли ресурс при листинге
read only = no         ; Не только для чтения.

[tmp] 
comment = Temporary file space 
path = /tmp 
read only = no 
public = yes

Пользователи и пароли

Для доступа клиента к SMB-серверу
необходимо:

1. Добавить пользователя в систему.

2. Добавить пользователя в учетные записи SMB-сервера. Для этого надо ввести
команду:

smbadduser LinuxUser:SMBUser, 

где LinuxUser — имя пользователя в системе

SMBUser — имя SMB-пользователя.

далее на запрос о присвоении пароля
введите пароль клиента.

3. Раскомментировать строки с описанием пользователей и их паролей:

smb passwd file = /etc/smbpasswd
username map = /etc/smbusers

Внимание: если вы хотите дать доступ
пользователям, работающим под Windows с шифрованием
пароля, необходимо раскомментировать строку:

encrypt passwords = yes

Доступ к дискам Linux из Windows

Организация доступа к дискам Linux очень проста и сводится всего лишь к редактированию
файла конфигурации smb.cnf, то есть к добавлению секции (как это делается, было
рассмотрено выше).

Доступ к дискам Windows из Linux

Программа клиента SMB для UNIX-машин
включена в дистрибутив Samba. Она обеспечивает
ftp-подобный интерфейс командной строки. Вы можете
использовать эту утилиту для переноса файлов
сервера под управлением Windows клиенту под
управлением Linux. Для того чтобы увидеть, какие
ресурсы доступны на данной машине, необходимо
выполнить команду:

/usr/sbin/smbclient -L host

где «host» — это имя машины, доступные ресурсы которой вы хотите увидеть. Эта
команда вернет список имен «сервисов» — то есть имен дисков или принтеров, к
которым может быть получен доступ. До тех пор пока SMB-сервер не будет настроен
для управления доступом, он будет запрашивать пароль. Введите в ответ на запрос
пароль для пользователя «гость (guest)» или ваш персональный пароль на этой
машине.

Например:

smbclient -L redfox

Вывод этой команды должен выглядеть
примерно так:

Server time is Sat Aug 10 12:01:11 1998
Timezone is UTC+3.0
Password: 
Domain=[DOMAIN42] OS=[Windows NT 4.0] Server=[NT LAN Manager ]
Server=[REDFOX] User=[] Workgroup=[DOMAIN42] Domain=[]
 Sharename Type Comment
   ———— —— ———-
   ADMIN$ Disk Remote Admin
   public Disk Public 
   C$ Disk Default share
   IPC$ IPC Remote IPC
   OReilly Printer OReilly
   print$ Disk Printer Drivers
This machine has a browse list:
 Server Comment
   ———— ———-
   ALEX Samba 1.9.15p8
   MARRY Samba 1.9.15p8
   VASER Samba 1.9.15p8
   REDFOX 

Browse list показывает другие SMB-серверы в
сети с доступными ресурсами.

Для использования клиента выполните
следующую команду:

/usr/sbin/smbclient service <password>

где «service» — имя машины и сервиса.
Например, если вы пытаетесь обратиться к
директории, которая доступна под именем «public» на
машине, названной «redfox», то имя сервиса должно
звучать как \\redfox\public. Однако вследствие
ограничений оболочки вам необходимо спрятать
обратный слэш, так что в итоге эта командная
строка будет выглядеть следующим образом:

/usr/sbin/smbclient \\\\redfox\\public mypasswd

где «mypasswd» — символьная строка вашего пароля.

Вы получите приглашение smbclient:

  Server time is Sat Aug 10 12:01:11 1998
Timezone is UTC+3.0
Password: 
Domain=[DOMAIN42] OS=[Windows NT 4.0] Server=[NT LAN Manager ]
Server=[REDFOX] User=[] Workgroup=[DOMAIN42] Domain=[]
smb: \> 

Чтобы получить помощь по использованию smbclient, напечатайте «h»:

smb: \> h
ls dir lcd cd pwd 
get mget put mput rename 
more mask del rm mkdir 
md rmdir rd prompt recurse 
translate lowercase print printmode queue 
cancel stat quit q exit 
newer archive tar blocksize tarmode 
setmode help ? ! 
smb: \> 

Доступ к принтеру Linux для клиентов Windows

Для организации доступа Windows-машин к
Linux-принтеру вам необходимо убедиться, что
принтер работает под Linux. Если вы можете печатать
под Linux, то организация доступа к принтеру будет
очень простой.

Добавьте настройку принтера в ваш файл
smb.cnf:

[global]

  printing = bsd
  printcap name = /etc/printcap
  load printers = yes
  log file = /var/log/samba-log.%m
  lock directory = /var/lock/samba

[printers]
  comment = All Printers
  security = server
  path = /var/spool/lpd/lp
  browseable = no
  printable = yes
  public = yes
  writable = no
  create mode = 0700

[ljet]
  security = server
  path = /var/spool/lpd/lp
  printer name = lp
  writable = yes
  public = yes
  printable = yes
  print command = lpr -r -h -P %p %s

Убедитесь, что путь к принтеру (в этом
случае для [ljet]) соответствует буферной
директории, указанной в файле /etc/printcap!

Следует заметить, что существуют некоторые проблемы с доступом к принтерам
на UNIX-машинах для машин с Windows NT с применением Samba. Одна из них состоит
в том, что NT неправильно видит сетевой принтер, другая связана с проблемой
пароля. Для решения этих вопросов ознакомьтесь с файлом docs/WinNT.txt дистрибутива
Samba.

Доступ к принтеру Windows для клиентов Linux

Для доступа к принтеру,
инсталлированному на компьютере с ОС Windows,
необходимо следующее:

  • Вы должны иметь правильные записи в файле /etc/printcap, которые должны
    соответствовать локальной структуре директорий (для буферной директории и
    т.п.).
  • У вас должен быть скрипт /usr/bin/smbprint. Он поставляется вместе с исходными
    текстами Samba, но не со всеми двоичными дистрибутивами Samba. Его слегка
    модифицированная копия обсуждается ниже.
  • Если вы хотите преобразовывать ASCII-файлы в Postscript, то вы должны иметь
    программу nenscript или ее эквивалент. nenscript — это конвертор Postscript,
    он обычно устанавливается в директорию /usr/bin.
  • Вы можете упростить процесс печати через Samba, используя программы-надстройки.
    Простой скрипт на perl, который обрабатывает ASCII, Postscript или преобразованный
    Postscript, приведен ниже.
  • Запись в файле /etc/printcap, приведенном ниже, сделана для принтера HP
    5MP на сервере Windows NT. Используются следующие поля файла /etc/printcap:

cm — комментарий

lp — имя устройства, открываемого для
вывода

sd — директория спула принтера (на
локальной машине)

af — файл учета использования принтера

mx — максимальный размер файла (ноль —
без ограничений)

if — имя входного фильтра (скрипта)

Для более детальной информации о
печати смотрите Printing HOWTO или справочные
страницы по printcap.

  # /etc/printcap
#
# //redfox/oreilly via smbprint
#
lp:\
     :cm=HP 5MP Postscript OReilly on redfox:\
     :lp=/dev/lp1:\
     :sd=/var/spool/lpd/lp:\
     :af=/var/spool/lpd/lp/acct:\
     :mx#0:\
     :if=/usr/bin/smbprint:

Убедитесь, что буферная директория и
директория, используемая для учета пользования,
существуют и имеют право на запись. Убедитесь,
что строка «if» содержит правильный путь к
скрипту smbprint (дан ниже) и что записи указывают на
правильное устройство вывода (специальный файл
/dev).

Далее идет сам скрипт smbprint. Он обычно
находится в директории /usr/bin. Этот скрипт
поставляется вместе с дистрибутивом исходного
кода Samba.

У вас может появиться желание
взглянуть на него более внимательно. Существует
ряд мелких изменений, которые зарекомендовали
себя полезными.

  #!/bin/sh -x
# Этот скрипт является входным фильтром для основанной на printcap
# печати на UNIX-машинах. Он использует программу smbclient для
# печати файла на указанный smb-сервер и сервис.
# Например, вы можете иметь запись в printcap, подобную этой
#
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
# которая создает UNIX-принтер, названный “smb”, который будет
# печатать с помощью этого скрипта. Вам необходимо создать директорию
# спула /usr/spool/smb с соответствующими правами и владельцем

# Установите здесь сервер и сервис, на который вы хотите печатать.
# В этом примере я имею PC с WfWg PC, названную “lapland”, которая
# имеет экспортируемый принтер, называемый “printer” без пароля

#
# Далее скрипт был изменен hamiltom@ecnz.co.nz (Michael Hamilton)
# так что сервер, сервис и пароль могут быть считаны из файла
# /usr/var/spool/lpd/PRINTNAME/.config 
#
# Для того чтобы это работало, запись в /etc/printcap должна
# включать файл учета использования (af=...):
#
#    cdcolour:\
#      :cm=CD IBM Colorjet on 6th:\
#      :sd=/var/spool/lpd/cdcolour:\
#      :af=/var/spool/lpd/cdcolour/acct:\
#      :if=/usr/local/etc/smbprint:\
#      :mx=0:\
#      :lp=/dev/null:
#
# Файл /usr/var/spool/lpd/PRINTNAME/.config должен содержать
#    server=PC_SERVER
#    service=PR_SHARENAME
#    password=”password”
#
# Например,
#    server=PAULS_PC
#    service=CJET_371
#    password=””
#
# Debugging log file, change to /dev/null if you like.
#
logfile=/tmp/smb-print.log
# logfile=/dev/null


#
# The last parameter to the filter is the accounting file name.
#
spool_dir=/var/spool/lpd/lp
config_file=$spool_dir/.config

# Should read the following variables set in the config file:
#    server
#    service
#    password
#    user
eval ‘cat $config_file‘

#
# Some debugging help, change the >> to > if you want to same space.
#
echo “server $server, service $service” >> $logfile

(
# NOTE You may wish to add the line ‘echo translate’ if you want automatic
# CR/LF translation when printing.
      echo translate
      echo “print -”
      cat
) | /usr/bin/smbclient “\\\\$server\\$service” $password -U $user -N -P >>    
         $logfile

Большинство дистрибутивов linux
поставляется с программой nenscript для
преобразования ASCII-документов в Postscript. Следующий
скрипт на perl делает жизнь пользователя легче,
обеспечивая простой интерфейс для печати путем
использования smbprint.

Использование: print [-a|c|p] <filename>

      -a печатает <filename> как ASCII
      -c печатает <filename> отформатированный как исходный код
      -p печатает <filename> как Postscript
      Если опции не заданы, программа попробует определить
      тип файла и печатать соответственно

Используя smbprint для печати ASCII-файлов,
скрипт следит за длинными строками. Если
возможно, этот скрипт разрывает длинную строку
на пробеле (вместо разрыва в середине слова).

Форматирование исходного кода выполняется с помощью программы nenscript. Она
берет ASCII-файл и форматирует его в две колонки с заголовком (дата, имя файла
и т.п.). Эта программа также нумерует строки. Postscript-документы уже отформатированы,
так что печатаются сразу.

Русификация и тестирование файла конфигурации

Пакет SAMBA поддерживает любую
кодировку, используемую в названиях файлов. Для
того чтобы можно было использовать кодировки с
русским алфавитом, необходимо внести несколько
строк в конфигурационный файл /etc/smb.cnf в секцию
[global]:

character set = KOI8-R
client code page = 866

Оттестировать файл конфигурации smb.cnf можно при помощи утилиты testparm.
Если в файле конфигурации нет ошибок, testparm сообщит об этом и выдаст список
используемых служб, в противном случае вы получите сообщение об ошибке.

КомпьютерПресс 10’1999

Настроить локальную сеть между Linux и Windows через роутер по Wi-Fi оказалось не сложной задачей. Возможно, настройки по умолчанию были выстроены как надо. Честно сказать, я не специалист по настройке локальной сети и данная статья не содержит каких-то углублённых настроек и сложной конфигурации сети. Всё просто: обмен данных идёт через роутер, доверяем сети и позволяем Windows и Linux менять содержимое папки.

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

sudo apt-get install samba

Создаём папку с необходимым именем (напр., shared_folder) в своей домашней папке и открываем доступ (опубликовываем) через контекстное меню, другими словами нужно щёлкнуть правой кнопкой по папке и выбрать «Опубликовать…» (у кого-то пункт может называться «открыть доступ»).

Вводим пароль администратора и в появившемся окошке выставляем следующие параметры:

Затем заходим в свойства папки:

Везде выставляем максимальные права на изменение содержимого папки:

Щелкаем распространить права на вложенные файлы и нажимаем «Закрыть».

Теперь должно работать расшаривание в обе стороны: можно добавлять и изменять содержимое папки как в Linux, так и в Windows.

Чтобы из Windows открыть расшаренную папку нужно в проводнике найти пункт «Сеть». В этой папке должен быть виден другой компьютер Linux:

Виден компьютер VIVAZZI-MINT-PC и папочку shared_folder. В ней можно вставлять и доставать файлы.

Вот и всё. Если что-то пошло не так, то искать в гугле, потому как, ещё раз повторюсь, с локальными сетями я имею дело крайне редко.

П. С. Прошу прощения за качество некоторых изображений — в Linux Mint почему-то не могу сделать скриншот, когда открыто контекстное меню.

Оцените статью

После нажатия кнопки «Отправить» ваше сообщение будет доставлено мне на почту.

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/ru/it/common-folder-windows-linux/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Артём Мальцев
Ссылка на статью: <a href="https://vivazzi.pro/ru/it/common-folder-windows-linux/">https://vivazzi.pro/ru/it/common-folder-windows-linux/</a>

Больше: Правила использования сайта

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как открыть среду восстановления windows 10 с запуска
  • Iso файл windows 10 x64
  • Установить reg organizer бесплатно для windows 10
  • Поиск windows по части имени
  • Как разблокировать параметры персонализации на не активированной windows 10