В большинстве случаев сетевое хранилище это просто компьютер с операционной системой, и чаще всего это Windows. Подключить сетевую папку к компьютеру на котором стоить Linux например Fedora, достаточно просто. Давайте попробует это сделать примере последнего дистрибутива операционной системы Fedora 33.
Интересные статьи по данной теме.
Simply Linux и сетевые диски
Подключение общей папки Windows к Fedora
Для начала нам нужно открыть проводник, если так можно сказать. Сделать это можно как и все остальное через «Обзор».
После чего, права в списке выбираем «Другие места» и поле «Подключиться к сервер вводим
smb://адрес файлового сервера/
Нажимаем подключиться.
Дальше нужно будет ввести учетные данные от сервера к которому вы подключаетесь. Если к общей папке доступ открыть для всех то вводим логин пароль от Fedora. Не забывайте отметить пункт «Запомнить навсегда». Иначе придется каждый раз вводить пароль.
После того как вы подключились к серверу на котором лежит нужная общая папка. Нужно в нее зайти.
Произойдет автоматическое монтирование диска с этой папкой.
Очень важная особенность Fedora. В отличие от других Linux систем Ubuntu, Astra, Debian и т.д, после перезагрузки данный диск не пропадет.
Сетевое администрирование¶
Хочу обезопасить свой Интернет-трафик. Какую реализацию VPN выбрать?¶
WireGuard¶
WireGuard – самый современный и актуальный протокол для VPN. Обеспечивает максимальную скорость работы за счёт реализации в виде модуля ядра Linux и надёжную криптографическую защиту от прослушивания.
OpenVPN¶
OpenVPN – cамая популярная и стабильная в настоящее время реализация VPN. Способен работать как через UDP, так и TCP, имеет плагины маскировки под TLS, обеспечивает высокую защищённость, но имеет низкую производительность из-за постоянных переключений между режимами пользователя и ядра.
L2TP/IPSec¶
Поддерживается большинством роутеров «из коробки», но является устаревшим. Изначально создавался для Windows, поэтому многие серверы заточены под соответствующие реализации клиентов.
PPTP¶
Устаревший, уязвимый by design протокол. Трафик, проходящий через сеть, использующую данный протокол, может быть легко расшифрован за несколько часов. Категорически не рекомендуется к применению даже на устаревшем оборудовании.
При использовании SSH появляется ошибка доступа к ключам. Как исправить?¶
См. здесь.
При установке VPN-соединения по протоколу PPTP появляется ошибка. Как исправить?¶
Если продключение к VPN по протоколу PPTP не проходит из-за ошибки, включим поддержку GRE в настройках межсетевого экрана.
Для этого выполним следующее:
sudo firewall-cmd --permanent --add-protocol=gre sudo firewall-cmd --reload
Изменения вступят в силу немедленно.
Важно: Некоторые интернет-провайдеры и большая часть операторов сотовой связи ограничивают передачу данных по протоколу GRE. В случае, если вы уверены, что поставщик услуг связи здесь не при чем, обратите внимание на маршрутизатор: некоторые модели бюджетных устройств также могут ограничивать трафик.
Как пробросить локальный порт на удалённый хост?¶
См. здесь.
Как поднять OpenVPN сервер в Fedora?¶
См. здесь. В данной статье вместо ovn следует использовать openvpn во всех путях и именах юнитов.
Как поднять WireGuard сервер в Fedora?¶
См. здесь.
Как поднять свой сервер Matrix в Fedora?¶
См. здесь.
Для запуска простейшего веб-сервера можно использовать Python и модуль, входящий в состав базового пакета:
python3 -m http.server 8080
Веб-сервер будет запущен на порту 8080. В качестве webroot будет использоваться текущий рабочий каталог.
Как лучше настраивать сетевые подключения?¶
В Fedora для настройки сети используется Network Manager. Для работы с ним доступны как графические менеджеры (встроены в каждую DE), так и консольный nm-cli.
Как поднять DLNA сервер в локальной сети?¶
См. здесь.
Как сделать замеры скорости локальной или беспроводной сети?¶
Для точных замеров производительности сети нам потребуется как минимум два компьютера (либо компьютер и мобильное устройство), а также утилита iperf3, присутствующая в репозиториях Fedora. Установим её:
На первом устройстве запустим сервер:
По умолчанию iperf прослушивает порт 5001/tcp на всех доступных сетевых соединениях.
Теперь временно разрешим входящие соединения на данный порт посредством Firewalld (правило будет действовать до перезагрузки):
sudo firewall-cmd --add-port=5001/tcp
На втором устройстве запустим клиент и подключимся к серверу:
В качестве клиента может выступать и мобильное устройство на базе ОС Android с установленным Network Tools. В этом случае в главном меню программы следует выбрать пункт Iperf3, а в окне подключения ввести:
Параметр -c обязателен. Если он не указан, программа выдаст ошибку.
192.168.1.2 – это внутренний IP-адрес устройства в ЛВС, на котором запущен сервер. Номер порта указывать не требуется.
Как передать содержимое каталога на удалённый сервер?¶
Передача содержимого локального каталога на удалённый сервер посредством rsync:
rsync -chavzP --delete --stats /path/to/local user@example.org:/path/to/remote
Здесь user@example.org – данные для подключения к серверу, т.е. имя пользователя на удалённом сервере и хост.
Как получить содержимое каталога с удалённого сервера?¶
Получение содержимого каталога с удалённого сервера посредством rsync:
rsync -chavzP --delete --stats user@example.org:/path/to/remote /path/to/local
Здесь user@example.org – данные для подключения к серверу, т.е. имя пользователя на удалённом сервере и хост.
Как правильно указать DNS серверы в Fedora?¶
Для того, чтобы указать другие DNS серверы, необходимо использовать Network Manager (графический или консольный): свойства соединения -> страница IPv4 -> другие DNS серверы.
Можно ли править файл /etc/resolv.conf в Fedora?¶
Нет, т.к. этот файл целиком управляется Network Manager и перезаписывается при каждом изменении статуса подключения (активация-деактивация соединений, перезапуск сервиса и т.д.).
Если необходимо указать другие DNS серверы, это следует производить через свойства соответствующего соединения.
Как можно средствами Firewalld запретить ICMP?¶
По умолчанию ICMP трафик разрешён для большей части зон, поэтому запретить его можно вручную:
sudo firewall-cmd --zone=public --add-icmp-block={echo-request,echo-reply,timestamp-reply,timestamp-request} --permanent
Применим новые правила:
sudo firewall-cmd --reload
В данном примере для зоны public блокируются как входящие, так и исходящие ICMP ECHO и ICMP TIMESTAMP.
Как средствами Firewalld разрешить подключение к OpenVPN серверу только с разрешённых IP адресов?¶
Сначала отключим правило по умолчанию для OpenVPN, разрешающее доступ к серверу с любых IP адресов:
sudo firewall-cmd --zone=public --remove-service openvpn --permanent
Теперь создадим rich rule, разрешающее доступ с указанных IP-адресов (или подсетей):
sudo firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="1.2.3.4" service name="openvpn" accept' --permanent sudo firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="5.6.7.0/24" service name="openvpn" accept' --permanent
Применим новые правила:
sudo firewall-cmd --reload
Здесь public – имя зоны для публичного интерфейса, 1.2.3.4 – IP-адрес, а 5.6.7.0/24 – подсеть, доступ для адресов из которой следует разрешить.
Как средствами Firewalld разрешить подключение к WireGuard серверу только с разрешённых IP адресов?¶
Сначала отключим правило по умолчанию для WireGuard, разрешающее доступ к серверу с любых IP адресов:
sudo firewall-cmd --zone=public --remove-port=27015/udp --permanent
Теперь создадим rich rule, разрешающее доступ с указанных IP-адресов (или подсетей):
sudo firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="1.2.3.4" port port=27015 protocol=udp accept' --permanent sudo firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="5.6.7.0/24" port port=27015 protocol=udp accept' --permanent
Применим новые правила:
sudo firewall-cmd --reload
Здесь 27015 – порт сервера WireGuard, public – имя зоны для публичного интерфейса, 1.2.3.4 – IP-адрес, а 5.6.7.0/24 – подсеть, доступ для адресов из которой следует разрешить.
Как узнать внешний IP адрес за NAT провайдера?¶
Для этой цели можно использовать внешний сервис, возвращающий только внешний IP и утилиту curl:
Как средствами Firewalld разрешить подключение к веб-серверу только с IP адресов CloudFlare?¶
При использовании CloudFlare в качестве системы защиты от DDoS атак, а также WAF, возникает необходимость разрешать входящие подключения исключительно с IP адресов данного сервиса.
Сначала отключим правило по умолчанию для веб-сервера, разрешающее доступ с любых IP адресов:
sudo firewall-cmd --zone=public --remove-service http --permanent sudo firewall-cmd --zone=public --remove-service https --permanent
Напишем небольшой скрипт foo-bar.sh
, который получит актуальные пулы IP-адресов и создаст rich rule, разрешающие доступ лишь с подсетей CloudFlare (IPv4, IPv6):
#!/bin/bash set -ef API=https://www.cloudflare.com/ips-v ZONE=public function fw_add { local IFS=$'n' local lines=($(curl -sS $API$1)) for i in "${lines[@]}" do firewall-cmd --zone=$ZONE --add-rich-rule="rule family=ipv$1 source address="$i" service name="http" accept" --permanent firewall-cmd --zone=$ZONE --add-rich-rule="rule family=ipv$1 source address="$i" service name="https" accept" --permanent done } fw_add 4 fw_add 6
Запустим наш скрипт:
Применим новые правила файрвола:
sudo firewall-cmd --reload
Здесь public – имя зоны для публичного сетевого интерфейса.
Как пробросить IP адреса клиентов за CloudFlare?¶
См. здесь.
Как проверить наличие или отсутствие потерь пакетов до узла?¶
Для проверки работоспособности сети и наличия, либо отсутствия потерь пакетов между узлами маршрута, широко используется утилита mtr:
Запустим проверку маршрута до узла example.org:
Приостановить работу можно нажатием клавиши P, для возобновить – пробел, а для выхода – Q.
Как получить список установленных сетевых соединений?¶
Воспользуемся утилитой ss для вывода списка установленных сетевых соединений:
Как получить список открытых портов?¶
Воспользуемся утилитой ss для вывода открытых портов, ожидающих входящих соединений:
Статус LISTEN означает, что TCP-порт открыт и ожидает входящих соединений. В то же время для UDP-портов будет отображаться статус UNCONN, т.к. этот протокол не подразумевает предварительное открытие подключений.
Почему при подключении к сети имя хоста машины изменяется?¶
DHCP сервер провайдера способен выдавать помимо IP-адресов и DNS-серверов ещё и нестандартное имя хоста. Полученное таким способом значение называется transient hostname. Оно будет применимо с компьютеру с момента установки соединения и до отключения от соответствующей сети.
Если на компьютере имеется несколько сетевых подключений, каждое из которых предоставляет свой hostname, основным будет считаться то, чьё соединение было установлено последним.
Как запретить использование полученного от провайдера имени хоста?¶
Для того, чтобы запретить использование полученного от DHCP сервера transient hostname, установим статическое имя хоста.
Как переключить Network Manager на использование systemd-resolved?¶
Начиная с Fedora 30, в комплект базовой системы входит systemd-resolved, который занимается преобразованием имён DNS в IP-адреса, имеет встроенный DNS-кэш и активирован по умолчанию.
В то же время, Network Manager с настройками по умолчанию использует собственный виртуальный файл конфигурации resolv.conf, игнорирующий присутствие systemd-resolved.
Для исправления этой ситуации, убедимся, что systemd-neworkd запущен и функционирует:
sudo systemctl enable --now systemd-resolved.service
Создадим в каталоге /etc/NetworkManager/conf.d
файл 99-resolved.conf
следующего содержания:
[main] dns=systemd-resolved
Убедимся, что файл /etc/resolv.conf
является символической ссылкой на /run/NetworkManager/resolv.conf
:
Если по какой-то причине это не так, то внесём соответствующие правки:
sudo rm -f /etc/resolv.conf sudo ln -sf /run/NetworkManager/resolv.conf /etc/resolv.conf
Перезапустим затронутые сервисы:
sudo systemctl restart NetworkManager.service sudo systemctl restart systemd-resolved.service
Проверим, что в качестве основного сервера DNS применяется виртуальная заглушка:
Если в выводе присутствует строка nameserver 127.0.0.53
, значит всё настроено верно.
Как проверить статус работы systemd-resolved?¶
Выведем статус systemd-resolved, включающий список используемых DNS серверов и общие параметры конфигурации:
Выведем статистические данные об использовании systemd-resolved (состояние кэша, количество запросов и т.д.):
Как сделать systemd-resolved основным резолвером?¶
Важно: Начиная с Fedora 33, systemd-resolved уже используется в качестве основного системного DNS-резолвера.
Удалим существующую символическую ссылку, указывающую на Network Manager:
sudo rm -f /etc/resolv.conf
Установим systemd-resolved основным резолвером:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Изменения вступят в силу немедленно.
Как отключить systemd-resolved и вернуться к прежней реализации?¶
Удалим существующую символическую ссылку, указывающую на systemd-resolved:
sudo rm -f /etc/resolv.conf
Установим Network Manager основным генератором файла /etc/resolv.conf
:
sudo ln -sf /run/NetworkManager/resolv.conf /etc/resolv.conf
Остановим и заблокируем сервис:
sudo systemctl disable --now systemd-resolved.service sudo systemctl mask systemd-resolved.service
Изменения вступят в силу немедленно.
Можно ли зашифровать DNS при помощи TLS?¶
Да, systemd-resolved, входящий в поставку системы начиная с Fedora 30, полностью поддерживает технологию DNS-over-TLS, позволяющую зашифровать весь DNS трафик устройства.
Настроим систему на использование systemd-resolved либо совместно с Network Manager, либо в монопольном режиме, затем откроем файл конфигурации /etc/systemd/resolved.conf
:
sudoedit /etc/systemd/resolved.conf
Внесём следующие правки:
[Resolve] DNS=1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844 #Domains= #LLMNR=yes MulticastDNS=yes DNSSEC=allow-downgrade DNSOverTLS=opportunistic Cache=yes DNSStubListener=yes ReadEtcHosts=yes
Здесь используются серверы CloudFlare с поддержкой DNS-over-TLS.
Сохраним изменения в файле и перезапустим systemd-resolved:
sudo systemctl restart systemd-resolved.service
Теперь в информации об используемых DNS должна отображаться информация об использовании этой технологии.
Как очистить кэши systemd-resolved?¶
Очистим кэш systemd-resolved:
Где расположены файлы конфигурации доступных сервисов Firewalld?¶
Предустановленные файлы конфигурации служб Firewalld находятся в каталоге /usr/lib/firewalld/services
.
Настоятельно не рекомендуется что-либо изменять в нём ибо при следующем обновлении пакета все изменения будут потеряны. Вместо этого следует создать пользовательское переопределение.
Как переопределить предустановленный сервис в Firewalld?¶
Пользовательские переопределения должны храниться в каталоге /etc/firewalld/services
.
В качестве примера создадим оверрайд для сервиса SSH на базе настроек по умолчанию:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
Откроем скопированный файл в текстовом редакторе:
sudoedit /etc/firewalld/services/ssh.xml
Внесём правки, добавив возможность использования порта 2222/tcp:
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) is a protocol.</description> <port protocol="tcp" port="22"/> <port protocol="tcp" port="2222"/> </service>
Перезагрузим настройки Firewalld для вступления изменений в силу:
sudo firewall-cmd --reload
Как правильно импортировать подключение из OVPN файла?¶
Воспользуемся консольной утилитой nmcli для быстрого импортирования подключения из OVPN файла:
nmcli connection import file /path/to/foo-bar.ovpn type openvpn
Здесь /path/to/foo-bar.ovpn – путь к OVPN файлу на диске.
Встроенные сертификаты и ключи будут автоматически импортированы и сохранены в каталоге ~/.cert/nm-openvpn
, что не вызовет проблем с SELinux.
Как проверить открыт ли порт на удалённом сервере?¶
Воспользуемся утилитой nc для непосредственного осуществления проверки без полного сканирования портов.
Проверим доступность сервиса на IP 1.2.3.4 с номером порта 443/tcp:
Проверим доступность сервиса на IP 1.2.3.4 с номером порта 27015/udp:
nc -z -v -u 1.2.3.4 27015
Как открыть доступ к локальной сети через WireGuard?¶
Для того, чтобы через VPN была также доступна локальная сеть, внесём ряд изменений в файлы конфигурации сервера и клиента WireGuard.
Отредактируем файл /etc/wireguard/wg0.conf
сервера:
sudoedit /etc/wireguard/wg0.conf
В директиве AllowedIPs
через запятую добавим адрес локальной подсети клиента, например 192.168.1.0/24:
[Peer] PublicKey = CLIENT_PUBLIC_KEY AllowedIPs = 10.9.0.2/32, 192.168.1.0/24
Перезапустим сервис WireGuard на сервере:
sudo systemctl restart wg-quick@wg0.service
На клиенте, к локальной сети которого требуется получить доступ, разрешим перенаправление трафика и включим маскарадинг в Firewalld:
sudo sysctl -w net.ipv4.conf.all.forwarding=1 sudo sysctl -w net.ipv6.conf.all.forwarding=1 sudo firewall-cmd --zone=public --add-masquerade sudo firewall-cmd --zone public --add-forward
Отредактируем файл конфигурации данного клиента, дописав в AllowedIPs
подсеть через запятую (однако если там уже указано 0.0.0.0/0, то ничего более делать не требуется).
Проверим доступность компьютеров из локальной сети со стороны других клиентов WireGuard:
Здесь вместо 192.168.1.2 укажем реально существующий адрес в локальной сети.
Если всё работает корректно, сделаем изменения на клиенте с LAN постоянными:
sudo bash -c "echo -e "net.ipv4.conf.all.forwarding=1nnet.ipv6.conf.all.forwarding=1" > /etc/sysctl.d/99-wireguard.conf" sudo firewall-cmd --zone=public --add-masquerade --permanent sudo firewall-cmd --permanent --zone public --add-forward
Перезагрузим настройки Firewalld:
sudo firewall-cmd --reload
В chroot окружении не работает DNS. Как исправить?¶
Из-за использования systemd-resolved в chroot-окружениях Fedora не работает преобразование имён DNS, т.е. фактически отсутствует доступ к Интернету.
Для решения этой проблемы настроим классическую временную конфигурацию:
mv /etc/resolv.conf /etc/resolv.conf.orig echo "nameserver 8.8.8.8" > /etc/resolv.conf chown root:root /etc/resolv.conf chmod 0644 /etc/resolv.conf
С этого момента DNS начнёт работать корректно.
По окончании работы обязательно восстановим предыдущие настройки:
rm -f /etc/resolv.conf mv /etc/resolv.conf.orig /etc/resolv.conf
Как установить и запустить собственный DNS-сервер?¶
См. здесь.
Почему система обращается к fedoraproject.org каждые 5 минут?¶
С настройками по умолчанию, предустановленными пакетом NetworkManager-config-connectivity-fedora, NetworkManager проверяет доступность Интернета по таймеру каждые 5 минут посредством обращения к файлу hotspot.txt по протоколу HTTP и анализируя ответ сервера.
Подключение считается полнофункциональным после получения строки OK. При любом другом ответе – ограниченным.
С целью сохранения приватности возможно отключить это поведение.
Как отключить автоматические запросы с целью проверки соединения?¶
Для отключения автоматических запросов к домену fedoraproject.org, удалим пакет NetworkManager-config-connectivity-fedora:
sudo dnf remove NetworkManager-config-connectivity-fedora
Перезапустим NetworkManager:
sudo systemctl restart NetworkManager.service
Samba-доступ к каталогу в Fedora Linux
Дмитрий Корнев
На работе сетевой МФУ. Сканируя документы он складывает готовые файлы в настроенный заранее каталог. Делать это он может по протоколу SMB или FTP. Я уже писал про настройку Samba в Ubuntu. Теперь про Fedora. Здесь есть свои особенности.
Установка и активация Samba:
Как и в предыдущей статье я создаю для доступа специального пользователя и создаю сам каталог для складирования. Каталог размещаю за пределами домашнего каталога этого пользователя, хотя может правильнее было бы в нём. В общем не принципиально, делайте, как удобнее.
Создаём пользователя share-user без домашнего каталога:
Задаём пароль этому пользователю:
Пользователя и пароль также внесём в базу данных Samba:
Создаём каталог, например, /mnt/share , обязательно от имени и группы этого пользователя.
Лучше сразу добавить своего обычного пользователя в группу share-user, чтобы проще было потом работать с файлами, для применения изменений нужно перезайти или перезапустить компьютер:
Настраиваем SELinux, иначе каталог будет недоступен для записи:
Пример конфига /etc/samba/smb.conf :
Группу workgroup укажите в соответствии со своей.
Параметр server min protocol = NT1 лучше не ставить, если и без него у вас будет работать. Дело в том, что есть разные версии протокола SMB. Часто бывает, что даже не сильно старые МФУ не поддерживают новые версии протокола. Данным параметром мы разрешаем подключение с использованием SMB v1.
Перезапуск Samba для применения изменений:
Стоит попробовать подключиться. Можно прямо со своего же компьютера, через программу «Файлы». Ссылка для подключения имеет вид smb://pc-name/share . При этом вам надо будет указать пользователя share-user и его пароль. Если подключение будет успешным, обязательно проверьте возможность записи в каталоге. Просто создайте, например, пустой каталог. Все ОК? Тогда можно добавлять данные SMB-доступа в МФУ.
Дополнительную информацию можно пискать здесь.
Источник
Как смонтировать сетевую папку 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 запишите следующее:
Источник
Общая папка с аутентификацией средствами Fedora
Среда, 01 Октябрь 2014 00:00
В дружном коллективе, в котором я имею честь трудиться, потребовалось создать небольшой файлообменник с аутентификацией пользователей. Было решено организовать общую папку с ограниченный доступом на сервере, работающем под Linux Fedora 21. Все шаги тщательно задокументированы и могут быть повторены на дистрибутивах Linux: Red Hat Enterprise Linux 7.0, Fedora 16 и выше, Centos 7.0.
В этой статье мы рассмотрим процесс создания папки с ограниченным доступом, для входа в которую требуется аутентификация пользователя (создание простого файлового севера я уже описывал ранее) .
1.Установка и настройка Samba.
Потребуется установка Samba для создания файлового сервера.
# строка 66: добавим следующее:
# строка 90: измените стандартную рабочую группу Windows
# строка 96: Измените на ваш текущий IP адрес, например:
# строка 98: Изменим:
# в конце добавим:
# любое название по вашему выбору
# гостевым пользователям запрещён вход
# разрешить доступ только безопасной группе
# добавим пользователя в Samba
Рассмотримс пособдобавления общей папки с ограниченным доступом.
2. Откройте мой компьютер, далее выберите »Подключить сетевой диск».
3.Задайте путь к папке в поле «Папка» и нажмите «Готово», чтобы открыть папку.
4.Для входа в паку требуется аутентификация, введём имя пользователя и пароль, который мы установили в Samba.
5.Теперь вы можете обращаться к общей папке с ограниченным доступом.
4. Требуется аутентификация, потребуется ввести имя пользователя и пароль, который мы установили в Samba.
Источник
Samba allows for Windows and other clients to connect to file share directories on Linux hosts. It implements the server message block (SMB) protocol. This guide covers creating a shared file location on a Fedora machine that can be accessed by other computers on the local network.
Install and enable Samba
The following commands install Samba and set it to run via systemctl . This also sets the firewall to allow access to Samba from other computers.
Sharing a directory inside /home
In this example you will share a directory inside your home directory, accessible only by your user.
Samba does not use the operating system users for authentication, so your user account must be duplicated in Samba. So if your account is jane on the host, the user jane must also be added to Samba. While the usernames must match, the passwords can be different.
Create a user called jane in Samba:
Create a directory to be the share for jane, and set the correct SELinux context:
Samba configuration lives in the /etc/samba/smb.conf file. Adding the following section at the end of the file will instruct Samba to set up a share for jane called «share» at the /home/jane/share directory just created.
Restart Samba for the changes to take effect:
Sharing a directory for many users
In this example, you will share a directory (outside your home directory) and create a group of users with the ability to read and write to the share.
Remember that a Samba user must also be a system user, in order to respect filesystem permissions. This example creates a system group myfamily for two new users jack and maria .
You could create these users without a system password. This would prevent access to the system via SSH or local login.
Add jack and maria to Samba and create their passwords:
Setting up the shared folder:
Each share is described by its own section in the /etc/samba/smb.conf file. Add this section to the bottom of the file:
Explanation of the above:
valid users : only users of the group family have access rights. The @ denotes a group name.
force group = +myfamily : files and directories are created with this group, instead of the user group.
create mask = 0660 : files in the share are created with permissions to allow all group users to read and write files created by other users.
directory mask = 0770 : as before, but for directories.
Restart Samba for the changes to take effect:
Источник
Как подключить сетевой диск к Fedora 33
В большинстве случаев сетевое хранилище это просто компьютер с операционной системой, и чаще всего это Windows. Подключить сетевую папку к компьютеру на котором стоить Linux например Fedora, достаточно просто. Давайте попробует это сделать примере последнего дистрибутива операционной системы Fedora 33.
Интересные статьи по данной теме.
Подключение общей папки Windows к Fedora
Для начала нам нужно открыть проводник, если так можно сказать. Сделать это можно как и все остальное через «Обзор».
После чего, права в списке выбираем «Другие места» и поле «Подключиться к сервер вводим
Дальше нужно будет ввести учетные данные от сервера к которому вы подключаетесь. Если к общей папке доступ открыть для всех то вводим логин пароль от Fedora. Не забывайте отметить пункт «Запомнить навсегда». Иначе придется каждый раз вводить пароль.
После того как вы подключились к серверу на котором лежит нужная общая папка. Нужно в нее зайти.
Произойдет автоматическое монтирование диска с этой папкой.
Очень важная особенность Fedora. В отличие от других Linux систем Ubuntu, Astra, Debian и т.д, после перезагрузки данный диск не пропадет.
Мне статья очень понравилась. Здесь много полезных советов для компьютерщиков. Да ещё и с весьма чёткими картинками. Оформление статьи тоже весьма красивое.
Не всем йогурты одинаково полезли, а это значит, что не у всех настройки сразу одинаковы и при попытке установить соединение с сетевым диском «Федора» рвёт соединение, а этот момент тут не описан. Ушел искать дальше.
Что значить рвет? подключается потом отключается? может с сетью проблемы
Спасибо большое! Мне статья помогла. Вроде бы вещь простая а попробуй сам догадайся :). Еще раз Спасибо что помогаете людям!
Источник
В операционных системах Linux и UNIX общий ресурс Windows можно смонтировать в определенной точке монтирования в дереве локальных каталогов, используя cifs
параметр mount
команды.
Общая файловая система Интернета (CIFS) — это сетевой протокол обмена файлами. CIFS является формой SMB.
Установка пакетов утилит CIFS
Чтобы смонтировать общий ресурс Windows в системе Linux, сначала необходимо установить пакет утилит CIFS.
-
Установка утилит CIFS в Ubuntu и Debian:
sudo apt update
sudo apt install cifs-utils
-
Установка утилит CIFS в CentOS и Fedora:
sudo dnf install cifs-utils
Имя пакета может отличаться в разных дистрибутивах Linux.
Монтирование удаленного общего ресурса Windows аналогично монтированию обычных файловых систем.
Сначала создайте каталог, который будет служить точкой монтирования для удаленного общего ресурса Windows:
sudo mkdir /mnt/win_share
Запустите следующую команду как пользователь root или пользователь с правами sudo для монтирования общего ресурса:
sudo mount -t cifs -o username=<win_share_user> //WIN_SHARE_IP/<share_name> /mnt/win_share
Вам будет предложено ввести пароль:
Password:
В случае успеха не выводится.
Чтобы убедиться, что удаленный общий ресурс Windows успешно смонтирован, используйте команду mount
или df -h
.
После монтирования общего ресурса точка монтирования становится корневым каталогом смонтированной файловой системы. Вы можете работать с удаленными файлами, как если бы они были локальными файлами.
Пароль также можно указать в командной строке:
sudo mount -t cifs -o username=<win_share_user>,password=<win_share_password> //WIN_SHARE_IP/<share_name> /mnt/win_share
Если пользователь находится в рабочей группе или домене Windows, вы можете установить его следующим образом:
sudo mount -t cifs -o username=<win_share_user>,domain=<win_domain> //WIN_SHARE_IP/<share_name> /mnt/win_share
Для большей безопасности рекомендуется использовать файл учетных данных, который содержит имя пользователя, пароль и домен общего ресурса.
Файл учетных данных имеет следующий формат:
/etc/win-credentials
username = user
password = password
domain = domain
Файл не должен быть доступен для чтения пользователям. Чтобы установить правильные разрешения и владельца , запустите:
sudo chown root: /etc/win-credentials
sudo chmod 600 /etc/win-credentials
Чтобы использовать файл учетных данных, определите его следующим образом:
sudo mount -t cifs -o credentials=/etc/win-credentials //WIN_SHARE_IP/<share_name> /mnt/win_share
По умолчанию подключенный общий ресурс принадлежит пользователю root, а разрешения установлены на 777.
Используйте dir_mode
опцию, чтобы установить разрешение каталога и file_mode
установить разрешение файла:
sudo mount -t cifs -o credentials=/etc/win-credentials,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share
Пользователь по умолчанию и группа собственность могут быть изменены с uid
и gid
опциями:
sudo mount -t cifs -o credentials=/etc/win-credentials,uid=1000,gid=1000,dir_mode=0755,file_mode=0755 //WIN_SHARE_IP/<share_name> /mnt/win_share
Чтобы установить дополнительные параметры , добавьте их в виде списка через запятую после -o
параметра. Чтобы получить список всех опций монтирования, введите man mount
ваш терминал.
Авто монтаж
Когда общий ресурс монтируется вручную с помощью mount
команды, он не сохраняется после перезагрузки.
/etc/fstab
Файл содержит список записей , которые определяют , где , как и то , что файловая система будет смонтирована на старте системы.
Чтобы автоматически смонтировать общий ресурс Windows при запуске вашей системы Linux, определите монтирование в /etc/fstab
файле. Строка должна содержать имя хоста или IP-адрес ПК с Windows, имя общего ресурса и точку монтирования на локальном компьютере.
Откройте /etc/fstab
файл в текстовом редакторе :
sudo nano /etc/fstab
Добавьте следующую строку в файл:
/etc/fstab
# <file system> <dir> <type> <options> <dump> <pass>
//WIN_SHARE_IP/share_name /mnt/win_share cifs credentials=/etc/win-credentials,file_mode=0755,dir_mode=0755 0 0
Выполните следующую команду для монтирования общего ресурса:
sudo mount /mnt/win_share
Команда, будет читать содержание
mount /etc/fstab
и установить долю.
При следующей перезагрузке системы общий ресурс Windows будет смонтирован автоматически.
Команда umount
отсоединяет (размонтирует) смонтированную файловую систему от дерева каталогов.
Чтобы отсоединить подключенный общий ресурс Windows, используйте umount
команду с указанием либо каталога, в котором он был подключен, либо удаленного общего ресурса:
sudo umount /mnt/win_share
Если в fstab
файле CIFS есть запись в файле, удалите ее.
Команда umount
не сможет отсоединить общий ресурс, когда он используется. Чтобы узнать, какие процессы обращаются к общему ресурсу Windows, используйте fuser
команду:
fuser -m MOUNT_POINT
Найдя процессы, вы можете остановить их с помощью kill
команды и размонтировать общий ресурс.
Если у вас по-прежнему возникают проблемы с размонтированием общего ресурса, используйте параметр -l
( --lazy
), который позволяет размонтировать занятую файловую систему, как только она больше не будет занята.
sudo umount -l MOUNT_POINT
Вывод
В Linux вы можете смонтировать общий доступ к Windows, используя mount
команду с cifs
параметром.
На работе сетевой МФУ. Сканируя документы он складывает готовые файлы в настроенный заранее каталог. Делать это он может по протоколу SMB или FTP. Я уже писал про настройку Samba в Ubuntu. Теперь про Fedora. Здесь есть свои особенности.
Установка и активация Samba:
sudo dnf install samba
sudo systemctl enable smb --now
Настройка фаервола:
firewall-cmd --get-active-zones
sudo firewall-cmd --permanent --zone=FedoraWorkstation --add-service=samba
sudo firewall-cmd --reload
Как и в предыдущей статье я создаю для доступа специального пользователя и создаю сам каталог для складирования. Каталог размещаю за пределами домашнего каталога этого пользователя, хотя может правильнее было бы в нём. В общем не принципиально, делайте, как удобнее.
Создаём пользователя share-user
без домашнего каталога:
sudo useradd -d /dev/null share-user
Задаём пароль этому пользователю:
sudo passwd share-user
Пользователя и пароль также внесём в базу данных Samba:
sudo smbpasswd -a share-user
Создаём каталог, например, /mnt/share
, обязательно от имени и группы этого пользователя.
Лучше сразу добавить своего обычного пользователя в группу share-user, чтобы проще было потом работать с файлами, для применения изменений нужно перезайти или перезапустить компьютер:
sudo usermod -aG share-user имя_вашего_пользователя
Настраиваем SELinux, иначе каталог будет недоступен для записи:
sudo semanage fcontext --add --type "samba_share_t" /mnt/share
sudo restorecon -R /mnt/share
Пример конфига /etc/samba/smb.conf
:
[global]
security = user
passdb backend = tdbsam
workgroup = WORKGROUP
server min protocol = NT1
server string = MySMB
[share]
comment = MySMB Share
path = /mnt/share
valid users = @share-user
force group = share-user
create mask = 0771
directory mask = 0771
writable = yes
browseable = yes
write list = user
Группу workgroup
укажите в соответствии со своей.
Параметр server min protocol = NT1
лучше не ставить, если и без него у вас будет работать. Дело в том, что есть разные версии протокола SMB. Часто бывает, что даже не сильно старые МФУ не поддерживают новые версии протокола. Данным параметром мы разрешаем подключение с использованием SMB v1.
Перезапуск Samba для применения изменений:
sudo systemctl restart smb
Стоит попробовать подключиться. Можно прямо со своего же компьютера, через программу «Файлы». Ссылка для подключения имеет вид smb://pc-name/share
. При этом вам надо будет указать пользователя share-user
и его пароль. Если подключение будет успешным, обязательно проверьте возможность записи в каталоге. Просто создайте, например, пустой каталог. Все ОК? Тогда можно добавлять данные SMB-доступа в МФУ.
Дополнительную информацию можно пискать здесь.
Использую федорку. И мне хочется использовать именно её. Как по мне — прекрасный дистр. Практически всё, что мне нужно — работает и работает лучше (либо меньше головняка), чем в Ubuntu/Mint/Arch и прочее. Однако в этой, столь прекрасной истории как всегда есть одно НО. С федоры я не вижу шары win-тачек (использую Fedora как клиент), расположенных как и дома, так и на работе. С той же Ubuntu таких сложностей не возникало (работает после install samba из-под коробки).
Да-да, именно шары не работают в Fedora 34.
Использовал свежеустановленную федору с оффсайта с последними апдейтами, накатанными
sudo dnf update && sudo dnf upgrade -y
с перезагрузкой.
Все репы, включая проприетарные — включены.
Что сделано/установлено после:
sudo dnf install samba
(зависимости самбы типа samba-client и cifs-utils подтянулись сами или были установлены)
sudo dnf install wsdd
(на всякий)
sudo dnf install nmap
(полезен для тестов)
sudo systemctl enable smb.service
sudo firewall-cmd –add-service=samba –permanent
sudo gedit /etc/samba/smb.conf
в нём менялось только global секция:
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
map to guest = Bad user
server min protocol = NT1
client min protocol = NT1
min protocol = NT1
Пробовал добавлять client ntlmv2 auth = yes, netbios name прописать, wins (false/true), но лыжи не едут.
sudo systemctl restart smb.service –now
Готовил selinux
sudo setsebool -P virt_use_samba=1 use_samba_home_dirs=1 samba_share_fusefs=1 samba_export_all_rw=1 samba_export_all_ro=1 samba_enable_home_dirs=1 allow_smbd_anon_write=1
Вывод selinux
getsebool -a | grep -E «smb|samba»
samba_create_home_dirs –> off
samba_domain_controller –> off
samba_enable_home_dirs –> on
samba_export_all_ro –> on
samba_export_all_rw –> on
samba_load_libgfapi –> off
samba_portmapper –> off
samba_run_unconfined –> off
samba_share_fusefs –> on
samba_share_nfs –> off
sanlock_use_samba –> off
smbd_anon_write –> on
tmpreaper_use_samba –> off
use_samba_home_dirs –> on
virt_use_samba –> on
даже отключать пытался selinux, а толку 0
sudo nmap -sS -sU -T4 192.168.1.34
выхлоп
Nmap scan report for 192.168.1.34
Host is up (0.0017s latency).
Not shown: 999 open|filtered ports, 996 filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
5357/tcp open wsdapi
137/udp open netbios-ns
И перезапускался и перезагружал самбу (100500 раз), и соединялся именно так (привычка):
nautilus -> другие места -> подключение к серверу (внизу)
smb://локальный_айпишник_тачки
Сношаюсь с гуглом уже неделю по несколько часов каждый день.
На убунту обратно переходить не хочу.
Windows не предлагать, шары тестил, там всё работает.
Парольной защиты не стоит, шары включены, там всё ок.
Можно обойтись и без шар, но по работе надо цеплять файлы с win-тачек, работать с этими файлами, а работать предпочитаю в Линуксе со своего ноута и обратно закидывать на win-шары.
крик помощи
I’m trying to keep Windows off the internet and use Fedora as a firewall to Windows internet connectivity. The pc is connected to a router. I have the internet working in Fedora. I need to route Windows through Fedora so it can access the internet.
I connected Fedora to the internet once using pcap-bridge
and then for a couple of days it wouldn’t connect with the same setup. I accidentally figured out that whenever the real ethernet device loses connectivity, colinux will not reconnect with it until the bridge is manually restarted. I also connected Windows and Fedora «once» through a TAP connection and I was able to ping
from Fedora to Windows and vice versa, I also connected via ssh
to Fedora from Windows. I’ve never had both connections working at the same time. I’m using the same setup for the TAP that once worked and no matter what instructions I follow on many of the sites I’ve been to, I always get "Destination Host Unreachable"
from both Windows and Fedora. I’ve turned off all firewalls and antivirus’ in Windows and I’ve turned off iptables
in Fedora. The router’s firewall is off. Each time I’ve changed a network configuration, I’ve restarted colinux.
I tried using eth0, eth1
‘s IP Address as the gateway in the loopback adapter.
I gave up on the TAP connection and opted to use the Microsoft Loopback Adapter
but I’m having the same problem with it.
I gave the real ethernet device (LAN) [A Bad Ip Address to block Windows from the internet]:
LAN: [This works]
IP Address 1.1.1.1
Netmask 255.0.0.0
LOOPBACK: [The problem]
I've tried 10.0.2.0-254, 10.0.0.0-254, 192.168.10,0,1,2.0-254
IP Address 192.168.2.10
Netmask 255.255.255.0
Colinux:
eth0=pcap-bridge, "LAN"
eth1=ndis-bridge, "LOOPBACK"
Fedora:
[obtained from router]
DEVICE=eth0
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
DEVICE=eth1 [The problem]
I've tried 10.0.2.0-254, 10.0.0.0-254, 192.168.10,0,1,2.0-254
IPADDR=192.168.2.20
NETMASK=255.255.255.0
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
GATEWAY=192.168.1.1
/etc/resolv.conf
search hsd1.pa.comcast.net [automatically given by router]
nameserver=192.168.1.1 [automatically given by router]
nameserver=75.75.75.75 [manually obtained from router]
nameserver=75.75.76.76 [manually obtained from router]
nameserver=10.0.2.3 [suggested by Fedora]
I’m trying to keep Windows off the internet and use Fedora as a firewall to Windows internet connectivity. The pc is connected to a router. I have the internet working in Fedora. I need to route Windows through Fedora so it can access the internet.
I connected Fedora to the internet once using pcap-bridge
and then for a couple of days it wouldn’t connect with the same setup. I accidentally figured out that whenever the real ethernet device loses connectivity, colinux will not reconnect with it until the bridge is manually restarted. I also connected Windows and Fedora «once» through a TAP connection and I was able to ping
from Fedora to Windows and vice versa, I also connected via ssh
to Fedora from Windows. I’ve never had both connections working at the same time. I’m using the same setup for the TAP that once worked and no matter what instructions I follow on many of the sites I’ve been to, I always get "Destination Host Unreachable"
from both Windows and Fedora. I’ve turned off all firewalls and antivirus’ in Windows and I’ve turned off iptables
in Fedora. The router’s firewall is off. Each time I’ve changed a network configuration, I’ve restarted colinux.
I tried using eth0, eth1
‘s IP Address as the gateway in the loopback adapter.
I gave up on the TAP connection and opted to use the Microsoft Loopback Adapter
but I’m having the same problem with it.
I gave the real ethernet device (LAN) [A Bad Ip Address to block Windows from the internet]:
LAN: [This works]
IP Address 1.1.1.1
Netmask 255.0.0.0
LOOPBACK: [The problem]
I've tried 10.0.2.0-254, 10.0.0.0-254, 192.168.10,0,1,2.0-254
IP Address 192.168.2.10
Netmask 255.255.255.0
Colinux:
eth0=pcap-bridge, "LAN"
eth1=ndis-bridge, "LOOPBACK"
Fedora:
[obtained from router]
DEVICE=eth0
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
GATEWAY=192.168.1.1
DEVICE=eth1 [The problem]
I've tried 10.0.2.0-254, 10.0.0.0-254, 192.168.10,0,1,2.0-254
IPADDR=192.168.2.20
NETMASK=255.255.255.0
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
GATEWAY=192.168.1.1
/etc/resolv.conf
search hsd1.pa.comcast.net [automatically given by router]
nameserver=192.168.1.1 [automatically given by router]
nameserver=75.75.75.75 [manually obtained from router]
nameserver=75.75.76.76 [manually obtained from router]
nameserver=10.0.2.3 [suggested by Fedora]
Что такое Samba?
Для организации доступа к файлам расположенным на 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-сервера необходимо, чтобы были запущены два демона: smbd, обеспечивающий работу службы печати и разделения файлов для клиентов Samba сервера под управление ОС Windows, и nmbd, обеспечивающий работу службы имен NetBIOS. |
Samba клиент Для доступа к сетевым ресурсам Windows из Linux необходим клиент Samba, и для того чтобы оценить доступность ресурсов Windows достаточно выполнить команду /usr/bin/smbclient -L host_name. |
Достаточно многие пользователи 1с Предприятие используют БД в файловом варианте, ну, так, уж повилось:) и поэтому для грамотного взаимодействия пользователей с базой
можно использовать сервер Samba. Что позволит ограничить доступ, или совсем его закрыть к базам 1с.
Конфигурация сервера Samba
Конфигурационный файл Samba называется smb.conf и находится в корневом каталоге /еtc или /etc/samba.
Сервис Samba считывает его каждые 60 секунд, поэтому изменения, внесенные в конфигурацию, вступают в силу без перезагрузки, но не распространяются на уже установленные соединения.
Файл конфигурации содержит четыре раздела: , , и . Открыть для редактирования файл конфигурации можно командой:
mcedit /etc/samba/smb.conf
Раздел содержит наиболее общие характеристики, которые будут применяться везде, но которые, впрочем, затем можно переопределить в секциях для отдельных ресурсов.
Некоторые параметры этого раздела имеют отношение и к настройке клиентской части Samba.
Параметры раздела
workgroup # имя_группы в сети Windows.
netbios name # netbios имя сервера в локальной сети.
server string # строка комментария, который виден в окне свойств просмотра локальной сети.
guest ok = yes # разрешение гостевого входа на сервер.
guest ok = no # гостевой вход запрещен.
guest account # аккаун, под которым разрешен гостевой вход на сервер.
security = user # доступ с аутентификацией на уровне пользователя.
security = share # вход свободный.
hosts allow # определяет клиентов, которым разрешен доступ к серверу.
interfaces # указывает в какой сети будет работать сервер.
Параметры раздела
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:
Конструкция нашего файлового сервера будет придерживаться следующей структуры:
— каталог в котором будут хранится базы 1с, с ограничением доступа по ip;
— остальные каталоги с предоставлением доступа на уровне авторизации пользователя, их может быть много, все зависит от поставленной задачи.
sudo mkdir samba # Создаем корневую папку Samba
Внутри создаем еще две и , открывает smb.conf устанавливаем в параметрах :
security = share # Пользователи не будут проходить систему авторизации.
Теперь в параметре делаем ограничение по ip:
hosts allow 10.4.8.32 10.4.8.33 # Разрешаем доступ к каталогу только 10.4.8.32 и 10.4.8.33
guest ok = yes # Разрешаем гостевой вход в каталог
Переходим к каталогу и выставляем ограничение доступа по имени пользователя и паролю:
valid user = glavbuh geo# Это – список пользователей, которым разрешен доступ к ресурсу.
username = glavbuh geo# Имя пользователя директории glavbuh.
Синтаксис измененных параметров можно проверить командой:
testparm /etc/samba/smb.conf
Остается создать пользователей glavbuh и geo задав пароль, для входа в каталог . Добавляем пользователей в Samba
smbpasswd -a
И разрешаем пользователей в Samba
smbpasswd -e
Реализация сетевых протоколов Server Message Block (SMB)
и Common Internet File System (CIFS)
. Основное предназначение — расшаривание файлов и принтеров между Linux и Windows системами.
Samba
состоит из нескольких демонов, работающих в фоновом режиме и предоставляющих сервисы и ряд инструментов командной строки для взаимодействия со службами Windows:
- smbd
— демон, являющийся SMB-сервером файловых служб и служб печати; - nmbd
— демон, предоставляющий службы имен NetBIOS; - smblient
— утилита предоставляет доступ из командной строки к ресурсам SMB. Она также позволяет получить списки общих ресурсов на удаленных серверах и просматривать сетевое окружение; - smb.conf
— конфигурационный файл, содержащий настройки для всех инструментов Samba;
Список портов, используемых Samba
- share
— этот режим безопасности эмулирует метод аутентификации, используемый операционными системами Windows 9x/Windows Me. В этом режиме имена пользователей игнорируются, а пароли назначаются общим ресурсам. В этом режиме Samba пытается использовать предоставленный клиентом пароль, которым могут пользоваться разные пользователи. - user
* — этот режим безопасности установлен по умолчанию и использует для аутентификации имя пользователя и пароль, как это обычно делается в Linux. В большинстве случаев в современных операционных системах пароли хранятся в зашифрованной базе данных, которую использует только Samba. - server
— этот режим безопасности используется тогда, когда необходимо, чтобы Samba выполняла аутентификацию, обращаясь к другому серверу. Для клиентов этот режим выглядит так же, как аутентификация на уровне пользователя (режим user), но фактически для выполнения аутентификации Samba обращается к серверу, указанному в параметре password server. - domain
— используя этот режим безопасности, вы можете полностью присоединиться к домену Windows; для клиентов это выглядит так же, как аутентификация на уровне пользователя. В отличие от аутентификации на уровне сервера, доменная аутентификация использует более защищенный обмен паролями на уровне домена. Для полного присоединения к домену требуется выполнить дополнительные команды в системе Samba и, возможно, на контроллере домена. - ads
— этот режим безопасности похож на метод аутентификации в домене, но требует наличия контроллера домена Active Directory Domain Services.
Полный список параметров Samba
есть в manpages .
Выше был приведен пример с доступом для директории с общим доступом. Рассмотрим еще пример с приватной директорией, к которой доступ только по логину и паролю.
Создадим группу и добавим в нее пользователя
Sudo groupadd smbgrp
sudo usermod -a -G smbgrp proft
Создадим директорию для пользователя и установим права
Sudo mkdir -p /srv/samba/proft
sudo chown -R proft:smbgrp /srv/samba/proft
sudo chmod -R 0770 /srv/samba/proft
Создадим samba-пользователя
Sudo smbpasswd -a proft
Добавим в /etc/samba/smb.conf новый ресурс
path = /srv/samba/proft
valid users = @smbgrp
guest ok = no
writable = yes
browsable = yes
Перезапустим сервер
Sudo systemctl restart smbd
Пример настройки ресурса в котором есть симлинк
на папку пользователя (/srv/samba/media/video
» /home/proft/video
)
path = /srv/samba/media
guest ok = yes
read only = yes
browsable = yes
force user = proft
Настройка клиента
Просмотр общих ресурсов компьютера
Smbclient -L 192.168.24.101 -U%
Еще один способ подключения для анонимного пользователя с командной строкой
Smbclient -U nobody //192.168.24.101/public
ls
Если на сервере настроен более высокий уровень безопасности, то может потребоваться передать имя пользователя или домена с помощью параметров -W и -U соответственно.
Smbclient -L 192.168.24.101 -U proft -W WORKGROUP
Монтирование samba-ресурса
# создание точки монтирования
mkdir -p ~/shares/public
# монтирование ресурса
# для анонимного пользователя nobody
mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=nobody,password=,workgroup=WORKGROUP,ip=192.168.24.101,utf8
# для пользователя proft
mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,password=1,workgroup=WORKGROUP,ip=192.168.24.101,utf8
Еще лучше пароли хранить в отдельном файле
# sudo vim /etc/samba/sambacreds
username=proft
password=1
username=noboy
password=
Выставим права доступа 0600
Sudo chmod 0600 /etc/samba/sambacreds
Новая строка для монтирования
Mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101
И пример для /etc/fstab
//192.168.24.101/public /home/proft/shares/public cifs noauto,username=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101 0 0
Открыть ресурс в файловом менеджере Nautilus/Nemo/etc можно по такому пути smb://192.268.24.101
.
Если Nemo пишет Nemo cannot handle «smb» locations.
значит не хватает пакета gvfs-smb
.
Доступ к серверу с Windows и Android клиента
Под Windows узнать рабочую группу с консоли можно с помощью
Net config workstation
Открыть ресурсы на удаленной машине можно набрав в строке Explorer (Проводник) или в Run (Start — Run) UNC-адрес: 192.168.24.101
.
Под Android подключится к серверу можно с помощью ES File Explorer
, на вкладке Network добавляем сервер, просто по IP (без указания схемы, smb). После чего можно открывать расшаренные ресурсы. Для статистики: HDRIP-фильм идет без подтормаживания.
Дополнительное чтиво
Основной файл настройки Samba — /etc/samba/smb.conf. Изначальный файл конфигурации имеет значительное количество комментариев для документирования различных директив настройки.
Не все возможные опции включены в файле настроек по умолчанию. Смотрите руководство man smb.conf
или Сборник ЧаВо по Samba для уточнения деталей.
1. Сначала измените следующие пары ключ/значение в секции
файла /etc/samba/smb.conf:
Workgroup = EXAMPLE
…
security = user
Параметр security
находится значительно ниже в секции
и по умолчанию закомментирован. Также замените EXAMPLE
на что-то более соответствующее вашему окружению.
2. Создайте новую секцию в конце файла или раскомментируйте один из примеров для каталога, который нужно настроить на общий доступ:
comment = Ubuntu File Server Share
path = /srv/samba/share
browsable = yes
guest ok = yes
read only = no
create mask = 0755
comment
: короткое описание разделяемого ресурса. Используется для вашего удобства.
path
: путь до разделяемого каталога.
Этот пример использует /srv/samba/sharename поскольку, в соответствии со стандартом иерархии файловых систем (FHS), каталог /srv — это место, где должны находится все данные, относящиеся к данному сайту. Технически разделяемый ресурс Samba может быть размещен в любом месте файловой системы, где позволяют файловые ограничения доступа, но следование стандартам рекомендуется.
browsable
: позволяет клиентам Windows просматривать содержимое разделяемого каталога с помощью проводника Windows.
guest ok
: позволяет клиентам подключаться к разделяемому ресурсу без указания пароля.
read only
: определяет доступность ресурса только на чтение или с привилегиями на запись. Привилегии на запись доступны только при указании no
, как показано в данном примере. Если значение yes
, то доступ к ресурсу будет только на чтение.
create mask
: определяет какие права доступа будут установлены для создаваемых новых файлов.
3. Теперь, поскольку Samba настроена, требуется создать каталог и установить на него права доступа. Введите в терминале:
Sudo mkdir -p /srv/samba/share
sudo chown nobody.nogroup /srv/samba/share/
параметр -p
говорит mkdir создать полное дерево каталога, если оно не существует.
4. Наконец, перезапустите сервисы samba для применения новых настроек:
Sudo restart smbd
sudo restart nmbd
Теперь вы можете находить Ubuntu файл сервер с помощью клиента Windows и просматривать его разделяемые каталоги. Если ваш клиент не показывает ваши разделяемые ресурсы автоматически, попробуйте обратиться к вашему серверу по его IP адресу, например, \192.168.1.1, из окна проводника Windows. Для проверки, что все работает, попробуйте создать каталог внутри вашего разделяемого ресурса из Windows.
Для создания дополнительных разделяемых ресурсов создайте новую секцию в /etc/samba/smb.conf и перезапустите Samba. Просто убедитесь, что разделяемый каталог создан и у него корректные права доступа.
Разделяемый ресурс «»
и путь /srv/samba/share
— это просто примеры. Установите название ресурса и имя каталога в соответствии с вашим окружением. Хорошей идеей является использование в качестве названия ресурса имени его каталога в файловой системе. Другими словами ресурс можно указать как для каталога /srv/samba/qa.
SAMBA представляет собой комплект серверного и клиентского программного обеспечения для осуществления связи UNIX-машин с сетями Microsoft™ и LanManager, которые сами по себе представляют собой подклассы сетей SMB.
Исходно сети SMB были разработаны фирмой IBM™, базировались на протоколе NetBIOS, предназначились прежде всего для сетей Token Ring и были в полной мере реализованы в OS/2 Warp LanServer. Позднее в Windows 95 этот протокол был заменен на NetBEUI (несколько упрощенная версия NetBIOS).
Чуть ранее в OS/2 Warp и NT 3.5 была реализована более удобная для сложных гетерогенных сетей реализация, работающая поверх TCP/IP — “NetBIOS over TCP/IP”. Ввиду явных преимуществ данного подхода он используется и поныне. Когда где-либо в Windows вы организовываете работу с сетевыми разделяемыми ресурсами по TCP/IP, то на самом деле используется “NetBIOS over TCP/IP” (о чем, например, в Win95 в свойствах TCP/IP в закладке NetBIOS есть соответствующая отметка).
Samba также использует протокол “NetBIOS over TCP/IP”, что позволяет ей успешно взаимодействовать с такими реализациями SMB, как входящие в OS/2 3-4, Windows 9X-ME, NT3.5-4/2000/XP, UNIX-системами с Samba и, возможно, другими подобными. Менее очевидно то, что Samba не может работать без использования TCP/IP (на NetBIOS и NetBEUI). Об этом не стоит забывать при проектировании сетей.
Итак, для работы в сетях SMB необходимы:
клиент;
сервер;
средства администрирования.
Все это есть в пакетах samba-client, samba-client-cups, samba-common, samba, samba-swat, входящих в состав дистрибутива.
При использовании SMB доступны следующие ресурсы:
сетевые диски;
прямые пути к дискам;
принтеры;
доменная авторизация и управление.
Краткий обзор каталогов и файлов
Все файлы конфигурации и авторизации Samba расположены в каталоге /etc/samba и его подкаталогах. Рассмотрим их несколько подробнее.
MACHINE.SID
системный идентификатор машины, формируется автоматически при старте сервера и предназначен для идентификации компьютера в домене сети Microsoft™;
codepages/
lmhosts
то же, что и /etc/hosts, но предназначен для преобразования IP NetBIOS. Как правило содержит только одну запись:
127.0.0.1 localhost
но можно считать удачной идеей заносить туда хосты из других подсетей (когда по ряду причин невозможно надежно провести преобразование IP -NetBIOS ни широковещательными запросами, ни с использованием WINS) или наоборот — ключевые сервера собственного домена;
secrets.tdb
ключевой файл для идентификации машины в домене сети Microsoft™. С точки зрения безопасности имеет ту же ценность, что и файлы /etc/tcb/*/shadow — а потому права доступа должны быть root.root 0600;
основной конфигурационный файл Samba. Он нужен не только серверной части, но и всем остальным компонентам этой системы;
smbpasswd
аналог /etc/passwd и /etc/tcb/*/shadow — файл пользователей сервера Samba с паролями. С точки зрения безопасности имеет ту же ценность, что и /etc/tcb/*/shadow — а потому права доступа должны быть root.root 0600. Соответствие пользователей Samba и системных производится на основе общего UID; данный файл используется Samba при отсутствии данных о пользователе на PDC или при отсутствии самого PDC;
smbusers
файл соответствий имен сетевых и локальных пользователей SMB; это удобный метод для организации административных и гостевых входов на сервер. Соответствие пользователей Samba и системных производится на основе символьных имен;
/var/log/samba/*
лог-файлы серверной части Samba. Из них log.smbd, log.nmbd, log.winbind — журналы соответствующих процессов, а все прочие — логи взаимодействия сервера с отдельными клиентскими хостами в формате именования по умолчанию log.. При превышении заданного в smb.conf предела производится ротация логов и формируются файлы *.old;
/var/spool/samba
каталог динамического спулинга печати сервера Samba. На не сильно загруженных серверах печати он обычно пуст; наличие там множества файлов в то время, когда ни один из клиентов не печатает — явный признак сбоев сервера печати;
/var/cache/samba/*
файлы (как правило, двоичные базы данных), формируемые в процессе работы различных компонентов Samba. Наиболее примечательны:
browse.dat и wins.dat
текстовые файлы, их названия говорят сами за себя;
winbindd*.tdb
базы данных доменных пользователей, формируемых winbind (см. “Использование winbind”). Время от времени их необходимо архивировать: если при апгрейде, “переезде” или переустановке сервера winbind сгенерирует эти файлы с нуля, то соответствия системных и доменных символьных и числовых имен изменятся и права доступа на восстановленные из архива файлы окажутся заведомо перепутанными. Поэтому настоятельно рекомендуется архивировать файлы /var/cache/samba/winbindd*.tdb;
/var/lib/samba/*
служебные каталоги для администратора сервера.
Список выполняемых файлов Samba можно получить командой:
$ rpm -ql `rpm -qa | grep samba` | grep bin/
и подробно ознакомиться с каждым, прочитав соответствующие разделы документации.
Здесь же мы остановимся лишь на самых важных и наиболее часто используемых компонентах.
1. серверные компоненты:
/usr/sbin/nmbd
сервер преобразования имен и адресов;
/usr/sbin/smbd
файловый сервер;
/usr/sbin/winbindd
сервер импорта пользователей и групп с PDC;
/usr/sbin/swat
средство конфигурирования Samba с web-интерфейсом;
/etc/init.d/smb и /etc/init.d/winbind
управляющие скрипты инициализации сервисов.
Следует отметить, что у скрипта /etc/init.d/smb есть два режима рестарта — restart и reload, которые радикально отличаются следующими особенностями:
restart
производит полный рестарт процессов smbd и nmbd со сбросом текущих соединений. Как правило, клиенты сами производят автоматический реконнект к ресурсам, однако если в момент рестарта были открыты файлы, то возможны проблемы с клиентскими приложениями (например, MS Office и 1C);
reload
заставляет smbd и nmbd только лишь перечитывать файлы конфигурации без рестарта и сброса соединений. При этом старые соединения продолжают существовать по старым правилам, а ко всем новым соединениям будут применены уже новые правила на основании файлов конфигурации.
2. клиентские компоненты:
/usr/bin/smbclient
интерактивное приложение для просмотра сетевых ресурсов;
/sbin/mount.smb, /sbin/mount.smbfs, /usr/bin/smbumount, /usr/sbin/smbmnt, /usr/bin/smbmount
средства монтирования/размонтирования сетевых файловых систем.
3. утилиты:
/usr/bin/smbpasswd
управление пользователями и подключением к домену;
/usr/bin/wbinfo
отображение списка пользователей, импортированных winbindd;
/usr/bin/testparm
проверка синтаксиса конфигурационных файлов;
/usr/bin/smbstatus
отображение статуса процессов smbd и nmbd;
/usr/bin/nmblookup
программа разрешения имен WINS (аналог nslookup для DNS).
Настройка
В большинстве случаев настройка Samba заключается в редактировании основного конфигурационного файла /etc/samba/smb.conf и управлении пользователями с помощью smbpasswd. Если это непривычно — попробуйте использовать web-интерфейс SWAT (Samba Web Administration Tool); для этого установите пакет samba-swat и откройте URL http://localhost:901/ в браузере.
Обычный сервер
Под таковым мы понимаем компьютер, предоставляющий в сеть файловые ресурсы. Фактически это простейший независимый файловый сервер, имеющий собственную базу авторизации пользователей.
Для того, что бы создать такой сервер, необходимо лишь немного подправить стандартный конфигурационный файл smb.conf (подставить требуемые имя рабочей группы и имена ресурсов) и создать учетные записи пользователей, как описано ниже, а также учесть рекомендации по безопасности, изложенные в конце статьи.
Вот основные записи в smb.conf, которые создадут нам “обычный сервер”.
# Секция определяет общие настройки серверной части Samba в
# целом для всех ресурсов.
# Имя рабочей группы OFFICE
workgroup = OFFICE
# Уровень определения прав доступа на уровне пользователей
# Приоритет данного сервера среди других компьютеров рабочей группы:
# определяет, кто именно будет главной машиной, отвечающей за
# отображение ресурсов сети. Для сравнения, у Win9X os level = 34, а
# у NT4 os level = 64.
# Очевидно, что раз нет домена — нет и мастера.
domain master = no
# Не стоит становиться сервером паролей для окрестных машин. Так что
# если к Вам прибежал разьяренный администратор соседнего NT-сервера с
# жалобами что его не пускают на его собственный сервер — поставьте
# domain logons = no
domain logons = no
# Обычно в простейшей сети WINS не нужен, мы его отключаем и у себя то
wins support = no
Ну а теперь надо определить, какие именно каталоги мы предоставим в сеть. Для каждого ресурса существует отдельная секция.
Самый простейший вариант для обычных ресурсов — обычный каталог с именем public :
# имя ресурса, видимое в сети
comment = Public Stuff
# путь к каталогу ресурса
path = /home/samba/public
# отметка о доступе на чтение всем авторизованным пользователям (в том
# числе и гостевым, если они определены)
# запрещение работы на запись всем пользователям
# разрешение работы на запись всем пользователям, входящим в системную
# группу staff
write list = @staff
Подобным образом можно создать различные сетевые ресурсы сервера с различными правами доступа; за более подробной справкой по директивам и их синтаксису обратитесь к справочному руководству.
Поскольку Samba исполняется не в chroot, внутри ресурсов можно использовать любые символические ссылки на расположенные локально и в сети (NFS, SMB, Coda и т.д.) файловые объекты, что очень удобно в плане администрирования системы.
Особые ресурсы — например, домашние каталоги пользователей:
# имя ресурса, которое автоматически будет заменено именем
# домашнего каталога пользователя, под которым подключился клиент
# и именно название его домашнего каталога будет отображено в сети
# как имя ресурса.
# Для получения доступа к этому ресурсу клиент должен предоставить
# серверу соответствующие имя и пароль, все прочие пользователи к
# этому ресурсу доступа не имеют вовсе.
# комментарий, видимый в сети как комментарий к ресурсу
comment = Home Directories
# признак невидимости — данный ресурс виден в сети только тому
# пользователю,который является его владельцем. К этому
# ресурсу можно обратиться непосредственно задав его имя, но в
# браузинге сети он будет виден только владельцу.
# Разрешение на запись.
writable = yes
Принтеры:
# имя ресурса, которое будет видно в сети. Кроме него, в сети будут
# также видны и локальные принтеры под теми же именами, что и в
# системе по команде lpq.
# комментарий, который игнорируется.
comment = All Printers
# Путь к каталогу, в котором располагается спул принтеров,
# предоставляемых в сеть через Samba
path = /var/spool/samba
# невидимость ресурса в браузинге, он подменяется системным
# ресурсом.
# разрешение на печать для гостевого захода.
# запрещение на запись, поскольку в спул пишет сама Samba, а не
# пользователь.
# признак того, что это именно принтер, а не файловый ресурс
# маска для создания файлов заданий на печать
create mode = 0700
# Команды, выполняемые Samba для того, что бы напечатать документ.
# использование драйвера клиента, применяется для не-UNIX
# клиентов.
print command = lpr-cups -P %p -o raw %s -r
# Использование драйвера CUPS на стороне сервера (на стороне
# клиентов используется generic PostScript драйвер).
; print command = lpr-cups -P %p %s
# Следующие команды являются стандартными при установке printing=cups,
# их можно изменить в случае необходимости.
lpq command = lpq -P %p
lprm command = cancel %p-%j
Сервер в составе существующего домена NT
Подключим вновь созданную машину Samba с именем COMP к существующему домену DOM, администратором которого является пользователь Administrator и PDC этого домена реализован на другом компьютере.
Первым делом необходимо убедиться, что машины с таким же именем, как и та, которую мы собираемся подключить, в домене еще нет. В противном случае эту машину необходимо удалить из состава домена средствами самого PDC или выбрать другое имя.
На машине COMP в /etc/samba/smb.conf необходимо внести следующие изменения:
workgroup = DOM
netbios name = COMP
security = domain
password server = *
allow trusted domains = yes
nt acl support = yes
После чего необходимо остановить Samba-сервер, если он работает, командой service smb stop.
Теперь необходимо послать запрос на PDC с целью авторизации нового члена домена с помощью следующей команды:
$ smbpasswd -j DOM -r DOMPDC -U Administrator
и в ответ на запрос ввести пароль пользователя Administrator — тот самый, с которым этот пользователь зарегистрирован в домене.
Если получено сообщение:
Joined domain DOM.
все работает; иначе в smb.conf надо написать:
log level = 4
повторить последнюю команду и по подробным логам разбираться, что не так. При таком уровне log level в log.smbd содержится подробный отчет об обмене с PDC. Вполне возможно, что были допущены ошибки в написании имен или ошибочно введен пароль; также возможны какие-либо неполадки на стороне PDC.
С этого момента, когда к Samba обратился пользователь “user123” с паролем “passw”, она:
сначала ищет его в /etc/samba/smbpasswd, если пароль и имя совпадают — пускает, иначе отказывает в авторизации или считает гостем (в зависимости от настройки);
если такого имени в упомянутом файле нет — смотрит в /etc/passwd (проверив соответствия через файл /etc/samba/smbusers) и
если такой пользователь есть — спрашивает PDC, числится ли за пользователем “user123” полученный пароль “passw”;
если это так — пускает, иначе отказывает в авторизации либо переключает на гостевой заход, в соответствии с настройкой.
Обычно при работе в домене на рядовых рабочих станциях /etc/samba/smbpasswd должен быть абсолютно пустым либо содержать только административные учетные записи, с доменом никак не связанные.
Данная логика работы применима только в том случае, если не используется winbind. Для того, чтобы доменные пользователи автоматически оказывались в /etc/passwd при первом же удачном обращении (правильность паролей была подтверждена PDC), в /etc/samba/smb.conf необходимо написать одну строку
add user script = /usr/sbin/useradd -d /home/domain/%u -g 600 -m
K /etc/skel_domain -s /bin/false %u
соответственно каталоги /home/domain и /etc/skel_domain, а также группа 600 должны уже существовать. Все конкретные имена и опции useradd можно менять в зависимости от конкретных применений.
По директиве add user script, которая активизируется в тех случаях, когда пользователь еще не зарегистрирован на данной машине, можно вызывать не только /usr/sbin/useradd с ключами, но и любые другие программы; если подойти с фантазией, то с помощью данной директивы можно делать очень интересные вещи.
Не стоит забывать и о безопасности — программы, запущенные при помощи add user script, будут выполняться от всемогущего в пределах системы пользователя root, а параметры их вызова частично определяются пользователем, что потенциально опасно!
Теперь можно включить сервер Samba командой: service smb start и работать в домене сети Windows на правах рядового члена домена.
Сервер как PDC домена
Для создания Primary Domain Controller (PDC) необходимо в smb.conf внести/изменить следующие записи
# Имя сервера; если данный параметр не определен,
# то он примет значение, соответствующее имени хоста.
netbios name = COOLSERVER
# Имя домена
workgroup = COOLDOMAIN
# Режим работы системы авторизации сервера.
# Разрешение на использование шифрованных паролей
encrypt passwords = yes
# Путь к локальному файлу паролей
smb passwd file = /etc/samba/smbpasswd
# Стать мастер-браузером для домена
local master = yes
# Быть PDC
domain master = yes
# Сразу при старте постараться стать мастер-браузером домена
preferred master = yes
# Быть сервером паролей домена
domain logons = yes
# Расположение профайла пользователей домена
logon path = \%LProfiles%U
# Административная группа домена, присутствие в списке
# пользователя «administrator» весьма желательно, без
# этого данный пользователь не получит административных
# прав на клиентских машинах Windows.
domain admin group = root @wheel administrator
# Быть WINS-сервером. WINS-сервер имеет смысл когда в сети более 10
# машин, работающих по протоколу SMB. Наличие такого сервера в сложных
# сетях существенно снижает широковещательный трафик.
wins support = yes
# Порядок разрешения имен NetBIOS, по аналогии с записью в
# /etc/host.conf для разрешения имен DNS. Значение wins
# имеет смысл только при наличии в сети wins-сервера,
# в противном случае оно замедлит работу.
name resolve order = wins lmhosts bcast
Также необходимо создать ресурсы для работы домена.
Ресурс netlogon необходим для работы PDC и домена в целом. Он просто должен существовать.
comment = Network Logon Service
path = /var/lib/samba/netlogon
guest ok = yes
writable = no
write list = admin, administrator
Данный ресурс необходим для создания и хранения профайлов пользователей домена:
path = /var/lib/samba/profiles
browseable = no
read only = no
create mask = 0600
directory mask = 0700
При создании пользователя домена в /var/lib/samba/profiles автоматически создается каталог с именем, идентичным имени создаваемого пользователя и принадлежащий ему (с правами 0700). В этом каталоге будут храниться личные настройки пользователя.
Для того, чтобы включить клиентскую машину в домен, необходимо произвести следующие действия.
Прежде всего необходимо создать локального пользователя системы с именем, соответствующим NetBIOS-name подключаемой к домену машины. К имени на конце добавляется символ “$”. Для добавления машины с именем machine_name необходимо от имени пользователя root выполнить следующие команды:
# /usr/sbin/useradd -g machines -d /dev/null -c «machine nickname» -s
/bin/false machine_name$
# passwd -l machine_name$
Теперь, когда создан пользователь (символ “$” в конце имени означает что это NetBIOS-имя компьютера, а не имя пользователя), можно добавить его в домен, выполнив от имени root команду: smbpasswd -a -m machine_name.
Теперь компьютер подключен к домену.
Работу со созданию машинного акаунта можно переложить на Samba, включив в smb.conf следующую запись:
add user script = /usr/sbin/useradd -d /dev/null -g machines -s
/bin/false -M %u
Теперь Samba будет принимать от клиентских машин запросы на включение в домен и автоматически регистрировать их аналогично NT Server.
С этого момента начинает существовать домен и PDC на базе Samba-сервера. Пользователи могут входить под своими именами и паролями с любой машины домена с сохранением настроек, а также самостоятельно менять свои пользовательские пароли без помощи администратора сети.
Учетные записи пользователей
Все учетные записи хранятся в файле /etc/samba/smbpasswd.
Учетные записи пользователей, используемые Samba делятся на две категории:
записи о компьютерах, входящих в домен;
записи о пользователях, зарегистрированных на данном сервере.
Следует учитывать, что для того, что бы создать и использовать любую учетную запись в /etc/samba/smbpasswd, предварительно необходимо создать соответствующую запись в /etc/passwd. Общее правило — для каждого пользователя в /etc/samba/smbpasswd обязательно должен существовать пользователь в /etc/passwd. Обратное утверждение неверно.
Для управления учетными записями предназначена утилита smbpasswd; полный список ее возможностей можно узнать из соответствующей man-страницы, здесь же рассмотрим наиболее частые методы использования.
Создание нового пользователя:
# smbpasswd -a
Смена пароля у существующего пользователя:
# smbpasswd
Удаление существующего пользователя:
# smbpasswd -x
Приостановление учетной записи без удаления:
# smbpasswd -d
Подключение данного компьютера к существующему домену:
# smbpasswd -j -U
Использование winbind
Сервис winbind является новым средством, предназначенным для более полной интеграции Samba в домены Windows; он появился, начиная с Samba 2.2.0. Данный сервис считывает свою конфигурацию из /etc/samba/smb.conf и динамически взаимодействует с PDC домена, автоматически синхронизируя списки пользователей и групп домена и машины Samba. Таким образом, winbind является весьма удобным средством для автоматического поддержания актуальности базы пользователей домена на рабочих станциях Samba.
Работа данного сервиса происходит без изменения содержимого каких либо авторизационных файлов в /etc и при перезагрузке машины доменные пользователи появляются в системе только после запуска winbindd. Если во время работы остановить winbindd, то доменные пользователи и группы не исчезнут из системы до перезагрузки, однако динамического обновления списков имен и паролей происходить не будет.
Для того, что бы при рестарте компьютера (или только сервиса winbindd) не нарушались соответствия внутренних UID и доменных SID, он сохраняет текущее состояние списков в файлах /var/cache/samba/winbindd*.tdb.
Для нормального функционирования winbindd в файле /etc/samba/smb.conf обязательно должны быть объявлены следующие директивы:
# Диапазон номеров локальных пользователей, который будет
# использован для динамического создания пользователей домена.
winbind uid = 10000-20000
# Диапазон номеров локальных групп пользователей, который будет
# использован для динамического создания групп пользователей
# домена.
winbind gid = 10000-20000
# Символ-разделитель, используемый для составления доменных имен
# пользователей и располагающийся между именем домена и именем
# пользователя.
winbind separator = +
# Интервал времени (в секундах) между запросами winbind к PDC
# в целях синхронизации списков пользователей и групп.
winbind cache time = 10
# Шаблон имени домашних каталогов доменных пользователей,
# автоматически присваиваемых каждому пользователю. Сами каталоги,
# однако, динамически не создаются. Вместо переменой %D подставляется
# имя домена, а вместо %U подставляется имя пользователя.
template homedir = /home/%D/%U
# Командный интерпретатор, назначаемый по умолчанию для
# пользователей, авторизованных через winbindd.
template shell = /bin/bash
Также необходимо внести изменения в файле /etc/nsswich.conf в разделы passwd и group, вписав директиву winbind — например, таким образом:
passwd: files winbind
group: files winbind
С этого момента можно использовать имена доменных пользователей в /etc/samba/smb.conf с целью разграничения доступа, в правах на файлы и каталоги, для подключения к сетевым ресурсам данного хоста со стороны других хостов.
Принт-сервер на CUPS
По умолчанию Samba сконфигурирована на использование CUPS в качестве спулера печати. Подразумевается, что CUPS уже настроен и запущен. В /etc/samba/smb.conf присутствуют следующие директивы:
printcap name = lpstat
load printers = yes
printing = cups
Также необходимо создать ресурс ; его создание и назначение директив подробно описано в разделе “Обычный сервер” в части Особые ресурсы.
Особенности локализации клиента и сервера
Для того, чтобы все компоненты Samba правильно работали с русскими именами файловых объектов и ресурсов, в /etc/samba/smb.conf необходимо добавить следующие директивы:
client code page =
$LANG = ru_RU.KOI8-R
client code page = 866
characte set = koi8-r
$LANG = ru_RU.CP1251
client code page = 866
characte set = 1251
$LANG = be_BY.CP1251
client code page = 866
character set = 1251
$LANG = uk_UA.KOI8-U
client code page = 1125
character set = koi8-u
$LANG = uk_UA.CP1251
client code page = 1125
character set = 1251U
$LANG = ru_UA.CP1251
client code page = 1125
character set = 1251U
В двух последних случаях 1251U — специальное обозначение внутри Samba для комбинации локально “1251 — удаленно 1125”. В Samba определение удаленной кодировки делается по имени локальной .
Также необходимо проследить, чтобы на тех компьютерах Windows, с которыми предполагается взаимодействие через Samba, были установлены соответствующие системные настройки локализации. В противном случае велика вероятность, что вместо кириллических символов будут отображены знаки “?” либо другие непрошенные символы.
Указанные директивы /etc/samba/smb.conf воздействуют на работу всех компонентов Samba — и серверных, и клиентских. На данный момент поддерживаются кириллические написания имен — файлов, каталогов и ресурсов.
Некоторые вопросы безопасности
Данный раздел относится в основном к серверной части Samba.
Прежде всего необходимо определить, какие интерфейсы должны прослушиваться Samba в ожидании запроса на соединение (по умолчанию прослушиваются все имеющиеся в системе).
Например, для того, чтобы ограничить прослушивание локальным хостом и первой сетевой картой, необходимо написать в /etc/samba/smb.conf:
interfaces = 127.0.0.1 eth0
bind interfaces only = Yes
Далее можно ограничить диапазоны адресов, с которых позволительно обращаться к данному серверу. Действие данных директив аналогично воздействию /etc/hosts.allow и /etc/hosts.deny на xinetd и ssh: если IP-адрес хоста не подпадает под разрешающее правило, то соединение не будет установлено вовсе. Для того, что бы ограничить доступ двумя подсетями и локальной системой, дополнительно исключив при этом один хост, можно написать:
hosts allow = 192.168.1. 192.168.2. 127.
hosts deny = 192.168.1.12
Все вышеперечисленные директивы ограничивают соединения на уровне интерфейсов и IP-адресов до какой либо авторизации. Следущие директивы управляют режимом авторизации пользователей.
Во избежание перехвата чувствительных данных при передаче их по сети открытым текстом принято шифровать пароли. Samba и все версии Windows, начиная с версии Win98, по умолчанию используют шифрование паролей. Данная директива включает его в Samba:
encrypt passwords = yes
Файл переопределений имен пользователей является весьма мощным средством управления пользовательскими акаунтами, однако при неразумном использовании это средство опасно и поэтому по умолчанию отключено. Внимательно ознакомьтесь с содержимым файла /etc/samba/smbusers, прежде чем использовать его.
; username map = /etc/samba/smbusers
Обычный клиент
Клиентские функции Samba представлены средствами просмотра сетевого окружения и монтирования файловых систем /usr/bin/smbclient и /usr/bin/smbmount соответственно. Также доступны mount.smb и mount.smbfs, являющиеся символическими ссылками на /usr/bin/smbount.
При запуске эти программы считывают текущую конфигурацию из файла /etc/samba/smb.conf и используют доменные функции в случае, если машина подключена к домену Windows.
Также файловые системы возможно монтировать системной командой mount, указав в качестве типа файловой системы smbfs, и использовать эти записи в /etc/fstab для автоматического монтирования при загрузке системы.
Например, для того что бы смонтировать в каталог /mnt/disk ресурс public с машины SMALLSERVER под именем cooluser, нужно выполнить команду: smbmount //smallserver/public /mnt/disk -o username=cooluser
Регистр написания имен компьютеров, ресурсов и пользователей роли не играет. Для того, что бы получить список Samba-ресурсов данной машины и список машин рабочей группы или домена достаточно выполнить команду: smbclient -L localhost -N
Более подробные сведения можно прочесть в man-страницах по smbclient и smbmount.
В составе дистрибутива поставляются два графических клиентских приложения — LinNeighborhood и gnomba, которые работают поверх утилит smbclient и smbmount.
По адресу http://www.public.iastate.edu/~chadspen/homepage.html можно получить весьма качественное графическое клиентское приложение xSMBrowser.
Клиент в составе существующего домена NT
Подключение происходит аналогично рассмотренному в п. “ Сервер в составе существующего домена NT ”. Далее вся работа происходит точно так же, как описано в предыдущем пункте.
Особенности использования Samba 3.0
Samba 3.0 имеет заметные отличия от более ранних версий; наиболее выдающимися из них являются улучшенная по сравнению с версией 2.2 поддержка Unicode, поддержка гораздо большего количества кодовых страниц, новая утилита администрирования net, призванная заменить smbpasswd.
В поставку входят пакеты samba3-client, samba3-client-cups, samba3-common, samba3, samba3-swat.
Задание кодовых страниц
Для задания кодировок используются следующие новые параметры smb.conf:
unix charset =
dos charset =
display charset =
где — любая кодировка, поддерживаемая iconv. Список возможных кодировок можно узнать, выполнив команду iconv -list.
Параметры client code page и character set больше не поддерживаются. Параметр unix charset указывает кодировку, в которой будут храниться файлы на диске, в которой заданы параметры в smb.conf. Наконец-то появилась возможность хранить имена файлов в UTF-8!
Параметр dos charset указывает кодировку, в которой Samba будет общаться с клиентами, не поддерживающими Unicode. Все версии Windows, начиная с 95, понимают Unicode — но все же стоит установить dos charset = cp866, что соответствует client code page = 866 в более старых версиях.
Параметр display charset указывает в какой кодировке должны выводить информацию программы, непосредственно обменивающиеся информацией с пользователем, например smbclient, net, wbinfo и другие.
Утилита net
Утилита net призвана заменить smbpasswd и обеспечивает гораздо большие возможности по получению информации о сети и управлению сетью. Формат команд утилиты очень похож на формат одноименной команды Windows NT/2000.
Основные применения команды net:
создание и удаление пользователей: net user
включение машины в домен: net ads join — Active Directory; net rpc join — NT Domain;
получение информации о домене, машине, открытых файлах, сессиях: net info, net ads status, net rpc status;
создание и удаление разделяемых ресурсов на удаленных машинах: net share;
синхронизация времени с windows-сервером: net time
Управление машиной с Samba из Microsoft Management Console
Начиная с версии 2.2, Samba имеет возможность удаленного администрирования из MMC (Microsoft Management Console). Эта возможность полезна, когда Samba является членом NT-домена или AD. Администратор домена может создавать, удалять и изменять сетевые ресурсы на UNIX-машине с запущенной Samba.
Как сконфигурировать Samba для удаленного администрирования? Для управления ресурсами служат параметры /etc/samba/smb.conf:
add share command =
Параметр указывает скрипт, который будет вызван при попытке создания нового ресурса в MMC. Скрипту передается четыре параметра:
имя конфигурационного файла (например, /etc/samba/smb.conf);
имя создаваемого ресурса;
путь к существующей директории на диске;
Данный продукт представляет собой комплект серверного и клиентского программного обеспечения для осуществления связи UNIX-машин с сетями Microsoft и LanManager.В Винде более известно как «общий доступ к файлам и папка» или шара. Samba-сервер нужен для того чтобы открыть доступ к жесткому диску вашего Linux-сервера с других компьютеров.
Со стороны Федоры за сервис отвечает две службы nmbd и smbd(есть так же еще служба winbindd, но без нее все нормально работает, она требуется для работы сервера в домене).
- SMBD
соответственно демон сервера samba - NMBD
демон NetBios которая отвечает за резолв имен хостов, а так же за то, чтобы компьютер можно было найти в сетевом окружении, если её не запустить или настроить неверно — компьютер будет виден только по ip-шнику. - WINBIND
Данный сервис является новым средством, предназначенным для более полной интеграции Samba в домены Windows; он появился, начиная с Samba 2.2.0. Данный сервис считывает свою конфигурацию из /etc/samba/smb.conf и динамически взаимодействует с PDC домена, автоматически синхронизируя списки пользователей и групп домена и машины Samba. Таким образом, winbind является весьма удобным средством для автоматического поддержания актуальности базы пользователей домена на рабочих станциях Samba.
Для работы в сетях SMB необходимы:
- клиент
- сервер
- средства администрирования
При использовании SMB доступны следующие ресурсы:
- сетевые диски
- прямые пути к дискам
- принтеры
- доменная авторизация и управление
Установка необходимых пакетов
Введите команду:
Su -c «yum -y install samba samba-client samba-common»
Установятся оба необходимых демона: smbd и nmbd и пакет дополнительных программ.
Так же можно установить дополнительный пакет для настройки сервера в графическом режиме:
Yum -y install samba system-config-samba
После этого нужно сконфигурировать сервер:
Конфигурация сервера
В большинстве случаев настройка Samba заключается в редактировании основного конфигурационного файла /etc/samba/smb.conf и управлении пользователями с помощью smbpasswd.
Если это непривычно — попробуйте использовать web-интерфейс SWAT (Samba Web Administration Tool); для этого установите пакет samba-swat и откройте URL http://localhost:901/ в браузере.
Либо все можно настроить через обычную графику, пакет system-config-samba.
Для начала сохраним бэкап файла, чтобы если что можно было вернуться:
Cp smb.conf smb.conf.backup
Настройка через графику
Типичные конфигурации файла smb.conf
Конфиги Самба-сервера могут очень сильно отличаться по объему и выполняемым функциям. В файле может использоваться огромное количество различных директив: . Далее в статье рассматриваются только наиболее типичные конфигурации и рассматриваются входящие в них директивы.
Обычный сервер
workgroup = OFFICE
security = user
os level = 65
domain master = no
domain logons = no
wins support = no
comment = Public Stuff
path = /home/samba/public
public = yes
writable = no
write list = @staff
Секция определяет общие настройки серверной части Samba в целом для всех ресурсов.
- workgroup
: Имя рабочей группы.
- security
: Уровень определения прав доступа на уровне пользователей.
- os level
: Приоритет данного сервера среди других компьютеров рабочей группы: определяет, кто именно будет главной машиной, отвечающей за отображение ресурсов сети. Для сравнения, у Win9X os level = 34, а у NT4 os level = 64.
- domain master
:определяет мастер-сервер домен. В данном случае директива отключена.
- domain logons
: Не стоит становиться сервером паролей для окрестных машин. Так что если к Вам прибежал разьяренный администратор соседнего NT-сервера с жалобами что его не пускают на его собственный сервер — поставьте domain logons = no
- wins support
: Обычно в простейшей сети WINS не нужен, мы его отключаем и у себя то же.
- comment
: комментарий, видимый в сети как комментарий к ресурсу
- path
: путь к каталогу ресурса
- public
: отметка о доступе на чтение всем авторизованным пользователям (в том числе и гостевым, если они определены)
- writable
: запрещение работы на запись всем пользователям
- write list
= @staff: разрешение работы на запись всем пользователям, входящим в системную группу staff
Расширенный обычный конфиг
В этом конфиге использованы самые частые директивы. Вовсе не обязательно его копировать полностью, для обычного сервера этот конфиг явно излишен, а для сервера в домене — недостаточен. Тем не менее если у вас не получилось запустить сервер с обычным конфигом — разобравшись с этим примером станет понятнее как работает сервер и как можно отладить если что-то не работает.
workgroup = workgroup
server string = Samba Server Version %v
netbios name = MYSERVER
name resolve order = wins hosts lmhosts bcast
domain master = no
domain logons = no
interfaces = lo eth0 192.168.1.0/24
log level = 10 passdb:5 auth:10 winbind:10
log file = /var/log/samba/log.%m
max log size = 50
wins support = no
wins server = 192.168.1.1
wins proxy = yes
dns proxy = yes
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 IPTOS_LOWDELAY IPTOS_THROUGHPUT
local master = yes
unix charset = utf8
dos charset = cp1251
display charset = UTF8
security = user
passdb backend = tdbsam
guest account = guest
comment = Home Directories
browseable = no
writable = yes
comment = Public Stuff
path = /home/samba
browseable = yes
public = yes
writable = yes
printable = no
write list = +staff
path = /pub
browseable = yes
public = yes
writable = yes
- server string
: строка которая идет после имени компьютера при просмотре сетевого окружения(Например:MYSERVER Samba Server Version 3.3.4). - netbios name
: это Netbios имя компьютера. - name resolve order
: директива задает порядок в котором сервер будет пытаться резолвить имена хостов. - interfaces
: Директива задает интерфейсы и подсети которые будет слушать samba сервер - log level
: Уровень детализации логов, поддерживает много классов отладки. Более подробно про директиву можно прочитать на smb-conf.ru - log file
: Указывает путь к файлу логов. Сервер ведет различные файлы событий для разных пользователей или компьютеров(обратите на это внимание). - max log size
: Максимальный размер лога в килобайтах. После достижения размера файла выполняется ротейт лога. - wins support
: Параметр устанавливается в yes, если ваш nmbd в Самба является WINS сервером. Т.е. wins cервер является составляющей nmb демона. Подробнее про WINS будет чуть позже. - wins server
: адрес wins-сервера. - wins proxy
: Этот параметр управляет поведением nmbd , будет ли тот отвечат на широковещательные запросы по разрешению имен от других компьютеров. Возможно потребуется установить параметр в yes для некоторых старых клиентов. - dns proxy
:говорит Samba пытаться или нет резолвить Netbios-имена через обычный DNS nslookup. - smb passwd file
: В этом параметре указывается путь к шифрованному файлу паролей smbpasswd. По умолчанию, этот путь вкомпилирован в Самбу. - socket options
: позволяет задать параметры сокета, который будет использоваться для обслуживания клиентов. Используется для «ускорения» работы самбы. - local master
: Опция разрешает демону nmbd попытаться стать локальным мастер-браузером в этой подсети. - unix charset
: Кодировка в которой Самба взаимодействует с *nix-клиентами - dos charset
: Кодировка для взаимодействия с windows-клиентами - display charset
: Определяет набор символов, который samba будет использовать, чтобы печатать сообщения на stdout (выходной поток) и stderr (поток ошибок). - security
: Определяет режим взимодействия с клиентами, а точнее говорит клиентам нужно присылать логин и пароль для доступа к серверу. - passdb backend
: Параметр позволяет администратору выбрать механизм для хранения информации о пользователях и, возможно, о группах. По умолчанию установлен в smbpasswd. - guest account
: Когда обычные или гостевые пользователи подключаются к серверу Samba, им должен сопоставляться подходящий пользователь сервера. Выберите одного из существующих пользователей системы, который станет гостевой учётной записью Samba.
Важные директивы
Директива security
- ADS
— Сервер Samba работает как участник домена в сфере домена Active Directory (Active Directory Domain, ADS). Для этого на сервере должен быть установлени и настроен Kerberos, а Samba должна стать участником сферы ADS с помощью команды net, включённой в пакет samba-client. За дополнительной информацией обратитесь к странице man net. При выборе этого варианта Samba не становится контроллером ADS. Укажите сферу сервера Kerberos в поле Домен Kerberos (Kerberos Realm). - Домен (Domain)
— Сервер Samba проверяет пользователя, полагаясь на первичный и резервный контроллер домена Windows NT. Сервер контроллеру передаёт имя и пароль пользователя, и ждёт от него ответа. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя первичного или резервного контроллера домена.Если выбран этот вариант, параметр Шифровать пароли (Encrypted Passwords) должен иметь значение Да (Yes). - Сервер (Server)
— Сервер Samba пытается проверить комбинацию имени пользователя и пароля с помощью другого сервера Samba. Если это не удаётся, сервер пытается проверить её, используя режим проверки подлинности пользователя. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя другого сервера Samba. - Ресурс (Share)
— Пользователи Samba не должны вводить своё имя и пароль при подключении к серверу Samba. Сервер Samba не спрашивает имя и пароль, пока они не попытаются подключиться к определённому общему каталогу этого сервера. - Пользователь (User)
— (По умолчанию) Пользователи Samba должны представить правильное имя пользователя и пароль для сервера Samba. Выберите этот вариант, если вы хотите чтобы работал параметр Имя пользователя Windows (Windows Username).
Директивы WINS
WINS (англ. Windows Internet Name Service) — cлужба сопоставления NetBIOS-имён компьютеров с ip-адресами узлов.
Если сервер WINS не указан, то метод резолва через wins будет проигнорирован.
Есть wins-сервер и Wins-клиент. Когда клиент входит в сеть-он сообщает серверу свое Netbios имя и в дальнейшем использует сервер для резолва имен других систем. Наличие WINS сервера необходимо для уменьшения количества broadcast-трафика. Если подсеть достаточно велика-бродкаста может быть очень много.
Запуск сервера
После того как сервер настроен необходимо выставить службу smb сервера на автозагрузку и запустить сам сервер:
Systemctl enable smb
systemctl enable nmb
systemctl start smb
systemctl start nmb
Для старых систем без systemd используйте:
Chkconfig —levels 235 smb 235
chkconfig —levels 235 nmb 235
service smb start
service nmb start
При каждом изменении smb.conf перезагружаем сервер:
Systemctl restart smb
или, для старых систем:
Smbd restart
Так же проверьте чтобы на расшаренных директориях стояли правильные права.
Помните, что SElinux не позволит получить доступ к шарам в домашних папках пользователей.
Настройка фаервола iptables
Чтобы ресурс samba был доступен из клиентам нужно настроить фаервол Iptables.Обязательно необходимо открыть порты 137-139 и 445ый.
В следующем примере из подсети 192.168.1.* разрешен доступ к SAMBA-серверу, при необходимости можно убрать параметр -s 192.168.1.0/24 чтобы разрешить доступ к серверу всем
Iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp —dport 137 -m state —state NEW -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp —dport 138 -m state —state NEW -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp —dport 139 -m state —state NEW -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp —dport 445 -m state —state NEW -j ACCEPT
iptables-save > /etc/sysconfig/iptables
Создание пользователей для SAMBA
Для начала необходимо создать обычного пользователя в системе, после этого с помощью специальной команды smbpasswd занести пользователя в базу данных Samba-сервер
Создаем обычного пользователя:
Useradd -M(без домашней папки) -l -s /sbin/nologin (чтобы по ssh не зашли) username
Указываем пароль пользователя:
Passwd tom
Создаем Samba-пользователя:
Smbpasswd -a tom
Диагностика сервера
После того как вы запустили сервер- к нему можно подключиться с него же самого с помощью smbclient:
Smbclient /// -U
Замените именем узла или IP-адресом сервера Samba, к которому вы хотите подключиться, — названием каталога, который вы хотите просмотреть, а — именем пользователя Samba в удалённой системе. Введите правильный пароль или нажмите , если для этого пользователя пароль не требуется.
Smbclient -L hostname — посмотреть расшаренные ресурсы на хосте
Если компьютер вообще не видно в сетевом окружении нужно проверить работу службы имен с помощью утилиты nmblookup.Сначала утилита запускается на клиенте, потом если на клиенте выдается ошибка резолва-запускаете на сервере. Если и на сервере ничего не выдаст-значит проблема с nmb-демоном и нужно разбираться с сервером. Так же могут мешать фаерволы на клиенте или сервере.
Nmblookup <имя_компьютера>
nmblookup -A IP
Так же можно использовать команду findsmb для поиска серверов в сети.
Аналогичная виндовая команда:
Net view \NBNAME
nbtstat -a
Если ничего не работает-есть смыcл посмотреть что будет если отключать фаервол:
Service iptables stop
Утилиты для работы с сервером
Для работы с сервером существует насколько дополнительных утилит:
smbstatus:: Выдает отчет о текущих подключениях к серверу.
smbpasswd:: Используется чтобы установить или изменить пароли Samba-пользователей.
findsmb:: Используется для поиска компьютеров Samba в сети.
nmblookup:: Использует NetBIOS over TCP/IP чтобы преобразовать имена компьютера в айпишники.
net:: Используется для удаленного администрирования Samba-сервера.
smbclient:: Используется UNIX/Linux client компьютерами для подключения к серверу.
smbtar:: Утилита используется для создания бэкапа данных которые хранятся на сервере.
testparm:: Утилита проверяет синтаксис конфигурационного файла сервера (smb.conf).
Полезные команды
После любого изменения smb.conf необходимо перезагрузить службу:
Systemctl restart smb
Чтобы смонтировать ресурс Samba в каталог, создайте каталог, если он ещё не существует, и выполните от имени root следующую команду:
Mount -t cifs -o username=,password= /// /mnt/point/
Эта команда монтирует ресурс с сервера в локальный каталог /mnt/point/.
Если все примонтировалось без ошибок можно прописать автоматическое монтирование каталога в /etc/fstab.
Подключиться к хосту с пользователем username и посмотреть шары на хосте host:
Smbclient -L host -U username
Создание нового пользователя:
Smbpasswd -a
Смена пароля у существующего пользователя:
Smbpasswd
Удаление существующего пользователя:
Smbpasswd -x
Приостановление учетной записи без удаления:
Smbpasswd -d
Подключение данного компьютера к существующему домену:
Smbpasswd -j -U
Связанные Web сайты
- http://smb-conf.ru/ Все о Samba по-русски