LINUX.ORG.RU

Монтирование smb с данными локальной учётной записи

 , ,


0

1

Добрый день! Т.к., кастомизировать под свои нужды GtkFileChooserDialog не удалось, но он видит уже смонтированные сетевые шары, то появилась идея настроить автомонтирование smb шары при загрузке, при этом, данные для входа на шару должны использоваться те же, что и при входе в систему. Система в домене Windows(вводилось с помощью realm, логин с помощью pam), пользователи логинятся по учётным данным из AD, права доступа разграничены, поэтому такой вариант был бы идеален, но я не могу найти работающее решение. Пробовал использовать libpam_mount как написано тут https://wiki.ubuntu.com/MountWindowsSharesPermanently

Но либо я что-то делаю не так, либо оно не работает, т.к. информация давно устарела. Подошёл бы так же вариант использования скрипта, но я не знаю откуда брать учётные данные и как их указать в нём. Моя система: Ubuntu 20.10 (GNU / Linux 5.8.0-36-generic x86_64) с LXQt DE ver 0.15.0 Smb шара находится на FreeBSD 11.3-RELEASE-p11 (FreeNAS.amd64) and Samba 4.10.16 Ввод осуществляется с помощью одной команды realm join -U domain_admin domain. Изменил файл /etc/pam.d/common-session для создания домашнего каталога, добавив строку session optional pam_mkhomedir.so skel = / etc / skel / umask = 0077 p.s. извините за возможные ошибки и неточности, я новичок в Linux.

Попробовал метод отсюда - https://kubuntu.ru/node/14528 После чего стало невозможно войти с помощью сетевой учётки, якобы из-за некорректного пароля, хотя он точно верный. Пока что решает проблему только откат.

Попробовал метод отсюда - https://kubuntu.ru/node/14528

Как именно, просто заменили содержимое файлов в каталоге pam.d? Если у вас там пооьзователи по AD, то pam-настройки уже не дистрибутивные. Нужно не заменять, а просто добавить pam_mount.

mky ★★★★★ ()
Ответ на: комментарий от kirill_rrr

Если не критично хранить логин/пароль зашифрованными от пользователя. то может просто прописать их в /etc/fstab или позволить файлменеджеру их запомнить?

Спасибо за ответ, это рабочие варианты, но не совсем то, что мне нужно. Мне нежелательно хранить какие либо данные на компьютере, даже в зашифрованном виде. Так же мне нужно что бы любой человек из AD мог на любом компьютере получить соответствующий его учётке доступ, а их достаточно много, из-за чего предложенный вариант будет довольно муторно делать.

afptez ()
Ответ на: комментарий от mky

Как именно, просто заменили содержимое файлов в каталоге pam.d? Если у вас там пооьзователи по AD, то pam-настройки уже не дистрибутивные. Нужно не заменять, а просто добавить pam_mount.

Спасибо за ответ! Да, просто заменил всё по инструкции и не смог больше зайти под сетевой учёткой. После чего откатил и попробовал отредактировать только с добавлением pam_mount в мой конфиг, в систему захожу, автомаунт не работает, получаю ошибку:

/etc/security/pam_mount.conf.xml:2: parser error : XML declaration allowed only at the start of the document
<?xml version="1.0" encoding="utf-8" ?>
     ^
(rdconf1.c:401): libxml detected a syntax error in /etc/security/pam_mount.conf.xml

pam_mount.conf.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
        See pam_mount.conf(5) for a description.
-->

<pam_mount>

                <!-- debug should come before everything else,
                since this file is still processed in a single pass
                from top-to-bottom -->

<debug enable="0" />

                <!-- Volume definitions -->

<volume fstype="cifs" server="192.168.1.2" path="/mnt/FreeNas/Data" mountpoint="/mnt/1" options="user,owner,noexec,iocharset=utf8,rw" />

                <!-- pam_mount parameters: General tunables -->

<!--
<luserconf name=".pam_mount.conf.xml" />
-->

<!-- Note that commenting out mntoptions will give you the defaults.
     You will need to explicitly initialize it with the empty string
     to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />

<!-- requires ofl from hxtools to be present -->
<logout wait="0" hup="no" term="no" kill="no" />


                <!-- pam_mount parameters: Volume-related -->

<mkmountpoint enable="1" remove="true" />


</pam_mount>

afptez ()
Ответ на: комментарий от afptez

человек из AD мог на любом компьютере получить соответствующий его учётке доступ

Если комп заведён в домен AD, по-крайней мере через sssd, и пользователь входит под своей ad-учёткой, то у него есть керберос-тикет, по которому он может пройти аутентификацию на шаре. Из консольки это точно работает. Что в fstab для этого точно нужно я не помню. По идее sec=krb5 в параметрах монтирования.

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Если комп заведён в домен AD, по-крайней мере через sssd, и пользователь входит под своей ad-учёткой, то у него есть керберос-тикет, по которому он может пройти аутентификацию на шаре.

Спасибо за ответ! Раньше я использовал krb5 и вводил в домен с получением тикета, но сейчас он у меня даже не установлен (kinit, klist - команда не найдена), ввожу в домен командой realm join -U user server. Попробую чуть позже установить, настроить, получить тикет и автомонтировать с предложенной опцией.

afptez ()
Ответ на: комментарий от Ivan_qrt

Из консольки это точно работает.

Вы не могли бы подсказать точную команду?

Что в fstab для этого точно нужно я не помню.

Установил krb5-user, настроил, получил билет

Valid starting       Expires              Service principal
14.01.2021 13:07:27  14.01.2021 23:07:27  krbtgt/TEST.LOCAL@TEST.LOCAL
        renew until 15.01.2021 13:07:27

