Как подключиться к Linux из Windows
В мире ИТ существует уже довольно широкий спектр операционных систем, начиная с серверных, заканчивая операционными системами для мобильных устройств. В обычных пользовательских компьютерах и в серверах довольно часто используются две ОС — Linux и Windows. Поэтому очень часто возникают ситуации, когда приходится подключаться по сети из одной операционной системы к другой для выполнения разнообразных операций.
В этой статье мы рассмотрим варианты подключения к Linux из Windows. Существуют бесплатные и условно бесплатные утилиты вроде AnyDesk или TeamViewer, но установка их довольно тривиальна и не нуждается в дополнительном пояснении. Утилиты подобного рода обладают рядом ограничений при бесплатном некоммерческом использовании, либо их функциональность не удовлетворяет тем или иным потребностям пользователя. Мы рассмотрим полностью бесплатные способы как подключится к Linux из Windows.
Удалённый доступ к Linux с помощью VNC
На сегодняшний день самое популярное удаленное подключение к Linux из Windows, с использованием привычный в Windows графического интерфейса, является VNC (Virtual Network Computing) — утилита, использующая протокол RFB (Remote FrameBuffer — удалённый кадровый буфер). Управление осуществляется путём передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть.
В качестве сервера VNC в данном примере будет использоваться TightVNC, установленный в Ubuntu 20.04. Для установки сервера VNC необходимо выполнить ряд действий:
Шаг 1. Установка рабочей среды XFCE
Xfce — одна из самых легковесных рабочих сред, используемых в Linux, она будет быстро работать даже при слабом и нестабильном сетевом подключении. Установите её с помощью команд:
sudo apt update
sudo apt install xfce4 xfce4-goodies
Шаг 2. Установка TightVNC
Далее установите TightVNC:
sudo apt install tightvncserver
Шаг 3. Настройка пароля
Перед началом выполнения всех действий необходимо задать пароль пользователя VNC. Выполните команду:
Вам будет предложено создать новый пароль, а также пароль только для просмотра. Откажитесь от второй опции:
Завершите процесс vncserver:
vncserver -kill :1
Шаг 4. Настройка скрипта запуска
Отредактируйте скрипт, который выполняется после запуска VNC-сервера:
Он должен содержать такой текст:
#!/bin/sh unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS startxfce4 &
Сделайте файл исполняемым:
Шаг 5. Запуск VNC сервера
На этом этапе уже можно запустить VNC-сервер с помощью команды:
Шаг 6. Подключение из Windows
Для того, чтобы подключиться из Windows к вашему Linux-серверу, используйте TightVNC Viewer.
Укажите IP-адрес компьютера, к которому нужно подключиться, и номер порта в поле Remote Host. В данном примере — 192.168.56.102::5901:

После того, как будет введён пароль, вы должны увидеть рабочий стол Xfce:

Шаг 8. Настройка systemd
Для того, чтобы запуск вашего VNC-сервера добавить в автозагрузку надо использовать systemd. Создайте новый файл сервиса systemd:
sudo nano /etc/systemd/system/vncserver@.service
Его содержимое должно быть следующим:
[Unit] Description=Systemd VNC server startup script for Ubuntu 20.04 After=syslog.target network.target [Service] Type=forking User=ubuntu ExecStartPre=-/usr/bin/vncserver -kill :%i &> /dev/null ExecStart=/usr/bin/vncserver -depth 24 -geometry 800×600 :%i PIDFile=/home/ubuntu/.vnc/%H:%i.pid ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Измените имя пользователя ubuntu и рабочего каталога ubuntu на нужные вам значения. Если у вас запущен VNC-сервер, остановите его:
vncserver -kill :1
Сообщите systemd о появлении нового сервиса:
sudo systemctl daemon-reload
Добавьте запуск вашего нового сервиса в список автозагрузки:
sudo systemctl enable vncserver@1.service
sudo systemctl start vncserver@1
Использование RDP для удалённого подключения
Помимо VNC, для управления Linux-сервером из Windows можно воспользоваться RDP (Remote Desktop Protocol). Для этого на компьютере с Ubuntu 20.04 установите утилиту xrdp:
sudo apt install xrdp
Для корректной работы сервиса необходимо добавить пользователя xrdp в группу ssl-cert:
sudo adduser xrdp ssl-cert
sudo apt-get install xfce4
Добавьте Xfce в сессии RDP в качестве рабочего стола по умолчанию:
Перезапустите сервис xrdp:
sudo systemctl restart xrdp.service
Процедура подключения из Windows к Linux-серверу по протоколу RDP почти ничем не отличается от подключения к удалённым Windows-серверам. Введите IP-адрес сервера, логин и пароль пользователя в Linux:

