Подключить сетевой диск windows в centos

В этой статье: Монтируем расшаренный Windows-каталог в CentOS 7 • centos, mount, samba, smb • Администрирование Linux: CentOS, Debian, Ubuntu •

Устанавливаем утилиту cifs-utils

[root@localhost ~]# yum install cifs-utils

Добавляем пользователей

[root@localhost ~]# useradd -u 5000 UserPackages
[root@localhost ~]# useradd -u 5001 UserTraffic
[root@localhost ~]# groupadd -g 6000 share_library
[root@localhost ~]# usermod -G share_library -a UserPackages
[root@localhost ~]# usermod -G share_library -a UserTraffic

Создаем каталоги, в которые будем монтировать расшаренные windows-ресурсы

[root@localhost ~]# mkdir /mnt/Packages
[root@localhost ~]# mkdir /mnt/Traffic

Создаем файл с настройками доступа к расшаренным windows-ресурсам и задаем права на этот файл

[root@localhost ~]# nano /root/smb_user
username=user
domain=DOMAIN
password=password
[root@localhost ~]# chmod 0600 /root/smb_user

Монтируем

[root@localhost ~]# mount.cifs \\192.168.0.15\Packages /mnt/Packages -o credentials=/root/smb_user,uid=5000,gid=6000
[root@localhost ~]# mount.cifs \\192.168.0.15\Traffic /mnt/Traffic -o credentials=/root/smb_user,uid=5001,gid=6000

Команды для размонтирования:

[root@localhost ~]# umount /mnt/Packages
[root@localhost ~]# umount /mnt/Traffic

Автоматическое монтирование каталогов при последующей загрузке операционной системы

Открываем файл /etc/fstab в текстовом редакторе и добавляем в конце файла строки:

[root@localhost ~]# nano /etc/fstab
\\192.168.0.15\Packages /mnt/Packages    cifs    credentials=/root/smb_user,uid=5000,gid=6000 0 0
\\192.168.0.15\Traffic /mnt/Traffic   cifs    credentials=/root/smb_user,uid=5001,gid=6000 0 0

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

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

Монтирование SMB не что иное как подключение сетевой папки WIndows в Linux. SMB (Server Message Block) — сетевой протокол удаленного доступа к сетевым ресурсам (файлы, папки, принтеры и т.п.). В первой версии протокола был известен также как CIFS (Common Internet File System). Протоком SMB повсеместно используется во всех ОС Microsoft Windows.

В современных дистрибутивах Linux уже можно совершенной спокойно путешествовать по сетевым дискам. Но куда удобнее если смонтировать сетевой диск сразу в папку, да еще и на рабочем столе, красота. Я создал папку с общим доступом на сервере Hyper-V, её и буду монтировать. Монтирование SMB буду делать под специально заведенным пользователем, дабы не светить пароль админа.

Монтируемая папка

Монтируемая директория доступна только администраторам и пользователю smb (создан специально для монтирования). Сделать общую папку на сервере Windows можно двумя способами: 1 — через свойства папки; 2 — через Powershell. Через свойства папки проще и быстрее как для новичка.

Но в моем случае с сервером HyperV 2019 сработал только второй способ, через Powershell.

New-SmbShare -Name "smb_mount" -Path "F:smb_mount" -FullAccess "Administrator", "smb"

Данной командой я сделал общей папку расположенную по пути F:smb_mount и присвоил ей имя smb_mount. Права на доступ к папке выдал пользователю Administrator и smb.

Общая папка у меня доступна по пути \hvs19smb_mount, но монтировать я буду ее по ip адресу. Принципиального вопроса как монтировать нет, просто не всегда есть возможность использовать имя.

С монтируемой папкой закончили, создадим папку куда будем монтировать. Я создал папку в /opt и назвал её F (по имени диска где лежит монтируемая папка) для удобства.

Установим набор утилит для монтирования SMB

