http://altlinux.org/Autofs
Попробовал autofs, ошибка ровно на том же месте.
/etc/auto.master
# Format of this file:
# mountpoint map options
# For details of the format look at autofs(8).
/- /etc/auto.tab -t 300
/etc/auto.tab
/mnt/smb -fstype=cifs,sec=krb5,domain=MY.DOMAIN,rw ://svr1/data
При попытке просмотреть содержимое каталога /mnt/smb journalctl -f сообщает мне примерно то же, что и в прошлый раз:
Спойлер
сен 15 23:10:25 comp01.my.domain kernel: CIFS: Attempting to mount //svr1/data
сен 15 23:10:25 comp01.my.domain kernel: No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: key description: cifs.spnego;0;0;39010000;ver=0x2;host=svr1;ip4=192.168.0.1;sec=krb5;uid=0x0;creduid=0x0;user=root;pid=0x1784
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: ver=2
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: host=svr1
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: ip=192.168.0.1
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: sec=1
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: uid=0
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: creduid=0
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: user=root
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: pid=6020
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: get_cachename_from_process_env: pid == 0
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: get_existing_cc: default ccache is KEYRING:persistent:0:0
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: get_tgt_time: unable to get principal
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: krb5_get_init_creds_keytab: -1765328203
сен 15 23:10:25 comp01.my.domain cifs.upcall[6023]: Exit status 1
сен 15 23:10:25 comp01.my.domain kernel: CIFS VFS: \\svr1 Send error in SessSetup = -126
сен 15 23:10:25 comp01.my.domain kernel: CIFS VFS: cifs_mount failed w/return code = -2
Аналогичные симптомы и при попытке реализовать монтирование через fstab по рекомендации:
Тут всего пара сообщений...
и
Нет необходимости создавать service. Они автоматически создадутся на основании записи в /etc/fstab:
//svr1/data /mnt/data cifs noauto,x-systemd.automount,<другие_опции> 0 0
При первом обращении к каталогу попытается смонтироваться.
Ошибка, мне кажется, где-то на уровне кербероса. Может быь, дело в этих двух строках из лога?
cifs.upcall[6023]: get_cachename_from_process_env: pid == 0
cifs.upcall[6023]: get_existing_cc: default ccache is KEYRING:persistent:0:0
А в случае успешного монтирования с костылём в виде указания в опциях cruid=DomainUser, где DomainUser -- пользователь из AD:
cifs.upcall[5908]: get_cachename_from_process_env: pathname=/proc/5905/environ
cifs.upcall[5908]: get_existing_cc: default ccache is KEYRING:persistent:613401187:krb_ccache_5gI0uWf
Дальше у меня головы не хватает, не могу понять, что маунту нужно.
Когда уже писал этот пост, попробовал костыль немного изменить, сделал в параметрах монтирования для autofs в auto.tab cruid=$USER и эта конструкция заработала!
Точнее говоря, не сразу заработала, при попытке монтирования journalctl -f вот что сказал:
Спойлер
сен 16 00:30:25 comp01.my.domain kernel: CIFS: Attempting to mount //svr1/data
сен 16 00:30:25 comp01.my.domain kernel: No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: key description: cifs.spnego;0;0;39010000;ver=0x2;host=svr1;ip4=192.168.0.1;sec=krb5;uid=0x0;creduid=0x248fc263;user=root;pid=0xe94
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: ver=2
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: host=svr1
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: ip=192.168.0.1
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: sec=1
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: uid=0
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: creduid=613401187
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: user=root
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: pid=3732
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: get_cachename_from_process_env: pathname=/proc/3732/environ
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: get_existing_cc: default ccache is KEYRING:persistent:613401187:krb_ccache_d72A20h
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: get_tgt_time: unable to get principal
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: krb5_get_init_creds_keytab: -1765328174
сен 16 00:30:25 comp01.my.domain cifs.upcall[3735]: Exit status 1
сен 16 00:30:25 comp01.my.domain kernel: CIFS VFS: \\svr1 Send error in SessSetup = -126
сен 16 00:30:25 comp01.my.domain kernel: CIFS VFS: cifs_mount failed w/return code = -2
пришлось доменному пользователю вручную получить билеты:
DomainUser@comp01 ~ $ klist
klist: Credentials cache keyring 'persistent:613401187:krb_ccache_d72A20h' not found
DomainUser@comp01 ~ $ kinit
Password for DomainUser@MY.DOMAIN:
DomainUser@comp01 ~ $ klist
Ticket cache: KEYRING:persistent:613401187:krb_ccache_d72A20h
Default principal: DomainUser@MY.DOMAIN
Valid starting Expires Service principal
16.09.2021 00:37:12 16.09.2021 10:37:12 krbtgt/MY.DOMAIN@MY.DOMAIN
renew until 23.09.2021 00:36:56
После этого монтирование прошло успешно. Если удастся решить этот вопрос с билетами, то конструкция с усовершенствованным костылём cruid=$USER меня вполне устроит. Остаётся только мелочёвка вроде того, как организовать пользователям быстрый доступ к смонтированным ресурсам (разложить на рабочий стол ярлыки на каталоги из /mnt/smb?)
Кстати, пока гуглил инфу, работая с этим постом, наткнулся на занятную схему расположения карт монтирования для autofs в виде объектов на LDAP-сервере, сначала нашёл
тут, а потом
тут. Выглядит очень заманчиво и при развёртывании на большом числе компов должно здорово экономить время. Попробовал повторить -- сходу не получилось. Пробовал кто-нибудь что-нибудь подобное?