Если всё сделано правильно, вы увидите рабочий стол Xfce:

Подключение к Linux из Windows по SSH
Для подключения к компьютеру под управлением Linux по протоколу SSH из Windows можно воспользоваться PowerShell. Сначала становите OpenSSH Client, если ещё не установлен. Запустите на вашем компьютере PowerShell от имени администратора системы и выполните следующую команду:
Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’

Это необходимо для того, чтобы узнать текущую версию SSH-клиента. В данном примере доступна версия OpenSSH.Client-0.0.1.0. Установите OpenSSH.Client с помощью команды:
Add-WindowsCapability -Online -Name OpenSSH.Client

Для того, чтобы подключиться к устройству, на котором запущен SSH-сервер, необходимо ввести имя пользователя и IP-адрес. Команда для подключения по SSH используя PowerShell выглядит так:
Здесь ubuntu — имя пользователя на удалённом компьютере, а 192.168.56.1 — IP-адрес Linux-сервера, на котором запущен демон SSH.
При первом подключении необходимо подтвердить использование специального персонального ключа для шифрованного соединения по SSH-протоколу (введите слово Yes), затем введите пароль пользователя (в данном случае для пользователя ubuntu):

Как видите, соединение прошло успешно. Теперь можно выполнять все команды так же, как если бы вы их выполняли используя стандартный Linux SSH-клиент:

Для завершения терминальной сессии на удалённом компьютере введите команду exit. Теперь вы знаете как выполняется подключение к Linux из Windows по SSH.
Использование Putty для подключения к Linux
Пожалуй, одним из самых популярных способов подключения к Linux из Windows является кроссплатформенная утилита Putty — небольшая по размерам, но очень часто незаменима для подключения по таким протоколам как SSH, Telnet, rlogin и даже с помощью последовательных портов.
Для обычного подключения к Linux-серверу по протоколу SSH достаточно в поле Host Name (or IP—address) указать его IP-адрес и нажать кнопку Open (в данном примере Linux-сервер имеет IP-адрес: 192.168.56.102):

При первом подключении Putty предупредит, что используется специальный ключ безопасности и его нужно добавить в доверенные хосты. Нажмите кнопку Да:

Далее нужно будет ввести логин и пароль. Если всё сделано правильно, запустится удалённая сессия терминала Linux:

Мало кто знает, что Putty позволяет запустить почти любое приложение, установленное на компьютере с Linux, по сети в Windows. Для этого на компьютере с Windows нужно установить собственный X-сервер. В данном примере воспользуемся Xming.
Скачайте Xming с официального сайта. Установка довольно тривиальная, поэтому не будем на ней останавливаться. Ничего не меняйте в процессе установки. Просто нажимайте кнопку Next до тех пор, пока программа не установится и не запустится:

Когда установка Xming завершится, откройте Putty и в настройках сессии для вашего подключения в разделе SSH -> X11 включите флажок напротив опции Enable X11 forwarding, а также, в строке Отображение дисплея X впишите значение localhost:0, после чего откройте сессию подключения с помощью кнопки Open:

В открывшемся терминале Putty введите консольное название программы, обладающей графическим интерфейсом. В данном примере введено название графического редактора drawing:
(Знак & позволит запустить программу в фоновом режиме, в этом случае в окне Putty можно будет выполнять и другие команды):