Но не сработало. fstab выглядит следующим образом:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/vgubuntu-root /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=1100-6FF4  /boot/efi       vfat    umask=0077      0       1
/dev/mapper/vgubuntu-swap_1 none            swap    sw              0       0
# nfs share
192.168.1.2:/mnt/FreeNAS/testnfs /home/user/testnfs nfs user,rw,vers=3 0 0
# smb share
//192.168.1.2/data     /mnt/1  cifs    uid=0,sec=krb5,iocharset=utf8,vers=3.0,noperm 0 0
//192.168.1.2/data     /mnt/2  cifs    sec=krb5,file_mode=0755,dir_mode=0755 0       0
//192.168.1.2/data     /mnt/3  cifs    rw,user,noauto,sec=krb5,domain=TEST.LOCAL 0 0

Перепробовал те варианты, которые нашёл в гугле.

afptez ()

Smb шара находится на FreeBSD 11.3-RELEASE-p11 (FreeNAS.amd64) and Samba 4.10.16

На askubuntu мне подсказали, что sssd некорректно работает с samba 4.8.0+, т.к. имеет отличную от него версию winbind, и из-за этого могут быть проблемы. До знакомства с realmd я вводил систему в домен с помощью Samba+Kerberos+Winbind. Подскажите, пожалуйста, в таком случае можно ли настроить автоматическое монтирование шар с учётными данными из winbind?

afptez ()
Ответ на: комментарий от afptez

Вы не могли бы подсказать точную команду?

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

До знакомства с realmd я вводил систему в домен с помощью Samba+Kerberos+Winbind. Подскажите, пожалуйста, в таком случае можно ли настроить автоматическое монтирование шар с учётными данными из winbind?

Я с самбовским winbind сразу словил пачку глюков, когда он работал, работал, а потом переставал. Так что почти сразу же перешёл на sssd и realmd. У меня с ним проблем не было, но я с ms ad работал, а не с самбой.

Попробуй сделать kinit на нужного пользователя под рутом и

mount -t cifs //192.168.1.2/data /mnt/3 --vebose -o sec=krb5

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

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

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

root@test1:~# mount -t cifs //192.168.1.2/data /mnt/3 --verbose -o sec=krb5
mount.cifs kernel mount options: ip=192.168.1.2,unc=\\192.168.1.2\data,sec=krb5,user=root,pass=********
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
root@test1:~# kdestroy
root@test1:~# klist
klist: No credentials cache found (filename: /tmp/krb5cc_0)
root@test1:~# kinit testuser
Password for testuser@TEST.LOCAL:
root@test1:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: testuser@TEST.LOCAL

Valid starting       Expires              Service principal
14.01.2021 19:02:10  15.01.2021 05:02:10  krbtgt/TEST.LOCAL@TEST.LOCAL
        renew until 15.01.2021 19:02:09

root@test1:~# mount -t cifs //192.168.1.2/data /mnt/3 --verbose -o sec=krb5
mount.cifs kernel mount options: ip=192.168.1.2,unc=\\192.168.1.2\data,sec=krb5,user=root,pass=********
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
root@test1:~#

Почему то пытается зайти с учётки рута, если захожу под юзером из АД, то

testuser@test.local@test1:~$ mount -t cifs //192.168.1.2/data /mnt/3 --verbose -o sec=krb5
mount.cifs: permission denied: no match for /mnt/3 found in /etc/fstab
testuser@test.local@test1:~$
afptez ()
Ответ на: комментарий от Ivan_qrt

А директория /mnt/3 есть? А то чего он пишет no such file or directory?

Папка точно есть, права 777 стоят на неё.

Ещё я тут вспомнил, что полезно smbclient’ом проверять

root@test1:~# smbclient -k '\\192.168.1.2\data'
Kerberos auth with 'testuser@TEST.LOCAL' (WORKGROUP\root) to access '192.168.1.2' not possible
session setup failed: NT_STATUS_ACCESS_DENIED

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

Если не заработает, то у него есть -d 3. Тоже нужно посмотреть, что скажет.

root@test1:~# smbclient -k -d 3 '\\192.168.1.2\data'
lp_load_ex: refreshing parameters
Initialising global parameters
Processing section "[global]"
added interface enp1s0 ip=192.168.1.11 bcast=192.168.1.255 netmask=255.255.252.0
Client started (version 4.12.5-Ubuntu).
Connecting to 192.168.1.2 at port 445
Kerberos auth with 'testuser@TEST.LOCAL' (WORKGROUP\root) to access '192.168.1.2' not possible
SPNEGO login failed: {Access Denied} A process has requested access to an object but has not been granted those access rights.
session setup failed: NT_STATUS_ACCESS_DENIED

Сегодня постараюсь настроить подключение к домену и шаре через Samba+Kerberos+Winbind. Совсем не хочется, потому что это намного более муторный вариант, но проверить стоит.

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

afptez ()
Ответ на: комментарий от afptez

c win10 захожу нормально

Так на всякий случай, с win10 ты тоже под testuser@TEST.LOCAL на \192.168.1.2\data заходишь? Судя по логу у учётки реально нет прав на эту папку, либо название папки не правильное. В общем у меня похожие проблемы обычно решаются каким-то моим тупняком, типа копирую опечатку из раза в раз.

Ещё не оставляет идея осуществить это с помощью скрипта.

AD и Ubuntu (комментарий)

Это было для седьмой центоси. Модифицировать для убунты не должно составить труда.

Ivan_qrt ★★★★★ ()