Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров12K
Всем привет я всегда хотел вести свой мини блог и решил начать его на Хабре. Я очень вдохновлен этой платформой, потому что я могу её использовать, как для развития самого себя, так и помогать начинающим специалистам в области IT совершенствовать свои навыки. На данном этапе я не могу писать какие-то сверхсложные статьи в данной области, но я постепенно развиваюсь и буду освещать необычные темы в своей блоге. А пока решил начать с чего-то очень простого чтобы самому въехать, и понять как все будет развиваться.
Samba — это программный комплекс, который позволяет компьютерам на базе Linux и UNIX взаимодействовать с системами Windows через протокол SMB/CIFS (Server Message Block/Common Internet File System). Основное
Основное предназначение Samba — обеспечить совместный доступ к файлам, папкам, принтерам и другим ресурсам между разными операционными системами.
Нам необходимо представить доступ к общей папке и к папке «приватных пользователей» на базе astra linux 1.6. Для этого мы создадим 2 общие папки, к которым в целях безопасности смогут подключаться только пользователи Samba, вторая же папка будет «приватная» к которой смогу подключатся только пользователи Samba, но главное отличие в том, что эти пользователи дополнительно будут аутентифицироваться по паролю. Так же если вам необходимо что бы присутствовал пользователь с правами администратора и имел доступ ко всем папкам то выполняйте команды со звездочкой*
«Samba_users» — где доступ имеют только пользователи Samba без пароля
«Samba_private» — где привилегированные пользователи Samba имеют доступ по паролю.
1. Настройка сети
Для начала назначим статические IP-адреса для сервера и клиентских хостов
-
Сервер Samba —
192.168.1.200/24
(Astra Linux 1.6/1.7) -
Хост №1 (Windows 7) —
192.168.1.10, уч. запись vadim
-
Хост №2 (Windows 10) —
192.168.1.11, уч. запись dima
-
*Хост №3 (Windows 10) —
192.168.1.12, уч. запись admin
2. Настройка доменного имени
Присваиваем серверу корректное доменное имя, например: ds1.domain.local
. Выполняем команды:
sudo -i
hostnamectl set-hostname ds1.domain.local
hostname // проверить заданное имя
mcedit /etc/hosts // привести к виду
127.0.0.1 localhost
#127.0.0.1 ds
192.168.1.200 ds1.domain.local ds1
cat /etc/resolv.conf //проверить что бы были указаны правильные DNS сервераПроверяем наличие сетевого взаимодействия
ping (ip - хоста в сети)
3. Установка Samba
Установите Samba на сервере
Fly-admin-samba — Это специальный инструмент, разработанный для Astra Linux. Его основное назначение — упрощение администрирования Samba через
графический интерфейс.
Astra-samba — Это модифицированная версия Samba, интегрированная специально для Astra Linux. Она включает в себя некоторые изменения, специфичные для ОС Astra Linux 1.6— упрощение администрирования Samba через графический интерфейс. Astra-samba — Это модифицированная версия Samba, интегрированная специально для Astra Linux. Она включает в себя некоторые изменения, специфичные для ОС Astra Linux 1.6 хотя fly-admin-samba и astra-samba разработаны для Astra Linux, их использование зависит от вашего сценария:
-
Если вы работаете через графический интерфейс, fly-admin-samba может быть полезным.
-
Если вы хотите использовать полную функциональность Samba и её расширения, то astra-samba будет предпочтительнее.
-
В некоторых случаях может потребоваться ручная настройка через консоль (например, тонкая настройка прав, которая может быть недоступна через GUI).
После установки графического инструмента он станет доступен в меню
«Пуск» > «Панель управления» > «Сеть» > «Общие папки (Samba)«
sudo apt install fly-admin-samba //Установить графический инструмент
apt install astra-sambadc// Установить инструмент командной строки
4. Проверьте, что Samba установлена и работает
sudo systemctl status smbd
sudo systemctl enable smbd //Включить автозапуск службы с ОС
5. Необходимо произвести настройки в конфигурационном файле smb.conf
sudo -i
cp -v /etc/samba/smb.conf /var/backups
systemctl stop smbd
mcedit (nano) /etc/samba/smb.conf
Приводим файл к такому виду, остальное содержание можно оставить без изменений или удалить, но вскоре вам понадобится прописать в этом файле сетевые принтеры или что-то ещё, поэтому в контексте данного задания я показываю часть файла, которая отвечает на заданную нами тему.
[global]
log file = /var/log/samba/%m.log
max log size = 1000
workgroup = WORKGROUP
netbios name = SAMBASERVER
wins support = yes
logging = file
panic action = /usr/share/samba/panic-action %d
server role = standalone server
obey pam restriction = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = Enter\snew\s\spasswdord:* %n\n Retype\snew\s\spasswdord:* %n\n password\supdated\ssuccessfully
pam password change = yes
map to guest = bad user
security = user
comment = Home Directories
encrypt passwords = yes
[samba_users]
comment = Общая папка для пользователей Samba
path = /srv/samba_users
read only = no
guest ok = yes
browseable = yes
writable = yes
valid users = @samba_users, @admin //*добавляем @admin если нужен admin над всеми папками
[samba_private]
comment = Приватная папка
path = /srv/samba_private
browseable = yes
guest ok = no
writable = yes
valid users = @samba_private, @admin
Сохранение в редакторе mcedit/nano
mcedit — Выйти и сохранить — F10
nano — ctrl+X
Обозначение команд в конфигурационном файле
comment = Общая папка Samba
• Описание: Указывает описание ресурса, которое будет отображаться в сетевом окружении.
path = /srv/samba
• Описание: Указывает путь к каталогу на сервере, который предоставляется в общем доступе.
• Пример: Файлы, хранящиеся в /srv/samba, будут видны через этот ресурс.
read only = no
• Описание: Определяет, доступен ли ресурс только для чтения.
• no: Разрешает запись в папку.
guest ok = yes
• Описание: Разрешает доступ к папке без аутентификации (гостевой доступ).
• yes: Любой пользователь может получить доступ к ресурсу без ввода логина и пароля.
browseable = yes
• Описание: Показывать ли папку в сетевом окружении.
• yes: Папка будет видна в списке общих ресурсов.
writable = yes
• Описание: Разрешать ли запись в папку.
• yes: Пользователи смогут добавлять и изменять файлы.
valid users = @samba_private
• Описание: Ограничивает доступ к папке только для указанных пользователей или групп.
• @samba_private: Указывает, что доступ имеют только пользователи из группы samba_private.
• Пример: Если пользователь не принадлежит к этой группе, доступ будет запрещён.
6. Проверка конфигурации на ошибки
testparm
7. Создадим группы пользователей
groupadd samba_users
groupadd samba_private
groupadd admin //*
groupadd samba_del
groupdel samba_del//удалите если добавили лишнюю группу
8. Добавим пользователей Linux и создадим учетные записи Samba
adduser vadim //пароль задаем такие же как у учеток windows
adduser dima
adduser admin //*пользователь, имеющий права ко всем папкам
adduser kiril
smbpasswd -a vadim
smbpasswd -a dima
smbpasswd -a admin
userdel kiril // если случайно дабавили пользователя
9. Добавим пользователей в группы
usermod -aG samba_users dima
usermod -aG samba_private vadim
usermod -aG admin admin//*добавление пользователя админ в группу
gpasswd --delete <пользователь> <группы через запятую> // если необходимо удалить пользователя из группы
10. Создаем папку samba_users с общим доступом для пользователей Samba
sudo -i
mkdir /srv/samba_users (папка с общим доступом где только пользователи Samba могут и читать и записывать)
chmod -R 770 /srv/samba_users
chown -R root:samba_users /srv/samba_users
10.1 Расширение прав и отладка
Практика показала, что пользователи имеют доступ к папкам и все работает отлично.
В моей ситуации получилось так, что данные я переносил с компьютера windows и все файлы получили права admin в группе admin, в связи с чем пользователи не могли получить доступ к файлам внутри расшаренных папок.
Потому если вы столкнулись с данной проблемой или вам необходим доступ как пользователя так и администратора тоже, то это должно вам помочь:
Настройка прав с помощью ACL
Теперь вам необходимо назначить права одновременно для обеих групп.
Добавьте права для группы admin:
sudo setfacl -R -m g:admin:rwx /srv/samba_users
sudo setfacl -R -m g:samba_users:rwx /srv/samba_users
Настраиваем так, что бы новые файлы и папки наследовали права:
sudo setfacl -R -d -m g:admin:rwx /srv/samba_users
sudo setfacl -R -d -m g:samba_users:rwx /srv/samba_users
Проверка текущих ACL
Проверьте, что права настроены правильно:
getfacl /srv/samba_users
Вы должны увидеть что-то вроде:
makefile
# file: /srv/samba_users
# owner: root
# group: samba_users
user::rwx
group::rwx
group:admin:rwx
group:samba_users:rwx
mask::rwx
other::r-x
Аналогично для папки samba_private
sudo -i
mkdir /srv/samba_private (папка с доступом для пользователей Samba по паролю)
chmod -R 770 /srv/samba_private
chown -R root:samba_private /srv/samba_private
Настройка прав с помощью ACL
Теперь вам необходимо назначить права одновременно для обеих групп.
Добавьте права для группы admin:
sudo setfacl -R -m g:admin:rwx /srv/samba_private
sudo setfacl -R -m g:samba_private:rwx /srv/samba_private
Настраиваем так, что бы новые файлы и папки наследовали права:
sudo setfacl -R -d -m g:admin:rwx /srv/samba_private
sudo setfacl -R -d -m g:samba_private:rwx /srv/samba_private
Проверка текущих ACL
Проверьте, что права настроены правильно:
getfacl /srv/samba_private
Вы должны увидеть что-то вроде:
makefile
# file: /srv/samba_private
# owner: root
# group: samba_private
user::rwx
group::rwx
group:admin:rwx
group:samba_private:rwx
mask::rwx
other::r-x
11. Проверка работы службы
Необходимо перезапустить службу Samba и проверить с сервера доступ к конкретной папке
systemctl restart smbd// перезапуск службы
systemctl status smbd //Проверка работы службы
smbclient //localhost/samba_users -U dima
smbclient //localhost/samba_private -U vadim
12. Подключение к общим папкам с хостов Windows
В проводнике отобразится общая папка после чего вы можете создать ярлык этой папки и вынести на рабочий стол для удобства.
Когда вы проверите доступ к папкам с разных компьютеров, то убедитесь что Vadim имеет доступ к 2-м папкам, а dima только к одной (samba_users). При подключении vadim к samba_private, будет затребован пароль для аутентификации, после его ввода он сохраниться и вы будете заходить без дополнительного ввода (Есть смысл делать пароли от учетных записей Windows и Astra Linux одинаковыми).
Вывод
В результате выполнения данной настройки сервера Samba были успешно созданы и настроены общие ресурсы с различными уровнями доступа. Настроены две папки:
-
samba_users — доступна всем пользователям Samba без ввода пароля,
-
samba_private — доступна только определённым пользователям после аутентификации.
Проверка с сервера и клиентских хостов (Windows 7 и Windows 10) подтвердила корректную работу настроек, включая разграничение доступа. Такой подход обеспечивает удобство управления доступом для различных пользователей, а использование групп позволяет гибко управлять правами в будущем. Данный алгоритм демонстрирует простоту настройки Samba и её возможности в организации файлового хранилища с контролем доступа.
Cетевой обмен по протоколу SMB / SAMBA
Одним из способов доступа с STB к файлам, расположенным на сетевых компьютерах, является протокол общего доступа SMB, который является стандартным протоколом Microsoft Windows и обеспечивает функции «Сети Microsoft Windows» и «Совместного использования файлов и принтеров».
Samba — свободная реализация протокола SMB для UNIX-подобных и других операционных систем.
Применение протоколов SMB / Samba позволяет осуществлять доступ с STB (работает под управлением ОС Linux) к папкам и файлам, расположенным на сетевых компьютерах (работающих под управлением ОС Linux, Windows и др.). Таким образом, пользователи STB получают возможность проигрывать на STB медиа-файлы (видео, аудио, изображения), которые расположены на сетевых компьютерах, работающих под управлением одного из типов ОС, поддерживающей протокол SMB.
Протокол SMB / Samba является прикладным протоколом (в терминах сетевой модели OSI). Для обмена данными используется транспортный протокол TCP/IP.
Протокол SMB / Samba использует архитектуру клиент – сервер: в качестве сервера выступает ПК, на котором размещаются определенные сетевые ресурсы (папки) с медиа-файлами, в качестве клиента – STB, с которого медиа-файлы проигрываются.
Сетевые ресурсы (в виде ярлыков) отображаются в STB, в меню Home media, в соответствии со стандартной сетевой LAN-архитектурой ОС Windows: Сеть / Рабочая группа / Компьютер / Папка.
По умолчанию, доступ к ресурсам компьютера закрыт настройками на стороне компьютера. При необходимости получить доступ к определенной сетевой папке, пользователь компьютера открывает доступ к этой папке. Для управления доступом к папкам используется процедура ОС Windows «Общий доступ к файлам«.
Предусмотрены два типа сетевого доступа к папкам (тип доступа определяется на стороне сервера):
- по паролю — для доступа к сетевой папке со стороны STB используется процедура Авторизации (необходимо ввести имя (login) определенного пользователя компьютера и его пароль (password);
- без пароля — доступ к сетевой папке открыт для всех пользователей, без необходимости вводить пароль.
Обнаружение общих сетевых ресурсов на стороне STB происходит автоматически (если это не запрещено на стороне компьютера или кроме случаев, связанных с некорректной работой сети). Соединение с сетевой папкой устанавливается, когда пользователь STB открывает сетевую папку. Если используется доступ к папке по паролю, пользователю выдается запрос указать login и password.
Также предусмотрена возможность ручного подключения сетевых папок (если они не были обнаружены автоматически). Настройка и доступ к ресурсам сети по протоколу SMB / Samba на STB проводится в меню Home media.
Ниже рассмотрен пример, как подключить сетевую папку ПК с ОС Windows 10 для воспроизведения медиа-файлов с STB.
Параметры, используемые в примере
Компьютер (файловый сервер):
- Операционная система — Windows 10 64-bit;
- Имя компьютера – My_computer;
- Рабочая группа – WORKGROUP (имя рабочей группы “по умолчанию” в ОС «Windows»);
- IP-адрес ПК: 192.168.1.186.
- Сетевой ресурс, к которому открывается доступ (папка с медиа-файлами) — папка Video_E1.
- Имя пользователя — Usr.
Примечание! Не рекомендуется использовать в «Имени компьютера» и «Рабочей группы» символы кириллицы.
STB (клиент)
- IP-адрес STB: 192.168.1.230
Настройка соединения на стороне ПК
Проверка доступности сетевого соединения между ПК и STB
Перед настройкой соединения убедитесь в доступности сетевого соединения между ПК и STB – пошлите ICMP Echo Requests (PING) с ПК на STB.
Проверка включения протокола SMB
- Открыть Панель управления ⇒ Все элементы панели управления ⇒ Программы и компоненты.
- В левой панели выбрать пункт Включение и отключение компонентов Windows.
- Убедиться, что включена опция Поддержка общего доступа к файлам SMB 1.0/CIFS.
Настройка параметров общего доступа для различных профилей Windows
1. Открыть Панель управления ⇒ Все элементы панели управления ⇒ Центр управления сетями и общим доступом.
2. В левой панели выбрать пункт Изменить дополнительные параметры общего доступа.
2. Настроить параметры общего доступа для трех профилей (‘Частная’, ‘Гостевая или общедоступная’ и ‘Все сети’):
Частная
Гостевая или общедоступная
Все сети
Открытие доступа к папке на стороне ПК
1. Откройте доступ к папке Video_E1: Свойства ⇒ Доступ ⇒ Общий доступ.
2. В открывшемся окне Общий доступ к файлам выберите и добавьте пользователей для доступа к папке:
2.1 Для организации доступ к папке по паролю (используется пароль пользователя ПК), выберете и добавьте необходимых пользователей (в примере — рассмотрен доступ для текущего пользователя Usr). В этом случае при попытке открыть папку со стороны STB будут запрошены логин (имя пользователя компьютера) и пароль (пароль пользователя компьютера).
Учтите. Необходимо использовать определенное значение пароля учетной записи пользователя. Отсутствие пароля (пустой пароль) приведет к невозможности доступа к папке!
2.2 Если необходимо предоставлять доступ к папке всем пользователям сети, выбрать в списке пользователя
«Все» (если такого пункта нет в списке — выбрать и добавить).
3. Выбрать уровень разрешений (чтение/запись) для пользователей и открыть доступ нажатием кнопки «Поделиться».
Ниже на рисунке приведен вариант настройки предоставления беспарольного доступа к папке Video_E1 (для всех сетевых пользователей).
- Во Встроенном портале зайти в Главное окно ⇒ Home Media ⇒ Сетевое окружение (Network) ⇒ WORKGROUP
2. В папке WORKGROUP отображаются сетевые компьютеры рабочей группы.
Откройте ярлык необходимого сетевого компьютера — My_Computer (в разделе My_Computer отображаются папки одноименного сетевого компьютера, для которых открыт доступ).
3. Чтобы убедиться, что автоматическое определение сетевого ресурса состоялось и проверить тип протокола необходимо выделить папку и воспользоваться кнопкой «i» (INFO) на ПДУ:
4. Открыть папку Video_E1. Внутри папки пройти по пути, по которому находится медиа-файл, который необходимо воспроизвести.
5. Если для папки установлен доступ по паролю, либо по каким-либо причинам STB не может «примонтировать» папку (то есть получить к ней доступ — см. раздел Проблемы получения доступа к сетевым ресурсам), то при попытке открыть данную папку открывается окно Network connection.
Для авторизации необходимо выбрать ОК — открывается окно Authorization, в котором следует ввести параметры доступа к папке: Login и Password.
6. Запустить медиа-файл.
Принудительное установление соединения к сетевой папке со стороны STB
Для тех случаев, когда автоматическое соединение не устанавливается, предусмотрена ручная настройка доступа к сетевой папке:
- Во Встроенном портале открыть Главное окно ⇒ Home Media ⇒ Сетевое окружение
- Вызвать окно Operations (Операции) — кнопка Меню на ПДУ.
- Нажать Подключить NFS/SMB (Connect NFS/SMB).
- В окне Подключение сетевой папки (Connect network folder) ввести параметры соединения:
- Адрес сервера (Server Address) – IP-адрес ПК (файлового сервера), на котором размещена требуемая сетевая папка;
- Папка на сервере (Server folder) – имя папки (каталога) на ПК, для которой установлен общий доступ;
- Локальная папка (Local folder) – имя папки на STB (по умолчанию, совпадает с именем папки на сервере);
- Тип подключения (Connection type) – SMB.
- Логин (Login) – логин доступа — вводится, если для папки используется доступ по паролю. Вводимое значение совпадает с именем пользователя ПК;
- Пароль (Password) – пароль доступа к папке — вводится, если для папки используется доступ с паролем.
Примечание. Если для папки используется беспарольный доступ, поля Логин и Пароль должны быть пустыми!
Отключение сетевой папки, изменение настроек соединения на STB
Для принудительного отключения определенной сетевой папки используйте для этой папки команду Отключить NFS/SMB.
В случае необходимости внести изменения в настройку соединения определенной папки (например, при изменении параметров доступа к папке на стороне ПК), используйте для этой папки команду Редактировать (англ. Edit share).
Монтирование папки
Установление соединения к определенной папке, описанное в подразделах Соединение с сетевой папкой на стороне STB и Принудительное установление соединения к сетевой папке, сопровождается автоматическим монтированием папки на STB. Если определенная папка «примонтирована» на STB, ее ярлык появляется на верхнем уровне меню Home media.
Пользователь также может монтировать необходимую папку вручную (это также ведет к соединению с папкой), для этой цели используется команда Подключить ресурс (англ. Mount share).
Для «размонтирования» папки в STB (это также ведет к разъединению папки от STB) используется команда Отключить ресурс (англ. Unmount share).
Проблемы получения доступа к сетевым ресурсам
1. Выполните следующие действия:
-
- Пропинговать STB со стороны ПК (убедиться, что оба устройства могут взаимодействовать по сети). При необходимости восстановить сетевое взаимодействие;
- Убедиться, что на сервере (ПК, с которого настраивается доступ) включена поддержка протокола SMB версии 1.
- На компьютере проверить Настройку параметров общего доступа для различных профилей Windows.
- На компьютере проверить Открытие доступа к папке.
-
Если автоматическое соединение не устанавливается, используйте режим
ручного соединения. - Перезагрузить STB и ПК и повторить попытку соединения.
2. Если при открытии сетевой папки на STB предлагается выполнить авторизацию, но для папки доступ по паролю не назначался:
-
- На сетевом компьютере проверить, чтобы в свойствах папки был открыт доступ для пользователя «Все»;
- Если доступ не возобновился, перезагрузить STB.
3. Если при открытии папки на STB предлагается выполнить авторизацию (ввести логин, пароль), но значение пароля не задано (пустой пароль):
-
- Установить определенное значение пароля пользователя компьютера;
- Если доступ не возобновился, перезагрузить STB.
4. Если файл не открывается:
-
- проверить, проигрывается ли файл локально на ПК;
- попытаться запустить с STB другие файлы с той же сетевой папки, с других сетевых папок;
- попытаться проиграть файл другого формата (желательно, проверить файл, который на STB ранее воспроизводился, например, с USB-носителя). Возможно, данный формат файла не поддерживается плеером STB.
Для работы бывает необходимо подключаться из Linux к общей папке Windows, чтобы забрать или передать файлы. В организациях в 99% используются компьютеры под управлением Windows, поэтому приходится подключаться из Linux к Windows.
Установка Samba клиента в Linux
sudo apt-get update
sudo apt-get install samba-client
sudo apt-get install cifs-utils
Для удобства просмотра сетевого окружения в GUI удобен файловый менеджер Nautilus с дополнением Nautilus-share
sudo apt-get install nautilus nautilus-share
Просмотр общих сетевых ресурсов с помощью командной строки
Вызов клиента Samba для просмотра ресурсов сервера из командной строки:
1) просмотр общих папок, предоставленных в общий доступ по сети для локальных пользователей сервера
smbclient -L //192.168.100.10 -U Username%Password
либо
smbclient -L //servername -U Username%Password
где: 192.168.100.10 — IP адрес сервера, servername — имя сервера, Username — локальный пользователь сервера, Password — пароль пользователя Username
2) просмотр общих папок, предоставленных в общий доступ по сети для пользователей домена
smbclient -L //192.168.100.10 -U Domain/Username%Password
либо
smbclient -L //192.168.100.10 -U Username%Password -W Domain
или по имени
smbclient -L //servername -U Username%Password -W Domain
где Domain — имя домена Active Directory.
Либо (чтобы каждый раз не сообщать пароль в параметрах команды) создать файл ~/.smbcredentials
с данными входа:
username=имя_пользователя
password=пароль
domain=имя_standalone_сервера_или_домена
Тогда, присоединение к сетевому каталогу:
smbclient //server/share --authentication-file=/home/vladimir/.smbcredentials
Подключение к общей папке Samba в интерактивном режиме
То же самое, но без ключа -L, но с параметром — именем общей папки, в данном случае «share»
smbclient //192.168.100.10/share -U Domain/Username%Password
либо
smbclient //servername/share -U Domain/Username%Password
либо
smbclient //servername/share -U Username%Password -W Domain
После успешного входа появится приглашение
smb: \>
можно вводить команды, например, help или dir. Интерфейс для управления smbclient с помощью команд напоминает ftp клиент.
Подключение к общим папкам с помощью файлового менеджера Nautilus
После запуска nautilus, выберите в левой части окна «+ Другие места» — откроется просмотр локальной сети, где можно просматривать компьютеры в сети, у которых имеются общие папки.
Решение проблемы с подключением: избавляемся от ошибки -13 Access Denied, либо NT_STATUS_ACCESS_DENIED
Ошибка: CIFS: VFS: cifs_mount failed w/return code = -13"
Данную ошибку можно решить только настройкой прав на сервере. Чтобы открыть общую папку на просмотр, нужны три условия:
1) Пользователь указан среди пользователей сервера или домена (либо доступ типа guest разрешён)
2) Предоставлен (не ограничен) доступ к файловой системе.
3) Дан доступ к конкретной сетевой папке — например, пользователь входит в группу пользователей, к которой дан доступ к общей папке.
Последнее, третье условие самое строгое. Нужно, чтобы Администратор сервера предоставил права пользователю (включил его в группу пользователей общей папки).
Самое интересное, что права Администратора не гарантируют даже ему полных прав доступа к общей папке, т.к. необходимо, чтобы пользователь «Администратор» входил в группу, которой предоставлены права к данной сетевой папке. В этом плане администратор не отличается от группы other/nobody: получит ошибку mount error(13): Permission denied, потому что он не входит в группу пользователей сетевой папки.
Использование команды «mount»
Вместо smbclient
можно использовать команду mount
.
Вначале нужно создать точки монтирования и дать права доступа к папке, например:
sudo mkdir /mnt/cifs
sudo chmod 0777 /mnt/cifs
Примеры использования команды mount с сетевым папками:
sudo mount -t cifs //192.168.20.222/share /mnt/cifs -o user=Vlad,pass=Str0ngPa$$word
ls /mnt/cifs
sudo umount //192.168.20.222/share
ls /mnt/cifs
Либо то же самое с файлом .smbcredentials :
sudo mount -t cifs //192.168.20.222/share /mnt/cifs -o credentials=/home/vladimir/.smbcredentials
Если имя сетевой папки содержит пробелы («share with spaces in name»), нужно вводить следующим образом:
sudo mount -t cifs //192.168.20.222/share\ with\ spaces\ in\ name /mnt/cifs -o credentials=/home/vladimir/.smbcredentials
Примечание: Чтобы после выполнения команды mount примонтированная папка работала бы не только на чтение, но и на запись в удалённую общую папку, нужно сопоставить удаленного пользователя с локальным пользователем Linux, при помощи параметров uid=1000,gid-1000. Где 1000 — заменить на uid и gid пользователя Linux (выводятся командой id
).
Либо добавить в параметры -o noperm,iocharset=utf8.
В ключах команды можно задать версию Samba, которую используем для подключения. Например,
для SMB2: vers=2.0 или для SMB3 vers=3.0.
Примеры:
sudo mount -t cifs //192.168.20.222/share\ with\ spaces\ in\ name /mnt/cifs -o user=username,pass=password,uid=1000,gid=1000
sudo mount -t cifs //192.168.20.222/share\ with\ spaces\ in\ name /mnt/cifs -o credentials=/home/vladimir/.smbcredentials,vers=2.0,noperm
Если заданная версия Samba (например, SMB3) не поддерживается сервером, будет выведена ошибка "mount error(95): Operation not supported."
.
Добавление параметра «nofail» пригодится, когда не известно, включен ли удалённый компьютер (сервер) или нет.
Монтирование сетевой папки во время загрузки (файл /etc/fstab)
Синтаксис строки в /etc/fstab:
//[URL]/[sharename] /mnt/[mountpoint] cifs vers=3.0,credentials=/home/username/.sharelogin,iocharset=utf8,file_mode=0777,dir_mode=0777,uid=[username],gid=[username],nofail 0 0
где:
//[URL]/[sharename]
— имя сервера и сетевой папки
/mnt/[mountpoint]
— точка монтирования на локальном компьютере
vers=3.0
— принудительно установить версию протокола SMB3 (либо vers=2.0 — если клиент и сервер поддерживают лишь SMB2)
credentials=/home/username/.sharelogin
— указание файла с именем пользователя, паролем и доменом для входа
iocharset=utf8
— прямое указание набора символов utf8 (не обязательно, если без него работает)
file_mode=0777,dir_mode=0777
— права доступа при выполнении mount
uid=[username],gid=[username]
— данные uid и gid из результата вывода команды cat /etc/passwd | grep username
nofail
— загрузка ОС будет продолжена даже в случае недоступности сервера URL
Другие параметры:
defaults
— включает опции rw, suid, dev, exec, auto, nouser, and async. Обычно идёт первой, т.к. можно переопределить отдельные опции в строке позднее, например: defaults, noexec, ro — нет исполнения, только чтение.
rw
— очевидно, чтение-запись со стороны клиента (является противоположностью ro — только чтение (защита от записи).
suid
— запрещает использование бит полномочий SUID (Set-User-IDentifier — установка идентификатора владельца) или SGID (Set-Group-IDentifier). Грубо говоря, запрещает передачу части прав при помощи битов SUID и SGID — права должны быть заданы явно.
auto
— используется в /etc/fstab — разрешает автоматическое монтирование сетевых ресурсов при выполнении команды mount -a
noauto
— запрет для fstab монтировать папку автоматически при выполнении команды mount -a.
nouser
— прямой запрет на «ручное» монтирование всеми пользователями, кроме root (не влияет на монтирование во время загрузки ОС)
guest
— для доступа к «гостевым» общим папкам, которые доступны по сети без указания имени пользователя и пароля.
async
— запись данных в сетевую папку производится по мере возможности — значение по умолчанию. Повышает производительность.
sync
— немедленная запись на удаленный компьютер (без использования буферов), не рекомендуется.
noperm
— отключает встроенную в клиент проверку прав. Используют noperm в том случае, если права вроде бы есть, но создать файл на запись, например, программно, не получается, из-за несовместимости в реализации CIFS на клиенте и сервере.
noexec
— прямой запрет запуска исполнимых файлов из сетевой папки
noatime
— не обновлять время создания файла (повышает производительность, но понижает информативность)
nounix
— отключение расширений Linux: не использовать символические ссылки. Используется, чтобы отключить символьные ссылки для обеспечения совместимости с Windows.
mfsymlinks
— ключ для символьных ссылок в стиле Minshall+French. Этот стиль ссылок поддерживается Windows и Mac.
Примеры строки в fstab (где данные входа указаны в файле /etc/.smbcredentials):
//192.168.20.222/share_name rw,auto,nofail,credentials=/etc/.smbcredentials 0 0
Если в /etc/hosts или локальном DNS сервере прописаны имена машин, вместо IP-адреса можно подключать общую папку по имени: //server/share .
Команда для монтирования на основе fstab:
sudo mount -a
Будет перемонтированы все диски на основе /etc/fstab за исключением помеченных параметром «noauto».
Краткая информация по настройки Samba в Windows (протоколы SMB1, SMB2, SMB3)
Samba протокол имеет три версии 1, 2 и 3.
Протокол SMB1 включают, если в организации имеются машины под Windows XP. В остальных случаях стараются отключить SMB1 как небезопасный.
Включение и выключение в Windows 7 и Windows Server 2008r2 производится с помощью реестра, параметры
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters
параметры типа DWORD
SMB1=0
SMB2=1
В Windows 8, Windows 10, 11, Windows Server 2012, 2016 и выше используется командлет PowerShell
Get-SmbServerConfiguration | select EnableSMB1Protocol,EnableSMB2Protocol
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Указанные командлеты не работают в ранний версиях Windows 7 и Windows Server 2008r2.
Также, SMB3 не работает в Win7 — подробнее см. здесь — сайт winitpro.ru.
Ссылки:
- man mount.cifs
Related publications
# # Пример файла конфигурации Samba для Debian GNU/Linux. # # # Это основной конфигурационный файл Samba. Чтобы понять значение # указанных здесь опций, прочитайте man-руководство smb.conf(5). # У Samba есть большое количество опций настройки, большинство # из которых здесь не показаны. # # Некоторые опции, который часто стоит настроить, показаны как # закомментированные примеры в этом файле. # - Когда такие опции закомментированы с помощью ";", то эта # предложенная настройка включает опцию, которая отличается # от поведения по умолчанию Samba. # - Когда комментарий начинается с "#", то эта предложенная # настройка соответствует поведению по умолчанию Samba, # однако опция достаточно важна, чтобы быть упомянутой. # # ЗАМЕЧАНИЕ: всякий раз, когда Вы изменили этот файл, нужно # проверить корректность сделанных настроек с помощью запуска # команды "testparm" - она покажет базовые ошибки синтаксиса.
#==================== Глобальные настройки ====================
[global]
## Браузинг/идентификация ###
# Поменяйте это имя так, чтобы оно соответствовало рабочей # группе / домену NT, куда сервер Samba будет входить как часть # сетевого окружения: workgroup = WORKGROUP
# server string это эквивалент поля NT Description (описание сервера): server string = %h server (Samba, Ubuntu)
# Секция поддержки службы Windows Internet Name Serving: # WINS Support - Tells the NMBD component of Samba to enable its WINS Server # wins support = no # WINS Server - сообщает WINS-клиенту компоненты NMBD. # Замечание: Samba может быть либо сервером WINS, либо клиентом WINS, # но не может выполнять обе эти роли одновременно. ; wins server = w.x.y.z
# Эта опция предотвратит для nmbd поиск NetBIOS-имен через DNS. dns proxy = no
#### Сетевые настройки ####
# Специфический набор интерфейсов / сетей для привязки службы. # Это может быть либо имя интерфейса, либо IP-адрес/маска; # обычно предпочитают имена интерфейсов. ; interfaces = 127.0.0.0/8 eth0
# Привязка только и именованным интерфейсам и/или сетям; для её применения # Вы должны использовать вышеуказанную опцию 'interfaces'. Рекомендуется # разрешить эту функцию, если Ваша машина с Samba не защищена файерволом # или сама является файерволом. Однако эта опция не может корректно # обрабатывать динамические или не широковещательные интерфейсы. ; bind interfaces only = yes
#### Отладка / учет ####
# Говорит Samba использовать отдельный log-файл для каждой машины, которая # подключится: log file = /var/log/samba/log.%m
# Предел размера отдельных лог-файлов (в килобайтах). max log size = 1000
# Если Вы хотите, чтобы Samba писала только в системный лог (syslog), # то установите следующий параметр как 'yes'. # syslog only = no
# Мы хотим свести к минимуму количество информации, сохраняемой в syslog. # Вместо этого все должно идти в /var/log/samba/log.{smbd,nmbd}. Если Вы # хотите писать именно в syslog, то должны установить следующий параметр # в какое-то большее число. syslog = 0
# Сделать что-нибудь значимое, когда Samba упала: отправить письмо # backtrace админу: panic action = /usr/share/samba/panic-action %d
####### Аутентификация #######
# Роль сервера. Определяет, в каком режиме будет работать Samba. Возможные # значения "standalone server", "member server", "classic primary # domain controller", "classic backup domain controller", "active # directory domain controller". # # Большинство пользователей предпочитают "standalone sever" или "member server". # Запуск в качестве "active directory domain controller" сначала потребует # запуска "samba-tool domain provision" чтобы вычистить базы данных и создать # новый домен. server role = standalone server
# Если Вы хотите использовать зашифрованные пароли, то Samba должна знать, # какую базу данных паролей Вы используете. passdb backend = tdbsam obey pam restrictions = yes
# Этот двоичный параметр (yes/no) управляет, будет ли Samba делать попытки # синхронизировать пароль Unix с паролем SMB, когда изменен шифрованный # пароль SMB password в базе passdb. unix password sync = yes
# Для синхронизации пароля Unix, работающей на системе Debian GNU/Linux, # должны быть установлены следующие параметры (благодаря Ian Kahan << kahan@informatik.tu-muenchen.de> для отправки корректного чат-скрипта # программе passwd в Debian Sarge). passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
# Эта двоичная опция управляет, будет ли использоваться PAM для изменений # пароля, когда запрашивается SMB-клиент вместо программы, перечисленной # d'passwd program'. Значение по умолчанию 'no'. pam password change = yes
# Эта опция управляет, как не успешные попытки аутентификации будут отображаться # на анонимные подключения: map to guest = bad user
########## Домены ###########
# # Следующие установки дают эффект только если установлено 'server role = primary # classic domain controller', 'server role = backup domain controller', или # 'domain logons'. #
# Задает место нахождения директории профиля пользователя с точки зрения # клиента). Следующий пример требует наличия настроенной на сервере Samba # шары [profiles] (см. ниже): ; logon path = \\%N\profiles\%U # Другой общий выбор - сохранение профиля в домашней директории пользователя # (это вариант по умолчанию для Samba): # logon path = \\%N\%U\profile
# Следующая установка дает эффект только если установлено 'domain logons'. # Задает место нахождения домашней директории пользователя (с точки зрения # клиента): ; logon drive = H: # logon home = \\%N\%U
# Следующая установка дает эффект только если установлено 'domain logons'. # Задает скрипт, запускаемый при логоне. Скрипт должен быть сохранен в шаре # [netlogon]. # Замечание: файл скрипта должен иметь имя формата 'DOS'. ; logon script = logon.cmd
# Это позволяет создавать пользователей Unix на контроллере домена через SAMR # RPC pipe. Пример команды создает учетную запись пользователя с запрещенным # паролем Unix; пожалуйста адаптируйте этот пример под свои нужды: ; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
# Это позволяет учетным записям машины быть созданными на контроллере домена # через SAMR RPC pipe. Следующий пример настройки подразумевает, что группа # "machines" существует на системе: ; add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
# Это позволяет группам Unix быть созданными на контроллере домена # через SAMR RPC pipe. ; add group script = /usr/sbin/addgroup --force-badname %g
############ Разное ############
# Использование следующей строки позволит Вам настроить пользовательскую # конфигурацию на базе машин. Строка %m будет заменена именем netbios машины, # которая подключается. ; include = /home/samba/etc/smb.conf.%m
# Некоторые умолчания для winbind (убедитесь, что Вы не используете эти # диапазоны для чего-то еще). ; idmap uid = 10000-20000 ; idmap gid = 10000-20000 ; template shell = /bin/bash
# Настройка опций шар пользователя, чтобы разрешить не-root # пользователям расшаривать папки командой net usershare. # Максимальное количество шар пользователя. 0 (по умолчанию) означает, # что функция usershare запрещена. ; usershare max shares = 100
# Разрешает пользователям, которым даны привилегии usershare, создавать # публичные шары, не только аутентификационные: usershare allow guests = yes
#======================= Определения шар =======================
# Раскомментируйте следующее (и настройте другие опции ниже по мере # надобности), чтобы разрешить шары домашней директории по умолчанию. # Это расшарит каждую домашнюю директорию пользователя как # \\server\username: ;[homes] ; comment = Home Directories ; browseable = no
# По умолчанию домашние директории экспортируются только для чтения # (read-only). Поменяйте следующий параметр на 'no', если хотите # иметь возможность писать в них: ; read only = yes
# Маска создания файла установлена на 0700 по соображениям безопасности. # Если Вы хотите создавать файлы с разрешениями group=rw, то установите # следующий параметр на 0775 (полный доступ для всех задается маской 0x777). ; create mask = 0700
# Маска создания директории установлена на 0700 по соображениям безопасности. # Если Вы хотите создавать каталоги с разрешениями group=rw, то установите # следующий параметр на 0775 (полный доступ для всех задается маской 0x777). ; directory mask = 0700
# По умолчанию к шарам \\server\username могут подключаться кто угодно, # кто имеет доступ к серверу Samba. Раскомментируйте следующий параметр # для гарантии, что только "username" может подключиться к шаре # \\server\username. Это может потребовать подстройки, если используются # схемы внешней аутентификации. ; valid users = %S
# Раскомментируйте следующее, чтобы создать директорию netlogon для # логонов домена (Domain Logons). Также потребуется сконфигурировать # Samba, чтобы она функционировала как контроллер домена. ;[netlogon] ; comment = Network Logon Service ; path = /home/samba/netlogon ; guest ok = yes ; read only = yes
# Раскомментируйте следующее, чтобы создать директорию profiles для # хранения профилей пользователей (см. выше опцию "logon path"). # Также потребуется сконфигурировать Samba, чтобы она функционировала # как контроллер домена. Путь ниже должен быть записываемым для всех # пользователей, чтобы могли быть созданы их директории, когда пользователи # логинятся первый раз. ;[profiles] ; comment = Users profiles ; path = /home/samba/profiles ; guest ok = no ; browseable = no ; create mask = 0600 ; directory mask = 0700
[printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700
# Клиенты Windows видят это имя шары как источник загружаемых драйверов принтера: [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no # Раскомментируйте, чтобы позволить удаленное администрирование драйверов # принтеров Windows. Вам может понадобиться заменить 'lpadmin' именем # группы, членами которой являются Ваши пользователи с полномочиями # администратора. Обратите внимание, что Вам нужно установить подходящие # разрешения Unix для этих пользователей на директорию драйверов, чтобы # они могли туда записывать: ; write list = root, @lpadmin
# Эта шара для обмена файлами, в неё имеют полный доступ кто угодно # без необходимости использования правильного пароля: [share] path = /home/share/ read only = No create mask = 0777 directory mask = 0777 browseable = yes public = yes
Все способы:
- Шаг 1: Активация компонента
- Шаг 2: Проверка и настройка
- Вариант 1: Клиент
- Вариант 2: Сервер
- Шаг 3: Подключение
- Вопросы и ответы: 2
Шаг 1: Активация компонента
По умолчанию компонент, отвечающий за работу службы Samba (SMB), отключен в Windows 10, поэтому перед настройкой его следует активировать. Делается это в специальном меню «Панели управления». Достаточно будет открыть окно «Компоненты Windows» и установить отметку напротив пункта «Поддержка общего доступа к файлам SMB 1.0/CIFS». В завершение следует перезапустить компьютер, чтобы внесенные изменения зарегистрировались в системе. При надобности обратитесь за помощью к тематической статье на нашем сайте — в ней автор описал эту процедуру более подробно. Там же вы сможете найти альтернативные методы выполнения поставленной задачи. Для ознакомления с темой перейдите по ссылке ниже.
Подробнее: Как включить SMBv1 в Windows 10
Шаг 2: Проверка и настройка
После того как компонент «Поддержка общего доступа к файлам SMB 1.0/CIFS» будет включен, необходимо проверить его работу и выполнить запуск. Для клиентской и серверной части эти действия выполняются по-разному. Подробнее о них будет рассказано дальше по тексту.
Вариант 1: Клиент
Если вы собираетесь настроить клиентскую часть SMB, запустите оболочку «Windows PowerShell» от имени администратора и выполните несколько команд. Делается это следующим образом:
- Запустите оболочку любым доступным способом. Например, сделать это можно посредством поиска по системе. Установите курсор в соответствующее поле на панели задач, введите запрос «Windows PowerShell» и в результате щелкните по пункту «Запуск от имени администратора».
Читайте также: Как открыть Windows PowerShell в Windows 10
- При появлении диалогового окна контроля учетных записей щелкните по кнопке «Да», чтобы разрешить запуск оболочки.
- В появившееся окно «Windows PowerShell» вставьте команду
sc.exe qc lanmanworkstation
и нажмите Enter для ее выполнения.В результате появится информация, касающаяся клиентской части службы SMB. Здесь вам необходимо обратить внимание на строку «Зависимости». Важно, чтобы в списке была указана службы под названием «MRxSmb20». Если она есть, значит, все нормально и клиент Samba настроен правильно.
- Если в списке «MRxSmb20» отсутствует, следует вручную включить эту службу. Сделать это можно посредством редактирования системного реестра или путем ввода специальных команд в «Windows PowerShell». Во втором случае воспользуйтесь приведенными ниже командами. Поочередно вставьте их в консоль и нажмите по клавише Enter для выполнения.
sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb10 start= auto
Если после ввода команд на экране появлялось сообщение «[SC] ChangeServiceConfig: успех», значит, вы все выполнили верно и клиентская часть Samba полностью настроена.
Вариант 2: Сервер
Серверная часть SMB настраивается похожим образом, но прежде следует проверить ее статус посредством специальной команды, приведенной ниже. Откройте «Windows PowerShell» от имени администратора, как это было показано ранее, а затем выполните команду.
PowerShell Get-SmbServerConfiguration | Select EnableSMB1Protocol
Наличие в столбце «EnableSMB1Protocol» значения «True» означает, что сервер настроен корректно и готов к работе. В противном случае вам необходимо выполнить настройку вручную. Для этого сделайте следующие действия:
- Впишите в «Windows PowerShell» команду
Set-SmbServerConfiguration -EnableSMB1Protocol $true
и нажмите Enter, чтобы ее выполнить.При появлении запроса подтверждения впишите символ «Y» (без кавычек) и нажмите по клавише Enter. Это нужно для завершения выполнения команды.
- После этого окно консоли вы можете закрыть, оставшиеся действия выполняются в «Редакторе реестра». Откройте его через системный поиск или утилиту «Выполнить», вызываемую сочетанием клавиш Win + R. Вставьте в поле «Открыть» команду
regedit
и кликните по кнопке «ОК».При появлении диалогового окна контроля учетных записей кликните по кнопке «Да», чтобы разрешить запуск «Редактора реестра».
- В появившемся окне приложения воспользуйтесь древовидной структурой каталогов в левой части интерфейса, чтобы перейти по указанному далее пути. Вы также можете сделать это намного быстрее — вставив адрес в адресную строку, находящуюся сверху. Просто скопируйте путь и вставьте его туда, а для перехода нажмите по клавише Enter.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- Находясь в целевой директории, найдите в ней параметр под названием «SMB1» и откройте его свойства. Для этого щелкните по нему правой кнопкой мыши и из появившегося контекстного меню выберите пункт «Изменить».
- В поле «Значение» введите цифру «1» (без кавычек) и нажмите по кнопке «ОК», чтобы сохранить внесенные изменения.
Как только все описанные действия будут выполнены, настройку серверной части службы Samba можно считать оконченной.
Шаг 3: Подключение
Теперь, когда служба SMB настроена, можно непосредственно пробовать подключаться к серверу. Делается это стандартным способом через меню сетевого диска. Открыть его вы можете через файловый менеджер «Проводник». По итогу вам нужно будет присвоить букву новому диску, ввести адрес сервера Samba и нажать на «Готово». Подробнее об этом рассказывается в другой статье на нашем сайте. Ознакомиться с ее содержанием вы можете посредством следующей ссылки.
Подробнее: Как подключить сетевой диск в Windows 10
Читайте также: Что делать, если не удается подключить сетевой диск в Windows 10
Наша группа в TelegramПолезные советы и помощь