Как видите, Linux-приложение drawing успешно запустилось по сети на X-сервере, установленном в Windows. С ним можно работать так же, как и с локальным приложением.
Выводы
Сегодня не существует слишком уж больших проблем для подключения к Linux из Windows. Способов существует довольно много. Каждый из них обладает своими достоинствами и недостатками, например, скорость работы VNC, да и других тоже, существенно зависит от скорости сетевого соединения. Существуют также программные средства, позволяющие подключаться к Linux-серверам используя мессенджеры или браузеры.
Блог начинающего линуксоида.

Для создания общих сетевых ресурсов в среде 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. При желании вы можете указать доступ к отдельным каталогам на этом диске, аналогичным способом. Сохраните файл и выполните команду:
Эта команда проверит конфиг на наличие ошибок и в случае их обнаружения, укажет где что исправить.
Теперь запустите сервер 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
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 — только компьютерам в этой подсети будет обеспечен доступ к общему ресурсу (можете указать конкретный 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. Кнопка подключения сетевого диска появится в файловом менеджере.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
SMB и Samba в Linux: подключение к общей папке Windows, создание сетевых папок в Linux
Книга по SMB и Samba на русском языке. Оглавление
Samba — это SMB для Linux
SMB — это протокол, технология, которая позволяет создать файловые сервер. В первой части я говорил, что в Linux функции сервера и клиента SMB выполняет Samba. Это не совсем так, на самом деле, в настоящее время Samba не только реализует возможности SMB, но и дублирует функционал сервера Доменов Active Directory (технология Windows, позволяющая управлять множеством компьютеров — кстати, про Active Directory скоро будет большой материал на HackWare.ru).
Далее мы будем говорить про Samba, но мы затронем только вопросы SMB.
Начните с установки пакетов samba и smbclient.
В Debian, Linux Mint, Ubuntu, Kali Linux и их производных для установки samba выполните команду:
В Arch Linux, BlackArch и их производных выполните команду:
Как в Linux увидеть все компьютеры Windows с совместными ресурсами
Для показа всех совместных сетевых ресурсов Windows выполните команду:
В этой и последующих командах используется флаг -N, который означает не использовать пароль. Если же вы используете пароль, то укажите опцию -U с именем пользователя, пароль нужно будет ввести интерактивно.
В начале идёт имя рабочей группы WORKGROUP. Затем следует список компьютеров. Для тех из них, для которых удаётся получить список сетевых папок, они выводятся.
Как можно увидеть выше, для компьютера \\VYACHESLAV получен список совместно используемых ресурсов, а для компьютера \\HACKWARE-MIAL — нет. При этом если я включал на компьютере \\HACKWARE-MIAL поддержку протокола SMB 1, а при запуске команды указывал хоть какое-то имя пользователя, например:
либо просто запускал smbtree с правами администратора:
то мне удавалось получить список файлов также и для компьютера \\HACKWARE-MIAL. UDP: видимо, такое поведение в том, что совпадали имена польозвателей на компьютерах с Linux и Windows.
Как в Linux вывести доступные по сети ресурсы (совместные папки и принтеры Windows)
Предыдущая команда показала нам несколько компьютеров с сетевыми папками. Предположим, меня интересует компьютер \\HACKWARE-MIAL, чтобы вывести его сетевые папки я запускаю команду вида:
в моём случае это:
Кстати, вместо имени компьютера можно указать IP адрес.
В полученном выводе половину информации составляют сообщения о различных проблемах. Значимые данные:
В полученном выводе Share и Users являются общими сетевыми папками.
исчезнут, если создать файл /etc/samba/smb.conf.
пропадут, если на компьютере с сетевой папкой включить поддержку протокола SMB1.
Как я уже говорил чуть выше, флаг -N означает не использовать пароль. Если же вы используете пароль, то укажите опцию -U с именем пользователя, пароль нужно будет ввести интерактивно.
Как и для smbtree, для smbclient необязательно использовать sudo, но без sudo для некоторых компьютеров программа срабатывает нормально, а для некоторых завершается ошибкой:
Как подключиться к сетевой папке Windows из Linux
Программа smbclient умеет не только показывать общие ресурсы, но и имеет интерактивный режим, во время которого можно копировать файлы между локальным компьютером и общей папкой, удалять файлы, создавать папки и переходить по каталогам, просматривать содержимое файлов и их свойств и выполнять другие действия в файловой системе совместно используемой сетевой папки.
Кроме интерактивного режима, можно просматривать содержимое сетевых папок и в проводнике Linux — об этом будет рассказано позже, а пока остановимся на подключении в командной строке.
Для входа в интерактивный режим запустите команду вида:
Например, я хочу подключиться к компьютеру //HACKWARE-MIAL/ и выполнить действия с файлами в сетевой папке Share, тогда моя команда следующая:
Если вы хотите, чтобы при подключении была изменена текущая рабочая директория в сетевой папке, то есть чтобы была открыта другая папка, то используйте опцию -D. К примеру, я хочу подключиться к папке NewFolder, тогда команда следующая:
Подключение к SMB папке, требующий авторизации
К примеру, на компьютере //HACKWARE-MIAL/ имеется сетевая папка ShareRestricted, права на просмотр которой есть у пользователя ShareOverlord. Для просмотра шары, защищённой паролем, нужно использовать команду вида:
В моём случае это команда:
Команды SMB в Linux
Доступны следующие интерактивные команды:
Выводит все доступные команды:
Для показа справки по определённой команде, выполните
Переход в другой каталог (смена текущей рабочей директории) на удалённой системе:
Переход в другую директорию на локальной системе:
Удаление файла в шаре:
Имеется псевдоним этой команды:
И ещё одна команда со схожей функцией:
Эта команда рекурсивно удалить все совпавшие с шаблоном имени файлы и директории.
Показ файлов и папок в текущей папке:
Имеется псевдоним этой команды:
И ещё один, даже более короткий псевдоним:
Скачать файлы с общей папки:
Для повторного скачивания файла:
Для скачивания всех файлов, чьём имя совпадает с шаблоном:
Например, чтобы скачать все файлы с файловым расширением .exe нужно запустить такую команду:
Для каждого файла, совпавшего с шаблоном, будет выполнен запрос на скачивание. Если вы действительно хотите его скачать, то нажмите клавишу «y»:
Также имеется команда newer, которая скачивает файлы (mget), которые новее, чем указанный локальный файл. Используется она так:
Выгрузка файла на общую папку:
Следующая команда скопирует локальный файл в шару:
Повторная закачка файла:
Для закачки всех файлов, чьём имя совпадает с шаблоном:
К примеру, чтобы закачать в шару все файлы (из локальной текущей рабочей директории), которые имеют расширение *.cap, нужно запустить команду:
Для каждого файла, совпавшего с шаблоном, будет выполнен запрос подтверждения, если вы действительно хотите его закачать, то нажмите клавишу «y»:
Включение и отключение рекурсии
Можно включать и отключать рекурсивный режим для mget и mput.
Показ всей возможной информации о файле:
В выводимой информации можно увидеть альтернативное (DOS) имя, временные метки (дата создания, доступа, записи и изменения файла), атрибуты.
Копирование файла на сервере:
Создание директории:
Удаление директории:
Удаление файлов
Следующая команда удалит все совпавшие с МАСКОЙ файлы:
Псевдоним команды для удаления файлов:
С помощью команды wdel можно удалить все совпавшие файлы по подстановочным символам:
Переименование файлов:
Ссылки
Создание жёсткой ссылки Windows:
Создание жёсткой ссылки UNIX:
Создание символьной ссылки UNIX:
Выход с сервера:
Вывод истории команд текущей сессии:
Просмотр содержимого текстового файла:
Показ текущей рабочей директории:
Другой вариант показа текущей рабочей директории — это команда cd без аргументов:
Создание и извлечение архивов tar
Программа tar используется для объединения нескольких файлов в один файл. Объединение происходит без сжатия. Для того, чтобы несколько файлов из сетевой папки объединить в архив и скачать на локальную систему запустите команду вида:
К примеру, я хочу скачать файлы all-databases.sql besside.log ChromeSetup.exe из совместной папки и объединить их в архив all.tar, тогда моя команда следующая:
Если нужно разархивировать файл на локальной системе и всё его содержимое отправить на удалённую общую папку, то запустите команду вида:
К примеру, я хочу отправить содержимое архива all.tar в общую папку:
Для установления режимов tar используется команда
Установка таймаута операций:
Таймаут устанавливается в секундах и по умолчанию равен 20.
Установка нового соединения:
Закрытие сессии, выход:
Вывод списка открытых подключений:
Отображение текущего активного подкючения:
Изменение удалённой директории (переход на одну папку выше):
Выполнение команд в локальной системе:
Чтобы команда выполнялась не на удалённой системе, а на локальной, поставьте перед ней ! (восклицательный знак), например^
Автоматическое выполнение команд в сетевой папке Windows
Необязательно каждый раз вводить все команды вручную — вы можете перечислить их через запятую и указать в двойных кавычках с опцией -c, например:
Как смонтировать общую папку Windows/Samba в Linux
Сетевая папка Windows может быть доступна в файловых менеджерах Linux как любая другая локальная папка. Для этого её нужно смонтировать. После монтирования не придётся использовать консоль для просмотра списка файлов и скачивания или закачивания файлов.
Начните с установки пакета cifs-utils.
В Debian, Linux Mint, Ubuntu, Kali Linux и производных выполните:
В Arch Linux, BlackArch и производных выполните:
Предыдущие команды smbtree и smbclient понимали имена компьютеров Windows, такие имена как HACKWARE-MIAL. Монтирование выполняется с помощью команды mount, которая такие имена не умеет обрабатывать без помощи преобразования имён DNS. Поэтому при монтировании можно либо:
- Использовать вместо имён компьютеров IP адрес. В этом случае у компьютера с сетевой папкой должен быть постоянный (статичный) IP адрес
- Либо настроить преобразование имён для компьютеров Windows. Это можно сделать, например, с помощью файла /etc/hosts. Кстати, в этом случае у компьютера с общей папкой также должен быть постоянный IP адрес (смотрите Как настроить локальный DNS используя файл /etc/hosts в Linux)
В общем, в любом случае настройте в роутере или в самой Windows постоянный локальный IP.
Если вы хотите настроить преобразование имён с помощью файла /etc/hosts, то откройте его:
И добавьте туда запись вида
Например, у меня IP_АДРЕС это 192.168.0.101, а именем компьютера является HACKWARE-MIAL, тогда я добавляю следующую запись:
Пингуем по имени компьютера Windows, чтобы убедиться, что всё сработало:
Теперь нам нужно создать точку монтирования — папку, где появятся файлы из шары. Я создаю папку /mnt/share:
Чтобы не возникало проблем с правами доступа, папка, куда монтируется шара (например, /mnt/share/), должна принадлежать текущему пользователю Linux — если вы создавали папку без sudo, то она уже принадлежит обычному пользователю. Но если вы создавали папку с sudo (например, иначе это невозможно сделать в /mnt/), то вам нужно поменять её владельца командой вида::
Чтобы узнать имя текущего пользователя выполните команду:
Например, чтобы поменять владельца папки /mnt/share/ на mial:
Теперь для монтирования сетевой шары Windows нужно запустить команду вида:
В этой команде вы должны вставить свои значения для
- //ИМЯ-КОМПЬЮТЕРА/Папка
- /точка/монтирования
Значение других элементов команды:
- sudo — монтировать шару можно и без прав суперпользователя, но использовать опцию -o, после которой указываются опции для монтирования, можно только с правами root
- -t cifs выбор файловой системы для монтирования
- -o означает, что после этой опции будут перечислены опции для монтирования:
- username=guest,password= — произвольное имя пользователя без пароля — используется для подключение к общей папки, для которой не требуется вход. Вместо этой конструкции можно указать просто guest, но в этом случае на некоторых системах всё равно запрашивается пароль. По моим наблюдениям, пароль запрашивается когда имя текущего пользователя на Linux совпадает с именем пользователя на Windows
- uid=1000 — в качестве владельцев всех файлов в шаре будет указан текущий пользователь Linux
- iocharset=utf8 — эта кодировка позволяет работать с именами файлов, в которых используются не только латинские буквы
К примеру, путь до сетевой шары у меня //HACKWARE-MIAL/Share, её я хочу смотрировать в папку /mnt/share, тогда команда будет следующей:
Вид сетевой папки Windows в Double Commander:
Вид сетевой папки в стандартном проводнике Linux:
Для размонтирования нужно запустить следующую команду (укажите либо точку монтирования, либо ресурс, который был смонтирован):
Напомню, что в предыдущей части я не только настроил папку для входа без пароля, но на том же самом компьютере и настроил вторую папку с именем ShareRestricted. У этой папки владелец ShareOverlord, а пароль для входа 1234. Для подключения папки, доступ к которой возможен только по паролю, используется та же самая команда, но нужно указать реальные учётные данные:
Чуть дальше очень похожий набор опций, в том числе пароль в открытом виде, мы будем использовать в файле /etc/fstab для настройки автоматического монтирования сетевой папки. Файл /etc/fstab доступен для чтения всем а, следовательно, также доступен всем ваш пароль от Windows в нём. Чтобы обойти эту проблему, можно использовать файл с учётными данными. Это файл содержит только имя пользователя и пароль.
Используя текстовый редактор, создайте файл с учётными данными для входа на ваш удалённый сервер:
В этот файл введите имя пользователя и пароль от Windows:
В моём примере это:
Сохраните файл и закройте редактор.
Измените права доступа к этому файлу, чтобы предотвратить нежелательный доступ к вашим учётным данным:
Посмотрите абсолютный путь до этого файла:
В моём случае абсолютный путь:
Теперь вместо двух опций:
нужно использовать одну опцию, в качестве значения которой нужно указать абсолютный путь до файла с логином и паролем:
Моя команда стала выглядеть так:
Настройка автоматического монтирования сетевой папки в Linux
Автоматически монтируемые файловые системы прописываются в файле /etc/fstab. Откроем этот файл:
Теперь в него нужно добавить строку вида:
Мы добавили опцию nofail, чтобы ОС нормально загружалась даже если не удалось смонтировать данную файловую систему. Ещё добавьте опцию _netdev, эта опция означает, что файловая система находится на устройстве, которому требуется доступ к сети (используется для предотвращения попыток системы смонтировать эти файловые системы до тех пор, пока в системе не будет включена сеть).
Для моего примера это строка:
Сохраним и закроем этот файл. Для проверки выполним:
Если сетевая папка успешно смонтировалась, значит можно выполнить проверку перезагрузкой.
Если нужно смонтировать папку для входа в которую не требуется пароль, то используйте в качестве опции учётные данные «username=guest,password=»:
Либо можно по-прежнему использовать файл .smbcredentials, как это было показано выше:
/.smbcredentials запишите следующее:
Как создать общую сетевую папку в Samba
Если в этой статье вы пропустили предыдущие части, так как вам нужно только настроить файловый сервер на Linux, то начните с установки пакета samba.
Следующая команда не сработает, если отсутствует файл /etc/samba/smb.conf. Если у вас тоже нет этого файла, то создаёте его заглушку — к настройке самого файла smb.conf мы вернёмся позже:
Теперь нужно добавить пароль для пользователя Samba. Действует следующее правило: имя пользователя должно быть таким же, как у вашего текущего пользователя, а пароль можно установить иной, отличный от вашего системного пароля.
Для установки пароля Samba, выполните следующую команду:
Если вы хотите, чтобы у пользователя не было пароля, то укажите опцию -n.
Создайте папку, которая станет совместно используемой:
Узнаем абсолютный путь до папки
Откройте для редактирования файл /etc/samba/smb.conf:
Добавьте туда строки вида:
Обратите внимание, что все пробелы в строках выше являются обязательными.
Для моих данных это строки:
Теперь запустим службу SMB:
Для добавления службы в автозагрузку выполните:
На самом деле, мы настроили не полноценную Samba, а только файловый сервер SMB. Одно из следствий этого — показанные выше способы обнаружения сетевых папок, такие как команда smbtree в Linux или переход во вкладку «Сеть» в проводнике Windows, не обнаружат нашу шару.
Для подключения к этой общей сетевой папке на Linux нужно использовать IP адреса компьютера Linux вместо имени компьютера, как это мы делали раньше. Кстати, поэтому нужно настроить статичный IP (смотрите статью «Как настроить Linux на использование статичного IP адреса»).
Создадим файл, чтобы сетевая папка не была пустой:
Посмотрите локальный IP адрес компьютера, на котором запущена Linux:
У меня этим IP является 192.168.0.89, а папку, как мы помним, я создал с именем linuxshare, тогда в Windows я перехожу в проводнике во вкладку «Сеть» и подключаюсь к этой папке следующим образом:
Вводим учётные данные (которые мы установили командой smbpasswd):
Видим содержимое совместно используемой папки, размещённой на Linux с помощью SMB:
Для подключения к сетевой папке из консоли Linux, запустите команду вида:
Для моего примера это:
После ввода пароля нам становится доступным содержимое сетевой папки.
Эту папку можно смонтировать как это было показано в предыдущем разделе, либо подключать в Windows как сетевой диск, как это было показано в первой части.
Ошибки smbtree
Из-за разнообразия версий протокола SMB и возможных настроек, запуск программы smbtree довольно часто завершается ошибками. Здесь собраны ошибки smbtree и возможные пути решения проблем.
smbc_opendir: No such file or directory
завершает работу с ошибкой
Одна из причин данной ошибки: в локальной сети отсутствуют компьютеры с совместными ресурсами.
Если компьютеры с совместными ресурсами присутствуют в сети, но вы всё равно получаете эту ошибку, то попробуйте активировать на них SMB 1.
Segmentation fault
приводит к ошибке
Точная причина не ясна, возможно это ошибка конкретной версии smbtree, попробуйте обновить эту программу.
Попробуйте запуск с другими опциями.
smbtree ничего не выводит и «подвисает»
Если smbtree не выводит явных ошибок, то для того, чтобы разобраться, на каком именно этапе стопорится работа программы, добавьте к вашей команде опцию -d и укажите число от 0 (выводить только критические ошибки) до 10 (выводить все сообщения).
Как установить и настроить взаимодействие Linux с Windows в локальной сети
Для организации доступа к файлам расположенным на linux машинах с компьютеров под управлением ОС windows, был специально разработан пакет программ, которые позволяют обращаться к сетевым дискам и принтерам по протоколу SMB/CIFS.
Пакет Samba имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущенным под лицензией GPL. Samba представляет собой протокол, используемый Microsoft для разделения файлов и служб печати. Этот протокол был разработан в 1987 году и позже перенесен на платформы Linux Эндрю Триджеллом (Andrew Tridgell). Взаимодействие в сети компьютеров под управлением Windows построено на использовании протокола SMB (Server Message Block) — блоках серверных сообщений. Пакет Samba обеспечивает выполнение всех необходимых в этих случаях задач по открытию, закрытию, чтению, записи, поиску файлов, созданию и удалению каталогов, постановке задания на печать и удалению его оттуда. Возможности его условно можно разделить на две категории: предоставление ресурсов (под коими понимается доступ к системе принтеров и файлам) для клиентов Windows и доступ к ресурсам клиентов. То есть, компьютер под управлением Linux может выступать как в роли сервера, так и клиента. Огромным плюсом пакета samba является контроль доступа, который может быть реализован либо на уровне ресурсов (share level), когда какому-либо ресурсу в сети назначается пароль и соответствующие правила использования или же более совершенную и гибкую организацию на уровне пользователя, когда для каждого пользователя создается учетная запись на сервере, где помимо имени и пароля содержится вся необходимая информация о правах доступа к ресурсу. Прежде чем получить доступ к требуемому ресурсу, каждый пользователь проходит аутентификацию, после чего ему и предоставляются права согласно учетным записям.
Samba сервер
Samba клиент
Достаточно многие пользователи 1с Предприятие используют БД в файловом варианте, ну, так, уж повилось:) и поэтому для грамотного взаимодействия пользователей с базой можно использовать сервер Samba. Что позволит ограничить доступ, или совсем его закрыть к базам 1с.
Конфигурация сервера Samba
Конфигурационный файл Samba называется smb.conf и находится в корневом каталоге /еtc или /etc/samba. Сервис Samba считывает его каждые 60 секунд, поэтому изменения, внесенные в конфигурацию, вступают в силу без перезагрузки, но не распространяются на уже установленные соединения. Файл конфигурации содержит четыре раздела: [global], [homes], [printers] и [shares]. Открыть для редактирования файл конфигурации можно командой: mcedit /etc/samba/smb.conf Раздел [global] содержит наиболее общие характеристики, которые будут применяться везде, но которые, впрочем, затем можно переопределить в секциях для отдельных ресурсов. Некоторые параметры этого раздела имеют отношение и к настройке клиентской части Samba.
Параметры раздела [global]
workgroup # имя_группы в сети Windows. netbios name # netbios имя сервера в локальной сети. server string # строка комментария, который виден в окне свойств просмотра локальной сети. guest ok = yes # разрешение гостевого входа на сервер. guest ok = no # гостевой вход запрещен. guest account # аккаун, под которым разрешен гостевой вход на сервер. security = user # доступ с аутентификацией на уровне пользователя. security = share # вход свободный. hosts allow # определяет клиентов, которым разрешен доступ к серверу. interfaces # указывает в какой сети будет работать сервер.
Параметры раздела [home]
comment # комментарий в окне свойств сети. browseable # определяет, будет ли виден ресурс в списке просмотра сети. writable # разрешает или запрещает запись в домашнюю директорию. create mode # определяет права доступа для вновь созданных файлов. directory mode # определяет права доступа для каталогов.
Устанавливаем web-интерфейс SWAT (Samba Web Administration Tool) для работы с smb.conf
В большинстве случаев настройка Samba заключается в редактировании основного конфигурационного файла /etc/samba/smb.conf и управлении пользователями с помощью smbpasswd. Изменения можно производить в редакторе mcedit, nano или kwrite. Если это непривычно — можно использовать web-интерфейс SWAT (Samba Web Administration Tool) который для удобства пользователей Linux был создан разработчиками пакета Samba.
Установить пакет samba-swat можно командой:
yum install samba-swat По умолчанию в целях безопасности SWAT отключен и поэтому заходим:
mcedit /etc/xinetd.d/swat и меняем значение параметра:
disable = no Для предоставления возможности удаленного администрирования необходимо в параметр only_from добавить допустимый ip. И сделать рестарт:
service xinetd restart Все! samba-swat теперь доступен по URL http://localhost:901/ а номер порта в целях безопасности можно изменить в файле:
mcedit /etc/xinetd.d/swat
Расшариваем папки и меняем доступ к директориям Samba:
Конструкция нашего файлового сервера будет придерживаться следующей структуры:
[base] — каталог в котором будут хранится базы 1с, с ограничением доступа по ip;
[other++] — остальные каталоги с предоставлением доступа на уровне авторизации пользователя, их может быть много, все зависит от поставленной задачи. sudo mkdir samba # Создаем корневую папку Samba Внутри создаем еще две [base] и [other], открывает smb.conf устанавливаем в параметрах [global]:
security = share # Пользователи не будут проходить систему авторизации. Теперь в параметре [base] делаем ограничение по ip:
hosts allow 10.4.8.32 10.4.8.33 # Разрешаем доступ к каталогу только 10.4.8.32 и 10.4.8.33 guest ok = yes # Разрешаем гостевой вход в каталог Переходим к каталогу [other] и выставляем ограничение доступа по имени пользователя и паролю:
valid user = glavbuh geo# Это — список пользователей, которым разрешен доступ к ресурсу. username = glavbuh geo# Имя пользователя директории [other] glavbuh.
Синтаксис измененных параметров можно проверить командой:
Остается создать пользователей glavbuh и geo задав пароль, для входа в каталог [other]. Добавляем пользователей в Samba smbpasswd -a <имя_пользователя> И разрешаем пользователей в Samba
smbpasswd -e <имя_пользователя>