Для Ubuntu (и прочих Debian`ов)

sudo apt-get install cifs-utils

Для Centos 8 (и прочих RPM дистрибутивов на YUM)

sudo yum install cifs-utils
Монтирование SMB

Все необходимые папки мы создали, теперь приступим к монтированию файловой системы.

sudo mount -t cifs -o username=smb,password=пароль //192.168.1.110/smb_mount /opt/F

Пройдемся по параметрам:

  • -t cifs — тип файловой системы cifs (полностью совместим с SMB)
  • username — пользователь у которого есть доступ к монтируемой папке (на сетевом диске). Если разрешено, можно использовать гостя, без пароля. В таком случае указываем username=guest
  • password — пароль от учетной записи этого пользователя
  • //192.168.1.110/smb_mount — общая папка на сервере которую монтируем
  • /opt/F — папка куда монтируем.

Посмотрим что все получилось, проверим свободное место в сетевой папке

Можно использовать дополнительные возможности при монтировании, используя ключи после параметра -o. Вот некоторые из них

  • rw — запись и чтение
  • ro — только чтение
  • iocharset=utf8 — в данной кодировке будет выводится информация;
  • codepage=cp866 — кодировка используемая на сервере с общей папкой. Обычно Windows устанавливает кодировку cp866.
  • vers=3.0 — принудительно указать версию подключения SMB протокола. Для безопасного подключения используйте последнюю версию.

Используя команду mount мы монтируем папку в ручном режиме и после перезагрузки монтирования не произойдет. Для автоматического монтирования папки читаем следующий раздел.

Автоматическое монтирование SMB

Для постоянного монтирования папке при старте системы необходимо внести изменения в файл /etc/fstab. При монтировании сетевого диска с SMB используется пароль. Для большей сохранности не будем указывать его в файле fstab, а сохраним в директории root.

Создадим файл с учетными данными

Добавим в файл строки: имя пользователя, пароль, домен (если используется). У меня домена нет, поэтому добавлю только имя и пароль

username=smb
password=пароль
domain=mydomain

Откроем файл /etc/fstab для редактирования

Добавим новую строку в конец файла

//192.168.1.110/smb_mount /opt/F   cifs   user,rw,credentials=/root/.cifsmnt 0 0

Сохраним файл и перезагрузим компьютер. После этого сетевая папка будет монтироваться автоматически.

Разберем указанные параметры

  • //192.168.1.110 — ip адрес сервера где находится сетевая папка
  • /smb_mount — сетевая папка на указанном выше сервере
  • /opt/F — папка на локальном компьютере куда будем монтировать сетевую папку
  • cifs — тип монтируемой файловой системы
  • user — разрешение монтировать для любого пользователя
  • rw — разрешения на чтение/запись на диск при монтировании
  • credentials — путь к файлу с данными учетной записи используемых для подключения по SMB
  • 0 — не использовать дамп
  • 0 — не проверять файловую систему при старте программой fsck
Права на папки и файлы

Примонтированный диск по умолчанию монтируется от root и разрешает запись на диск только под ним. Рассмотрим опции позволяющие изменить доступ на примонтированные папки и файлы. Также рассмотрим настройки по смене владельца смонтированной папки.

  • uid — задает владельца каталога. Узнать uid пользователей можно в файле /etc/passwd
  • gid — задает группу владельца каталога. Узнать gid групп можно в файле /etc/passwd
  • file_mode=0777 — права на доступ к файлам. 0777 — разрешено запись/чтение всем.
  • dir_mode=0777 — права на доступ к папкам. 0777 — разрешено запись/чтение всем.

Пример записи в файле /etc/fstab монтирования от моего пользователя (не root) с полным доступом ко всем файлам и папкам

//192.168.1.110/smb_mount /opt/F   cifs   user,rw,credentials=/root/.cifsmnt,file_mode=0777,dir_mode=0777,uid=1000,gid=1000 0 0
Размонтирование SMB

Размонтировать сетевую папку SMB можно используя команду umount

В параметрах команды umount указываем директорию куда была смонтирована сетевая папка. В моем случае это /opt/F

Если смонтированная файловая система сейчас занята, появится сообщение umount: target is busy . В таком случае размонтировать получиться с ключом -l

Решение проблем монтирования

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

grep "cifs" /var/log/syslog

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

Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.

Обновлено Обновлено: 07.10.2021
Опубликовано Опубликовано: 02.12.2019

Используемые термины: Samba, CentOS, SMB.

Samba позволяет настроить файловое хранилище различных масштабов — от малых офисов для крупных организаций. В данной инструкции мы рассмотрим процесс настройки файлового сервера. Сначала мы выполним установку и базовую настройку с предоставлением гостевого доступа. После будет приведены примеры разграничения доступа по пользователям, группам и пользователям Active Directory.

Подготовка сервера к работе
    Настройка времени
    Брандмауэр
    SELinux
Установка и запуск сервиса Samba
Создание первой шары с гостевым доступом
Настройка доступа к папке по логину и паролю
Доступ к папке для пользователей и групп
Авторизация через Active Directory
    Подключение к домену Windows
    Настройка сетевой папки
    Расширенные права ACL
Помещение удаленных файлов в сетевую корзину
Настройка клиентов для подключения к шаре
    Windows
    Linux
Некоторые полезные опции Samba
    hosts allow
    hosts deny
    interfaces
    force user/group

Подготовка сервера

1. Время

Для корректного отображения дат, необходимо позаботиться о синхронизации времени. Для этого будем использовать демон chrony. Установим его:

dnf install chrony

Разрешим автозапуск и стартанем сервис:

systemctl enable chronyd

systemctl start chronyd

2. Брандмауэр

По умолчанию, в системах CentOS брандмауэр (firewalld) запрещает все соединения. Необходимо разрешить сервис samba. Также в нашей системе может использоваться система управления брандмауэром iptables. Рассмотрим оба варианта.

а) Если используется firewalld.

Выполняем команду:

firewall-cmd —permanent —add-service=samba

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

firewall-cmd —reload

б) Если используется iptables.

По умолчанию, iptables разрешает все соединения. Но если в нашем случае мы настроили брандмауэр на запрет пакетов, необходимо открыть порты:

iptables -I INPUT -p tcp —dport 445 -j ACCEPT

iptables -I INPUT -p udp —dport 137:138 -j ACCEPT

iptables -I INPUT -p tcp —dport 139 -j ACCEPT

* где порт 445 используется для samba, а порты 137138 и 139 — для работы NetBIOS (использование имени компьютера для доступа).

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

service iptables save

3. SELinux

Система безопасности SELinux будет блокировать все попытки подключиться к удаленной папке. Необходимо создать политику для каталога, в котором будут находиться общие папки. Для этого устанавливаем пакеты для управления политиками:

dnf install policycoreutils setroubleshoot

Теперь создаем само правило. Например, если мы планируем использовать каталог /data, то вводим команды:

mkdir /data

* на случай, если каталога еще нет, создаем его.

semanage fcontext -a -t samba_share_t «/data(/.*)?»

restorecon -R -v /data

Или можно просто отключить SELinux.

Установка и запуск Samba

Установка выполняется из репозитория одной командой:

dnf install samba

Разрешаем автостарт сервиса и запускаем его:

systemctl enable smb —now

И проверим, что сервис запустился: 

systemctl status smb

Проверяем, что сервер самба позволяет к себе подключиться. Для этого можно с компьютера обратиться к серверу по SMB, например, на компьютере с Windows это можно сделать из проводника, прописав путь к серверу с двух слэшей:

Пример подключения к SMB шаре с компьютера на Windows

* в данном примере мы подключаемся к серверу Samba с IP-адресом 192.168.1.15.

Если мы настроили сервер правильно, система должна запросить пароль на подключение к Samba. Отказываемся его вводить. На данном этапе проверка закончена.

Разберем самый простой пример предоставления доступа к папке — анонимный доступ всем пользователям без запроса пароля.

Открываем на редактирование конфигурационный файл samba:

vi /etc/samba/smb.conf

В секцию [global] добавляем:


map to guest = Bad Password

И добавляем настройку для общей папки:

[Общая папка]
    comment = Public Folder
    path = /data/public
    public = yes
    writable = yes
    read only = no
    guest ok = yes
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777

* где: 

  • [Общая папка] — имя общей папки, которое увидят пользователи, подключившись к серверу.
  • comment — свой комментарий для удобства.
  • path — путь на сервере, где будут храниться данные.
  • public — для общего доступа. Установите в yes, если хотите, чтобы все могли работать с ресурсом.
  • writable — разрешает запись в сетевую папку.
  • read only — только для чтения. Установите no, если у пользователей должна быть возможность создавать папки и файлы.
  • guest ok — разрешает доступ к папке гостевой учетной записи.
  • create mask, directory mask, force create mode, force directory mode — при создании новой папки или файла назначаются указанные права. В нашем примере права будут полные.

Создаем каталог на сервере и назначим права:

mkdir -p /data/public

chmod 777 /data/public

Применяем настройки samba, перезагрузив сервис:

systemctl restart smb

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

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

Открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

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

[Папка сотрудников]
    comment = Staff Folder
    path = /data/staff
    public = no
    writable = yes
    read only = no
    guest ok = no
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777

* эти настройки, во многом, похожи на те, что использовались в примере выше. Вот основные различия:

  • path = /data/staff — используем новый путь до папки.
  • public = no — запрещаем публичный доступ.
  • guest ok = no — не разрешаем гостевое подключение.

Создаем каталог для новой папки:

mkdir /data/staff

Задаем права на созданный каталог:

chmod 777 /data/staff

Создаем пользователя в системе Linux:

useradd staff1

* где staff1 — имя пользователя.

Задаем пароль для пользователя:

passwd staff1

Теперь создадим пользователя в samba:

smbpasswd -a staff1

Перезапускаем samba:

systemctl restart smb

Пробуем зайти на сервер — общую папку мы должны открыть без авторизации, а при попытке открыть папку сотрудников должно появиться окно ввода логина и пароля.

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

Теперь создадим папку, доступ к которой будут иметь ограниченное количество пользователей.

Открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

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

[Приватная папка]
    comment = Private Folder
    path = /data/private
    public = no
    writable = no
    read only = yes
    guest ok = no
    valid users = admin, staff2, staff3, @privateusers
    write list = admin, staff2
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777
    inherit owner = yes

* стоит обратить внимание на следующие настройки:

  • path = /data/private — используем новый путь до папки.
  • writable = no и read only = yes — в данном примере мы разрешим запись в каталог только некоторым пользователям. Поэтому общие настройки, разрешающие запись в папку, должны быть запрещены.
  • valid users — список пользователей, которым разрешено подключаться к каталогу. В данном примере разрешения работают для пользователей admin, staff2 и staff3, а также для всех, кто входим в группу privateusers.
  • write list — список пользователей, которые имеют доступ к папке на чтение и запись. В данном примере мы разрешаем это только для пользователей admin и staff2.
  • inherit owner — опция позволяем включить наследование владельца при создании папок и файлов.

* если мы хотим, чтобы доступ к каталогу был полный у определенных пользователей (без разделения на тех, кто может только читать и тех, кто может также писать в папку), то опцию write list можно не указывать, а опции writable и read only оставить как в примерах выше.

Создаем каталог для новой папки:

mkdir /data/private

Задаем права на созданный каталог:

chmod 777 /data/private

Для применения настроек перезапускаем samba:

systemctl restart smb

Проверяем возможность работы с новым каталогом.

Авторизация с Active Directory

Разберем пример конфигурирования файлового сервера samba в домене Windows и настроим авторизацию пользователей на базе LDAP Active Directory.

Подключение к Active Directory

Введем наш сервер в домен. Сначала необходимо убедиться, что сервер доступен по своему доменному имени. Если серверу так и не было задано вменяемого имени, вводим команду:

hostnamectl set-hostname samba.dmosk.local

* где samba — имя сервера; dmosk.local — домен.

После добавляем в DNS наш сервер samba. Ждем минут 15, если у нас используется доменная инфраструктура с несколькими сайтами.

Устанавливаем необходимые компоненты:

dnf install samba-client samba-winbind samba-winbind-clients krb5-workstation

Открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

В разделе [global] редактируем следующие опции:

workgroup = DMOSK
security = ads

* где DMOSK — NETBIOS имя домена; ads — указывает, что для samba будет использоваться модель безопасности LDAP Active Directory.

Также в [global] добавим следующие строки:

kerberos method = secrets and keytab
realm = DMOSK.LOCAL
winbind enum groups = Yes
winbind enum users = Yes
idmap config * : rangesize = 1000000
idmap config * : range = 1000000-19999999
idmap config * : backend = autorid

* где:

  • kerberos method — метод проверки kerberos. В данном примере сначала используется secretts.tdb, а затем системная таблица ключей.
  • realm — сервер Active Directory. В нашем примере прописан домен, так как по нему можно обратиться к любому из серверов AD.
  • winbind enum groups — задает пределы перечисления групп через setgrent(), getgrent() и endgrent().
  • winbind enum users — задает пределы перечисления пользователей через setpwent(), getpwent()и endpwent().
  • idmap config * : rangesize — определяет количество доступных uids и gids в каждом доменном диапазоне.
  • idmap config * : range — определяет доступные совпадающие диапазоны uid и gid, для которых серверная часть является авторитетной.
  • idmap config * : backend — задает idmap плагин для использования в качестве SID/uid/gid подсистемы

Вводим сервер в домен: 

net ads join -U Administrator@dmosk.local

* где Administrator — учетная запись пользователя AD с правами на ввод компьютеров в домен; dmosk.local — наш домен.

Мы должны увидеть, примерно, следующее:

Using short domain name — DMOSK
Joined ‘SAMBA’ to dns domain ‘dmosk.local’

Разрешаем автозапуск winbind и стартуем его:

systemctl enable winbind —now

Выбираем профиль для аутентификации:

authselect select winbind —force

Проверяем, что наш сервер может получить список пользователей Active Directory:

wbinfo -u

… и групп:

wbinfo -g

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

Открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

Создаем шару:

[AD]
    comment = Folder for AD users
    path = /data/ad
    public = no
    writable = yes
    read only = no
    guest ok = no
    valid users = «@DMOSKDomain Users» «@DMOSKDomain Admins»
    create mask = 0777
    directory mask = 0777
    force create mode = 0777
    force directory mode = 0777
    inherit owner = yes

* в данном примере мы будем шарить папку на сервере /data/ad; мы предоставим доступ всем пользователям групп Domain Users и Domain Admins домена DMOSK.

Создаем каталог и задаем права:

mkdir /data/ad

chmod 777 /data/ad

Теперь можно перезапустить самбу:

systemctl restart smb

Пробуем подключиться к серверу. У нас должна появиться еще одна папка ad

Права ACL

И в продолжение разговора о интеграции с AD, попробуем настроить ACL для более тонкого предоставления прав доступа.

Для этого снова открываем конфигурационный файл samba:

vi /etc/samba/smb.conf

В раздел [global] добавим:

acl compatibility = auto

… и создадим новую шару:

[AD ACL]
    comment = Folder for AD ACL
    path = /data/adacl
    public = no
    writable = yes
    read only = no
    guest ok = no
    admin users = «@DMOSKDomain Admins»
    inherit acls = yes
    inherit owner = yes
    inherit permissions = yes
    map acl inherit = yes

* где admin users — пользователи, которые могут менять права папки; inherit acls — наследование acl прав; inherit permissions — наследование прав от папки родителя; map acl inherit — использовать ли схему контроля доступа, хранимую в Windows ACL.

Создаем каталог и задаем права:

mkdir /data/adacl

chmod 777 /data/adacl

Перезапускаем самбу:

systemctl restart smb

Подключаемся к нашей созданной общей папке. Кликаем по ней правой кнопкой мыши — выбираем свойства. На вкладке «Безопасность» мы можем менять права:

Смена прав доступа с помощью ACL

Сетевая корзина

При удалении файлов из общей папки, данные удаляются навсегда. Но мы можем настроить сетевую корзину — скрытый каталог, в который будут перемещаться удаляемые с самбы объекты.

Открываем конфигурационный файл:

vi /etc/samba/smb.conf

Создаем шару:

[Recycle]
   comment = Snap Directories
   path = /data/recycle
   public = yes
   browseable = yes
   writable = yes
   vfs objects = recycle
   recycle:repository = .recycle/%U
   recycle:keeptree = Yes
   recycle:touch = Yes
   recycle:versions = Yes
   recycle:maxsize = 0
   recycle:exclude = *.tmp, ~$*
   recycle:exclude_dir = /tmp

* где:

  • vfs objects = recycle — использовать подсистему recycle.
  • recycle:repository — где хранить удаленные объекты. В данном примере удаленные файлы попадут в скрытый каталог .recycle к котором создастся каталог с именем пользователя, удалившего файл или папку.
  • recycle:keeptree — удалять объекты с сохранение дерева каталогов.
  • recycle:touch — изменить ли дату изменения файла при его перемещении в корзину.
  • recycle:versions — при удалении файлов с совпадающими именами, добавлять номер версии.
  • recycle:maxsize — не помещать в корзину файлы, размер которых больше заданного параметра (в байтах). В данном примере, помещать файлы любого размера.
  • recycle:exclude — исключить файлы.
  • recycle:exclude_dir — исключить каталог.

Создаем каталог и задаем права:

mkdir /data/recycle

chmod 777 /data/recycle

Перезапускаем самбу:

systemctl restart smb

Пробуем зайти в сетевой каталог Recycle и создать, а после удалить файл. Он должен оказаться к скрытой папке .recycle.

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

mkdir /scripts

vi /scripts/cleanrecycle.sh

#!/bin/bash

recyclePath=»/data/recycle/.recycle»
maxStoreDays=»30″

/usr/bin/find $recyclePath -name «*» -ctime +$maxStoreDays -exec rm {} ;

* в данном скрипте мы ищем все файлы в каталоге /data/recycle/.recycle, которые старше 30 дней и удаляем их.

Разрешаем запуск скрипта:

chmod +x /scripts/cleanrecycle.sh

Создаем задание в планировщике:

crontab -e

0 5 * * * /scripts/cleanrecycle.sh

* в данном примере мы будем запускать скрипт по очистке сетевой корзины каждый день в 05:00.

Подключение к шаре

Теперь разберем примеры подключения к нашим шарам из разных систем.

Windows

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

Пример подключения к SMB шаре с компьютера на Windows

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

Подключение сетевого диска в Windows

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

Прописываем путь до сетевой папки, на которую хотим сделать сетевой диск

Сетевой диск настроен.

Но мы может сделать те же действия из командной строки:

net use x: \samba.dmosk.localAD ACL /persistent:yes

* где x: — имя сетевого диска; \samba.dmosk.localAD ACL — путь до сетевого каталога; persistent:yes — указывает на то, что нужно восстанавливать данный диск каждый раз при входе в систему.

Linux

Монтирование

В Linux мы можем монтировать удаленный каталог с помощью команды mount, например:

mount -t cifs «//192.168.1.15/ad» /mnt -o user=dmosk

* где 192.168.1.15 — IP-адрес сервера; mnt — каталог, куда монтируем сетевую шару; dmosk — пользователь, под которым выполняем подключение к сетевому каталогу.
** в систему должен быть установлен пакет cifs-utils.

Подробнее, процесс монтирования описан в инструкции Как в Linux монтировать шару CIFS.

SMB Browser

Также мы можем увидеть содержимое удаленных папок на samba при помощи клиента smb. Для начала установим данного клиента:

а) на Red Hat / CentOS / Fedora:

yum install samba-client

б) на Debian / Ubuntu / Mint:

apt-get install samba-client

После вводим команду:

smbclient -L 192.168.1.15 -U staff@dmosk.local

* где 192.168.1.15 — сервер samba, к которому мы пытаемся подключиться; staff@dmosk.local — учетная запись, под которой выполняется подключение.

… мы получим список каталогов, которые расшарены на сервере.

Также мы можем подключиться к конкретной папке, например:

smbclient \\192.168.1.15\ad -U staff@dmosk.local

Мы подключимся клиентом samba — можно выполнить запрос на показ содержимого:

smb: > ls

Или полный список возможных команд:

smb: > help

Некоторые опции Samba

Рассмотрим некоторые полезные опции, которые могут пригодится при настройке Samba.

1. hosts allow

Параметр задает список разрешенных хостов или сетей, с которых можно подключаться к серверу. Если его прописать в секцию с настройкой шары, то он будет действовать только для нее, если прописать в [global], то для всех общих папок.

Пример использования параметра.

hosts allow = comp1, 192.168.1., 192.168.160.0/255.255.252.0

* в нашем примере мы разрешим доступ только для компьютера comp1, компьютеров из сетей 192.168.1.0/24 и 192.168.160.0/22.

2. hosts deny

Параметр аналогичный hosts allow, только он наоборот — запрещает доступ для хостов и сетей. Например:

hosts deny = comp2, 192.168.2., 192.168.164.0/255.255.252.0

hosts deny = ALL EXCEPT 192.168.3.

3. interfaces

По умолчанию samba использует все сетевые интерфейсы, кроме локальной петли (127.0.0.1). Параметр interfaces позволит указать, на каком сетевом адаптере файловый сервер должен принимать запросы. Пример:

interfaces = ens32 192.168.1.15/24 192.168.2.15/255.255.255.0

4. Force User/Group

Опции force user и force group позволяют задать пользователя и группу, от которых будет работать подключение пользователя к samba. Параметр может оказаться полезным для создания шары из каталога с уже назначенным владельцем, которого мы не хотим менять.

Прописывается для шары:

force user = apache
force group = apache

* данная настройка позволит подключаться к шаре под пользователем apache.

В операционных системах Linux и UNIX общий ресурс Windows можно смонтировать в определенной точке монтирования в дереве локальных каталогов, используя cifsпараметр mount команды.

Общая файловая система Интернета (CIFS) — это сетевой протокол обмена файлами. CIFS является формой SMB.

Установка пакетов утилит CIFS 

Чтобы смонтировать общий ресурс Windows в системе Linux, сначала необходимо установить пакет утилит CIFS.

  • Установка утилит CIFS в Ubuntu и Debian:

    sudo apt updatesudo 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-credentialssudo 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 параметром.

Overview

In this tutorial, you will learn how to mount SMB shares on CentOS 7. You will be guided through the process for both desktop and server installations of the operating system.

CentOS provides support for mounting Microsoft CIFS or SMB shares. Not just limited to shares hosted from Microsoft Windows, we can also mount shares from any network device that uses the SMB protocol. This includes just about any NAS device on the market.

If you understand how to mount SMB shares on earlier versions of Red Hat Enterprise Linux or CentOS, the instructions are identical.

Share Configuration

For this tutorial, I prepared a share named Core Library on a Windows Server 2012 R2 server that is a member of an Active Directory domain.

TABLE1Windows File Server

Hostname Operating System Share Path SMB Version
WS12FS01 Windows Server 2012 R2 \WS12FS01librariescore 2.0

For the share permission on WS12FS01, we grant Full Control to Everyone. Don’t be fooled into thinking this is insecure. Although everyone has access to the share, the NTFS permissions on the volume hosting the share overrule the share permissions. By leaving Everyone and granting full control, we save our selves work by only having to manage permissions on the file system itself.

FIG1 - Windows Share Permissions

FIG1Windows Share Permissions

For the NTFS permissions, we created an Active Directory account named _share_library_core and granted it Modify, Read & Execute, List folder contents, Read, and Write. The account will be used when we mount the share onto CentOS 7.

FIG2 - NTFS Share Permissions

FIG2NTFS Share Permissions

We use an Active Directory account in this tutorial as an example of how someone would accomplish this in an enterprise environment.

However, an Active Directory account is not required. As long as the CentOS server has an account that can authenticate successfully on the host publishing the share, it doesn’t matter where the account actually exists – in Active Directory or locally on the file server itself.

Preparing CentOS 7 for Mounting SMB Shares

A default CentOS 7 build will not be able to mount SMBCIFS shares, unless you customized the install. We’ll need to install a package onto the server that allows it to understand the SMB protocol.

  1. Install the cifs-utils package from the default CentOS yum repository.
    yum install cifs-utils
  2. Next, we need an account on the CentOS server that will map to the Windows account granted permission to the SMB share, _share_library_core. We’ll create a service account named svc_library_core with a user id (UID) of 5000.
    useradd -u 5000 svc_library_core
  3. We also want a group on the CentOS server that will map to the share. This group will contain all of the Linux accounts that will need access to the share. Our account will be called share_library_core and it will have a group id (gid) of 6000.
    groupadd -g 6000 share_library_core
  4. Finally, add any Linux accounts that require access to the SMB share to the newly created Linux group. I have an existing account named user1 that I will add to the share_library_core group.
    usermod -G share_library_core -a user1

Mounting an SMB Share

We are now ready to mount our SMB share. In the example below, we temporarily mount the SMB share onto our CentOS server. The share will remain mounted until the server is rebooted.

  1. Create a directory to mount the SMB share into. We’ll mount the share in a directory called lib_core.
    mkdir /lib_core
  2. Using the mount.cifs command, mount the SMB share into lib_core using the Active Directory user account _share_library_core. We need to map the UID of our svc_library_core account (5000) and the gid of our share_library_core group (6000) to the SMB share.
    mount.cifs \\WS12FS01\libraries\core /lib_core -o user=_share_library_core,pass="secret",uid=5000,gid=6000

    The extra backslashes () are not typos. Backslashes are used to escape certain characters. Because of this, we have to double up on them when accessing Microsoft shares.

  3. If no errors appeared, the share should successfully be mounted. The verify this, use the df command or the mount.

Hiding SMB USer Credentials

In the example above, we’re forced to enter the username and password into the command-line. This is a major security issue, as someone could browse your bash history to obtain the credentials, or they can see them while you type them in. Thankfully, there’s a way to address this problem by using a credentials file.

  1. If not Root, SU into the Root account.
    su - root
  2. Create a credentials file in Root’s home directory. I typically create this file in a sub-directory in Root’s home, for organizational reasons. But for this example, I will place it in /root.
    touch /root/creds_smb_library_core
  3. Modify the file’s permissions so that only the Root account is granted read permissions. No groups or other users should have access to the file.
    chmod 0600 /root/creds_smb_library_core
  4. Open the file in a text editor. I like using VI, but you can use whichever you prefer.
    vi /etc/root/creds_smb_library_core
  5. Add the following lines to the file. Remember to replace the username and password values so that they match your environment.
    username=_share_library_core
    password=secret
    TABLE2 – Credential file options

    username The Windows or Active Directory username granted permissions to the share on the Windows file server.
    password The password given to the username
  6. Save your changes to the credential file and exit the text editor.
  7. Mount the SMB share. However, instead of using the user and pass options, we instead use the credentials option and point to our credentials file.
    mount.cifs \\WS12FS01\libraries\core /lib_core -o credentials=/root/creds_smb_library_core,uid=5000,gid=6000

Persistent SMB Mounts using FSTAB

The downfall of the examples above is that the mounts are only temporary – the will not remount at system boot. The make the mount permanent we need to add it the fstab.

  1. Open /etc/fstab into a text editor.
    vi /etc/fstab
  2. Add the following line to your fstab. Remember to replace the values with those that match your environment.
    \\WS12FS01libraries\core /lib_core    cifs    credentials=/root/creds_smb_library_core,uid=5000,gid=6000 0 0
  3. Save your changes and exit the text editor.
  4. The SMB share will mount the next time the CentOS server is rebooted. To mount the share immediately, use the mount command.
    mount -a

CIFS —

один из спо­со­бов (про­то­кол) пере­да­чи дан­ных по сети с одно­го устрой­ства на дру­гое. Самый рас­про­стра­нен­ный при­мер исполь­зо­ва­ния — сете­вой диск или сете­вая пап­ка для обще­го досту­па. CIFS (Common Internet File System) так­же назы­ва­ют SMB (Server Message Block) — по сути, это одно и тоже.

Вер­сии:

  1. SMB или CIFS
  2. SMB 2.0
  3. SMB 3.0

Для рабо­ты CIFS/SMB необ­хо­дим порт 445 — по нему предо­став­ля­ет­ся уда­лен­ный доступ к сете­вым ресур­сам. А так­же для раз­ре­ше­ния имен NetBios исполь­зу­ют­ся пор­ты 137, 138 ,139 — без них обра­ще­ние к ресур­су воз­мож­но толь­ко по IP-адресу.

В Windows кли­ент и сер­вер встро­е­ны в опе­ра­ци­он­ную систе­му. В Linux про­то­кол может быть реа­ли­зо­ван с помо­щью samba.

Подготовка

Для мон­ти­ро­ва­ния общей пап­ки необ­хо­ди­мо уста­но­вить набор ути­лит для рабо­ты с CIFS.

yum install cifs-utils

Синтаксис

mount.cifs <пап­ка на сер­ве­ре> <во что мон­ти­ру­ем> <-o опции>

* вме­сто mount.cifs мож­но напи­сать mount -t cifs.

При­мер:

mount.cifs //192.168.1.1/public /mnt

* про­стой при­мер мон­ти­ро­ва­ния пап­ки public на сер­ве­ре 192.168.1.1 в локаль­ный ката­лог /mnt.

Ручное монтирование

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

mount.cifs //192.168.1.10/share /mnt -o user=andr

* в дан­ном при­ме­ре будет при­мон­ти­ро­ван ката­лог share на сер­ве­ре 192.168.1.10 в локаль­ную пап­ку /mnt под учет­ной запи­сью andr.

То же самое, с исполь­зо­ва­ни­ем домена:

mount.cifs //192.168.1.10/share /mnt -o user=andr,domain=andr.local

Автоматическое монтирование CIFS через fstab

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

vi /root/.smbclient

И добав­ля­ем в него дан­ные сле­ду­ю­ще­го вида:

username=andr
password=dPassw0rd
domain=andr.local

* в этом при­ме­ре созда­на пара логин/пароль — andr/dPassw0rddomain ука­зы­вать не обя­за­тель­но, если аутен­ти­фи­ка­ция выпол­ня­ет­ся без него.

Теперь откры­ва­ем кон­фи­гу­ра­ци­он­ный файл fstab:

vi /etc/fstab

и добав­ля­ем в него следующее:

//192.168.1.10/share /mnt cifs user,rw,credentials=/root/.smbclient 0 0

* в дан­ном при­ме­ре выпол­ня­ет­ся мон­ти­ро­ва­ние общей пап­ки share на сер­ве­ре с IP-адре­сом 192.168.1.10 в ката­лог /mnt. Пара­мет­ры для под­клю­че­ния — user: поз­во­ля­ет выпол­нить мон­ти­ро­ва­ние любо­му поль­зо­ва­те­лю, rw: с пра­вом на чте­ние и запись, credentials: файл, кото­рый мы созда­ли на преды­ду­щем шаге.

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

mount -a

Примеры использования опций

Версии SMB

Если на сто­роне Windows исполь­зу­ет­ся ста­рая или слиш­ком новая вер­сия про­то­ко­ла SMB, при попыт­ке мон­ти­ро­ва­ния мы можем полу­чить ошиб­ку mount error(112): Host is down. Что­бы это испра­вить, ука­зы­ва­ем версию:

mount.cifs //192.168.1.10/share /mnt/ -o vers=1.0

* мон­ти­ро­ва­ние по про­то­ко­лу SMB1.0

Монтирование от гостевой учетной записи

Если сер­вер при­ни­ма­ет запро­сы без логи­на и паро­ля, то кли­ент под­клю­ча­ет­ся, как гость:

mount.cifs //192.168.1.10/share /mnt -o guest

или в fstab:

//192.168.1.10/share    /mnt    cifs    guest    0 0

Права на примонтированные каталоги

При мон­ти­ро­ва­нии пап­ки мы можем ука­зать опре­де­лен­ные права:

mount.cifs //192.168.1.10/share /mnt -o file_mode=0777,dir_mode=0777

July 20 2016, 10:54

Будем монтировать общую папку на запись в Centos 6 через cifs
yum install cifs-utils
Для Centos 5
yum install samba-client samba-common cifs-utils ntfs-3g

Ручками в версии Centos 6
mount.cifs //192.168.1.128/Zvonki_H_NS /mnt/win -o iocharset=utf8,codepage=cp866,uid=100,gid=101,rw,user=admin%paSSword1 0 0
Ручками в версии Centos 7
mount.cifs \\192.168.1.128\Zvonki_H_NS /mnt/win -o user=admin,domain=DOMEN.LOCAL,pass=paSSword1
;
Разшифровка параметров для варианта Centos 6
192.168.1.128 — адрес машины с windows
Zvonki_H_NS — имя разшаренно папки на windows
/mnt/win — куда монтируем
rw — справа на запись и чтение

admin — имя пользователя в windows (под кем заходим для монтирования)
paSSword1 — пароль для windows пользователя
А вот теперь сложно: uid=100,gid=101 — над необходимо что бы права на файлы были  от пределенного пользователя Linux
для примера пускай будет пользователь asterisk
Делаем раз:

id asterisk

uid=100(asterisk) gid=101(asterisk) groups=101(asterisk)
И вот наши заветные цифры uid и gid

;
скрипт
Время от времени компьютер с windows все равно перезагружают, нам необходимо проверять раз в 10 минут, на месте ли смонтированный каталог
в crontab добавили строчку — */10 * * * * root /etc/mont-share.sh
И сам скрипт
;

#!/bin/sh

if mountpoint -q /mnt/win

then

echo «mounted»

else

echo «no mounted»

umount /mnt/win

mount.cifs //192.168.1.128/Zvonki_H_NS /mnt/win -o iocharset=utf8,codepage=cp866,uid=100,gid=101,rw,user=admin%paSSword1 0 0

mountpoint -q /mnt/win && echo «mounted» || echo «not mounted»

fi

;
Так же необходимо иметь строку в fstab — что бы при старте Linux машины папка сразу монтировалась
добвлять в самый конец
;
//192.168.1.128/Zvonki_H_NS /mnt/win -o iocharset=utf8,codepage=cp866,uid=100,gid=101,rw,user=admin%paSSword1 0 0

Понравилась статья? Поделить с друзьями:
  • Подлинная windows 7 home premium service pack 1 64 bit
  • Подключить сетевой диск windows 7 powershell
  • Подлагивает ноутбук что делать windows 10
  • Подключить сетевой диск windows 10 что это
  • Подлагивает windows 10 на мощном пк