Сбой монтирования общего ресурса cifs (с использованием пароля или билета kerberos krb5)
ВЕДУЩИЙ: Kubuntu 16.04.3 LTS
ЛОКАЛЬНОСТЬ: Kubuntu 17.10
Я больше не могу смонтировать общий ресурс cifs на терминале:
mount -t cifs -o user=USER,domain=DOMAIN //HOST/share /mnt/tmp
Password for USER@//HOST/share: *************
mount error(5): Input/output error
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
В системном журнале я нашел сообщения об ошибках при попытке:
Status code returned 0xc000005e STATUS_NO_LOGON_SERVERS
CIFS VFS: Send error in SessSetup = -5
CIFS VFS: cifs_mount failed w/return code = -5
Я уверен, что это рабочий ресурс с достаточными разрешениями для этого пользователя. Я могу запустить дельфина и открыть smb://HOST/ поделиться без проблем!
Моя система находится в среде Active Directory (realm, sssd), и я также попытался смонтировать, используя билет Kerberos, но не смог:
mount -t cifs -o user=USER,domain=DOMAIN,cruid=USER,sec=krb5 //HOST/Share /mnt/tmp
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
В системном журнале я нашел это сообщение об ошибке при попытке:
CIFS VFS: Send error in SessSetup = -2
CIFS VFS: cifs_mount failed w/return code = -2
SSO через Kerberos работает! Используя smb://HOST/share на dolphin, я могу открыть общий ресурс без пароля.
Также я могу войти в общий доступ, используя
smbclient -U USER //HOST/share
и я могу перечислить файлы там, используя 'ls'.
Я нашел кого-то с той же ошибкой в интернете, но он мог решить ее, удалив winbind. К сожалению, у меня не установлено winbind на обеих машинах, и для меня это не исправлено. Кто-то еще должен был добавить имя рабочей группы, что тоже не работает для меня. Также я обнаружил, что для монтирования использую другую версию smb. К сожалению, всегда происходит сбой с "cifs_mount faild w/return code = -5" (версии =1.0, версии =2.0, версии =2.1, версии =3.0, версии = 3.1.1).
Я мог воспроизвести эту ошибку между двумя клиентами с LTS или последней версией 16.04<->16.04 и 17.10<->17.10.
Интересно: монтирование работает, если я подключаю общий ресурс Windows, а не общий ресурс linux samba!
В чем причина ошибки cifs_mount -5?
Спасибо!
1 ответ
Я рекомендую вам использовать fstab для монтажа.
Попробуйте проверить журналы, чтобы выяснить причины вашей проблемы, попробуйте эту команду, чтобы отобразить список файлов, которые могут отображать журналы монтирования:
grep -e mount -e ext4 -lR /var/log 2> /dev/null
Для меня журналы монтирования были в /var/log/syslog это может отличаться для вас.
Теперь вам нужно открыть две вкладки терминала, введите команду на одной вкладке: sudo tail -f /var/log/syslog
И на второй вкладке попробуйте смонтировать систему с помощью следующей команды:
mount -t cifs -o user=USER,domain=DOMAIN,cruid=USER,sec=krb5 //HOST/Share /mnt/tmp
Если вы вернетесь к своей первой вкладке, вы увидите ошибки журнала. Для меня ошибки были (для вас это могут быть разные):
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.
kernel: CIFS VFS: protocol revalidation - security settings mismatch
kernel: CIFS VFS: session ffff90a6a2959000 has no tcon available for a dfs referral request
kernel: CIFS VFS: cifs_mount failed w/return code = -5
В зависимости от ваших журналов ошибок, вы можете уйти с добавлением vers=1.0 к вашей команде mount, и это может сработать, но это менее безопасная версия smb. В противном случае вы можете узнать, какое решение основано на полученной ошибке.
Также вы можете настроить сервер Samba внутри /etc/samba/smb.conf следующим образом (он работает для меня):
[username]
comment = Username's developer directory
read only = no
locking = no
path = /var/www/username
guest ok = no
writeable = yes
Затем на клиенте добавьте следующую строку в /etc/fstab
//server/username /mountpoint cifs vers=1.0,username=username,iocharset=utf8,uid=your_profile_uid_on_the_server 0 0
использование sudo mount /mountpint Посмотрите, как это происходит, надеюсь, эта информация будет полезна для вас.
Я хотел бы ответить на свой вопрос (решено):
Я помещаю своих клиентов в AD по областям, используя SSSD и без winbind. SSSD не поддерживает аутентификацию NTLM, поэтому аутентификация по имени пользователя и паролю работает не на общих ресурсах Linux Samba, а на общих ресурсах Windows. С samba 4.8 требуется winbind, поэтому я использую SSSD + winbind в комбинации. Теперь аутентификация пользователя / пароля на общих ресурсах samba работает!
Вы должны присоединить клиентов к AD с
realm join --user=$USER --user-principal=host/$(hostname -s)@DOMAIN --automatic-id-mapping=no --client-software=sssd --membership-software=samba --computer-name=$(hostname -s) --os-name="$(grep NAME /etc/os-release | head -1 | sed 's/NAME="\(.*\)"/\1/g')" --os-version=$(grep VERSION_ID /etc/os-release | sed 's/VERSION_ID="\(.*\)"/\1/g') DOMAIN
вашему smb.conf нужны опции [global], чтобы winbind использовал sss в качестве бэкэнда
idmap config DOMAIN : backend = sss
idmap config DOMAIN : range = <min>-<max>