Ошибка входа в Samba: сбой getpwuid

Я не могу получить доступ к удаленному диску с помощью Windows или smbclient; моя аутентификация кажется успешной согласно файлу журнала самбы, но getpwuid выходит из строя. Сервер (удаленный) работает под управлением CentOS 7.2 и Samba 4.2.3. Клиент CentOS 7.2 и клиент 4.2.3. Лог-файл показывает:

[2017/05/06 22:57:48.729284,  2] ../source3/auth/auth.c:305(auth_check_ntlm_password)
  check_ntlm_password:  authentication for user [developer_prod] -> [developer_prod] -> [developer_prod] succeeded
[2017/05/06 22:57:48.731091,  1] ../source3/auth/token_util.c:430(add_local_groups)
  SID S-1-5-21-4007675785-2624567327-467545301-1000 -> getpwuid(16777216) failed
[2017/05/06 22:57:48.731164,  1] ../source3/smbd/sesssetup.c:280(reply_sesssetup_and_X_spnego)
  Failed to generate session_info (user and group token) for session setup: NT_STATUS_UNSUCCESSFUL

Странно, SID соответствует локальному пользователю:

# wbinfo -s S-1-5-21-4007675785-2624567327-467545301-1000         
NY4010\developer_prod 1

(ny4010 - это мой компьютер-сервер samba) Несмотря на то, что на клиенте я вхожу в систему с помощью пользователя домена:

$ smbclient -U 'my_domain\developer_prod' \\\\ny4010\\release 'password'
session setup failed: NT_STATUS_UNSUCCESSFUL

Вот мой файл smb.conf:

[global]
   workgroup = MYDOMAIN
   password server = my_domain_server.mydomain.local
   realm = MYDOMAIN.LOCAL
   security = ads
   idmap config * : range = 16777216-33554431
   template homedir = /home/%U
   template shell = /bin/bash
   kerberos method = secrets only
   winbind use default domain = true
   winbind offline logon = false
   log level = 2
   encrypt passwords = yes
       unix extensions = no
        server string = Samba Server Version %v
        log file = /var/log/samba/log.%m
        max log size = 50
        security = ads
        passdb backend = tdbsam
        realm = MYDOMAIN.LOCAL
        password server = my_domain_server.mydomain.local
        local master = no
[homes]
        comment = Home Directories
        browseable = no
        writable = yes
[release]
       comment = Shared directory: /prod
       path = /prod
       browseable = yes
       read only = no
       valid users = developer_prod
       guest ok = yes
       public = yes
       follow symlinks = yes
       wide links = yes
       force user = developer_prod
[log]
       comment = Shared directory: /prod/log
       path = /prod/log
       browseable = yes
       read only = yes
       guest ok = yes
       public = yes

мой файл nsswitch.conf выглядит так: passwd: файлы winbind

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

2 ответа

У нас все работало до Samba версии 4.8.3 на Centos 7, оно ломалось с обновлением samba samba-4.9.1-6.el7.x86_64.

Я получаю эту ошибку:

[2019/10/04 11:28:52.458451, 2]../source3/auth/auth.c:316(auth_check_ntlm_password) check_ntlm_password: аутентификация для пользователя [singh] -> [singh] -> [singh] выполнена успешно

[2019/10/04 11:28:52.458736, 1] ../source3/auth/token_util.c:561(add_local_groups) SID S-1-5-21-xxxxxxxx-xxxxxxx-xxxxxxx-16811 -> getpwuid(50000) не удалось

Поэтому после нескольких часов устранения неполадок добавление winbind вместо sss в "/etc/nsswitch.conf" сработало.

passwd:     files winbind
shadow:     files
group:      files winbind

Также добавлены эти новые опции в smb.conf

idmap config *:backend = tdb
idmap config *:range = 1000-9999
## map ids from the domain  the ranges may not overlap !
idmap config LIBRARY : backend = rid
idmap config LIBRARY : range = 10000-999999

Очистить кэш Winbind

Как очистить кэш Winbind

Остановите службу Winbind:

      [root@danny root]#  service winbind stop

Остановите службу Samba, если она у вас есть:

      [root@danny root]#  service smb stop

Очистите кэш Samba Net:

      [root@danny root]#  net cache flush

Удалите кэш Winbind:

      [root@danny samba]# cd /var/lib/samba/
# mkdir old && mv *.tdb old/.

Запустите службу Samba, если она у вас есть:

      [root@danny samba]# service smb start

Запустите службу Winbind

      [root@danny samba]# service winbind start

Теперь вы можете проверить.

Другие вопросы по тегам