LINUX.ORG.RU
ФорумAdmin

Samba не вытягивает пароль пользователя из ldap

 , ,


0

1

OS: Gentoo.

Поставил LDAP, подключил к ней nextcloud за пару минут через веб-интерфейс. Но вот уже неделю пытаюсь подключить samba к ldap. Для тестирования поставил samba на том же хосте, что и ldap. Группа samba это группа внутри ldap, чтобы понимать каким пользователям давать доступ к samba. test2 - тестовый пользователь. Так же поставил и настроил smbldap-tools. Она нормально получает список пользователей и изменяет их в ldap.

Но все равно не могу зайти в папку test под пльзователем test2 из под Windows 10, пишет не правильный пароль (сложно ошибиться в пароле «1234»). В чем может быть проблема?

Из под root или создавал отдельно пользователя test на самом хосте Gentoo, с них нормально заходит. Но не хочу хранить кучу пользователей на сервере, в ldap безопаснее.

... # testparm
Load smb config files from /etc/samba/smb.conf
lpcfg_do_global_parameter: WARNING: The "idmap backend" option is deprecated
ldap_url_parse_ext(ldap://localhost/)
ldap_init: trying /etc/openldap/ldap.conf
ldap_init: using /etc/openldap/ldap.conf
ldap_url_parse_ext(ldap://127.0.0.1:389/)
ldap_init: HOME env is /root
ldap_init: trying /root/ldaprc
ldap_init: trying /root/.ldaprc
ldap_init: trying ldaprc
ldap_init: LDAPCONF env is NULL
ldap_init: LDAPRC env is NULL
Loaded services file OK.
Weak crypto is allowed

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        add group script = /usr/sbin/smbldap-groupadd -p "%g"
        add machine script = /usr//sbin/smbldap-useradd -w "%u"
        add user script = /usr/sbin/smbldap-useradd -m "%u"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
        dns proxy = No
        idmap backend = ldap:ldap://192.168.2.7
        ldap admin dn = cn=admin,dc=srd,dc=ru
        ldap debug level = 1
        ldap group suffix = ou=groups
        ldap idmap suffix = ou=idmap
        ldap machine suffix = ou=computers
        ldap passwd sync = yes
        ldap suffix = dc=srd,dc=ru
        ldap user suffix = ou=people
        log file = /var/log/samba/log.%m
        max log size = 50
        passdb backend = ldapsam:ldap://192.168.2.7
        password server = 192.168.2.7
        security = USER
        server string = Samba Server
        set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
        wins support = Yes
        idmap config * : backend = ldap:ldap://192.168.2.7

[test]
        comment = Test dir
        force group = users
        force user = nobody
        path = /srv/test
        read only = No
        valid users = @samba test2 root
        write list = @samba test2
... # smbldap-userlist
uid  |username

   0  |root                 |
 999  |nobody               |
10000 |test2                |
... # pdbedit -L -v
ldap_url_parse_ext(ldap://localhost/)
ldap_init: trying /etc/openldap/ldap.conf
ldap_init: using /etc/openldap/ldap.conf
ldap_url_parse_ext(ldap://127.0.0.1:389/)
ldap_init: HOME env is /root
ldap_init: trying /root/ldaprc
ldap_init: trying /root/.ldaprc
ldap_init: trying ldaprc
ldap_init: LDAPCONF env is NULL
ldap_init: LDAPRC env is NULL
---------------
Unix username:        root
NT username:          root
Account Flags:        [U          ]
User SID:             S-1-5-21-795321463-2392883250-3341194798-500
Primary Group SID:    S-1-5-21-795321463-2392883250-3341194798-513
Full Name:            Netbios Domain Administrator
Home Directory:       \\POWSRV\root
HomeDir Drive:        S:
Logon Script:
Profile Path:         \\POWSRV\root\profile
Domain:               POWSRV
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Вт, 19 янв 2038 06:14:07 MSK
Kickoff time:         Вт, 19 янв 2038 06:14:07 MSK
Password last set:    Ср, 17 ноя 2021 14:34:24 MSK
Password can change:  Ср, 17 ноя 2021 14:34:24 MSK
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------
Unix username:        nobody
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-795321463-2392883250-3341194798-501
Primary Group SID:    S-1-5-21-795321463-2392883250-3341194798-513
Full Name:            System user; nobody
Home Directory:
HomeDir Drive:        (null)
Logon Script:
Profile Path:
Domain:               POWSRV
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    0
Password can change:  0
Password must change: 0
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
---------------
Unix username:        test2
NT username:          test2
Account Flags:        [UX         ]
User SID:             S-1-5-21-795321463-2392883250-3341194798-21000
Failed to find a Unix account for test2
Primary Group SID:    (NULL SID)
Full Name:            test2
Home Directory:       \\POWSRV\test2
HomeDir Drive:        U:
Logon Script:
Profile Path:         \\POWSRV\test2\profile
Domain:               POWSRV
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         Вт, 01 янв 2030 17:01:01 MSK
Password last set:    Ср, 17 ноя 2021 17:18:21 MSK
Password can change:  Ср, 17 ноя 2021 17:18:21 MSK
Password must change: Вт, 19 янв 2038 06:14:07 MSK
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


Последнее исправление: mnxamoto (всего исправлений: 2)

1. Включай лог ldap запросов в openldap и смотри, что samba спрашивает и что получает
2. Включай лог samba и смотри, что ей не нравится

zgen ★★★★★
()
Ответ на: комментарий от zgen
... # cat /var/log/samba/log.home-pc
...
[2021/11/17 17:20:04.637483,  0] ../../source3/passdb/lookup_sid.c:1632(get_primary_group_sid)
  Failed to find a Unix account for test2
... # cat /var/log/samba/log.192.168.2.145
...
[2021/11/17 17:39:28.888992,  0] ../../source3/passdb/lookup_sid.c:1632(get_primary_group_sid)
  Failed to find a Unix account for test2
[2021/11/17 17:39:28.889190,  0] ../../source3/auth/check_samsec.c:493(check_sam_security)
  check_sam_security: make_server_info_sam() failed with 'NT_STATUS_NO_SUCH_USER'
... # cat /var/log/samba/log.nmbd
[2021/11/17 18:35:10.236013,  0] ../../source3/nmbd/nmbd_namequery.c:109(query_name_response)
  query_name_response: Multiple (2) responses received for a query on subnet 192.168.2.7 for name WORKGROUP<1d>.
  This response was from IP 192.168.2.6, reporting an IP address of 192.168.2.6.
[2021/11/17 17:39:27.022330,  0] ../../source3/smbd/server.c:1790(main)
  smbd version 4.14.9 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2021
ldap_url_parse_ext(ldap://localhost/)
ldap_init: trying /etc/openldap/ldap.conf
ldap_init: using /etc/openldap/ldap.conf
ldap_url_parse_ext(ldap://127.0.0.1:389/)
ldap_init: HOME env is /root
ldap_init: trying /root/ldaprc
ldap_init: trying /root/.ldaprc
ldap_init: trying ldaprc
ldap_init: LDAPCONF env is NULL
ldap_init: LDAPRC env is NULL
[2021/11/17 17:39:27.070869,  0] ../../lib/util/become_daemon.c:135(daemon_ready)
  daemon_ready: daemon 'smbd' finished starting up and ready to serve connections
[2021/11/17 17:39:27.079651,  0] ../../source3/printing/print_standard.c:71(std_pcap_cache_reload)
  Unable to open printcap file /etc/printcap for read!
[2021/11/17 17:51:57.180116,  0] ../../source3/printing/print_standard.c:71(std_pcap_cache_reload)
  Unable to open printcap file /etc/printcap for read!
[2021/11/17 18:04:27.209376,  0] ../../source3/printing/print_standard.c:71(std_pcap_cache_reload)
  Unable to open printcap file /etc/printcap for read!
[2021/11/17 18:16:57.210117,  0] ../../source3/printing/print_standard.c:71(std_pcap_cache_reload)
  Unable to open printcap file /etc/printcap for read!
[2021/11/17 18:29:27.269391,  0] ../../source3/printing/print_standard.c:71(std_pcap_cache_reload)
  Unable to open printcap file /etc/printcap for read!
mnxamoto
() автор топика
Ответ на: комментарий от mnxamoto

Если ldap у тебя не шифрованный, то вполне можно отловить прямо tcpdump все запросы на ldap. - Если что-то у меня не работает с ldap, я ловлю tcpdump и без всяких логов вижу что было запрошено и сразу ясно почему всё было не очень хорошо.

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

тебе надо настроить чтобы nss возвращала пользователей из ldap в системе тоже, не только в samba

Чтобы по запросу
id test2
или
getent passwd test2

Возвращалась запись из ldap

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

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

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

Так, а теперь как указать nss обращаться к ldap на определенном хосте?

Поставил: dev-libs/nss-3.70 sys-auth/nss_ldap

... # cat /etc/nsswitch.ldap
#ident $Id: nsswitch.ldap,v 2.4 2003/10/02 02:36:25 lukeh Exp $
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# uses LDAP conjunction with files.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

# the following two lines obviate the "+" entry in /etc/passwd and /etc/group.
passwd:         files ldap
group:          files ldap

# consult files/dns first, we will need it to resolve the LDAP host. (If we
# can't resolve it, we're in infinite recursion, because libldap calls
# gethostbyname(). Careful!)
hosts:          files dns ldap

# LDAP is nominally authoritative for the following maps.
services:   ldap [NOTFOUND=return] files
networks:   ldap [NOTFOUND=return] files
protocols:  ldap [NOTFOUND=return] files
rpc:        ldap [NOTFOUND=return] files
ethers:     ldap [NOTFOUND=return] files

# no support for netmasks, bootparams, publickey yet.
netmasks:   files
bootparams: files
publickey:  files
automount:  files

# I'm pretty sure nsswitch.conf is consulted directly by sendmail,
# here, so we can't do much here. Instead, use bbense's LDAP
# rules ofr sendmail.
aliases:    files
sendmailvars:   files

# Note: there is no support for netgroups on Solaris (yet)
netgroup:   ldap [NOTFOUND=return] files

И скопировал файл

... # mv /etc/nsswitch.conf /etc/nsswitch.conf.old
... # cp /etc/nsswitch.ldap /etc/nsswitch.conf
... # rc-service nscd restart
 * Stopping nscd ...                                                                                           [ ok ]
config file testing succeeded
 * Starting ldap-server ...
 * start-stop-daemon: failed to start `/usr/lib64/openldap/slapd'                                              [ !! ]
 * ERROR: slapd failed to start
 * Starting nscd ...                                                                                           [ ok ]
... # id test2
id: «test2»: такого пользователя нет
mnxamoto
() автор топика
Ответ на: комментарий от zgen

Я находил это, но в gentoo не нашел файл /etc/libnss-ldap.conf после установки пакетов.

Вторую ссылку тоже находил, пытался с sssd, но она тоже результатов не дала и там нет раъяснения по nss. Эта мне кажется более подробная. https://wiki.koozali.org/Client_Authentication:Gentoo_via_sssd/ldap

Я так понял domains должно быть равно значению dc из ldap?

... # cat /etc/sssd/sssd.conf
[sssd]
config_file_version = 2
services = nss, pam
# SSSD will not start if you do not configure any domains.
# Add new domain configurations as [domain/<NAME>] sections, and
# then add the list of domains (in the order you want them to be
# queried) to the "domains" attribute below and uncomment it.
domains = ldap

[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd

[pam]

# Example LDAP domain
[domain/LDAP]
id_provider = ldap
auth_provider = ldap
# ldap_schema can be set to "rfc2307", which stores group member names in the
# "memberuid" attribute, or to "rfc2307bis", which stores group member DNs in
# the "member" attribute. If you do not know this value, ask your LDAP
# administrator.
ldap_schema = rfc2307
ldap_uri = ldap://192.168.2.7
ldap_search_base = dc=srd,dc=ru
ldap_tls_reqcert = never

ldap_user_search_base = ou=people,dc=srd,dc=ru
ldap_group_search_base = ou=groups,dc=srd,dc=ru
ldap_user_object_class = inetOrgPerson
ldap_user_gecos = cn
ldap_id_use_start_tls = false

# Note that enabling enumeration will have a moderate performance impact.
# Consequently, the default value for enumeration is FALSE.
# Refer to the sssd.conf man page for full details.
enumerate = true
# Allow offline logins by locally storing password hashes (default: false).
cache_credentials = true

Но когда я ставлю domains = srd, то sssd не хочет запускаться. domains = srd запускается, но учетку test2 все равно не вытягивает.

... # cat /etc/nsswitch.conf
#ident $Id: nsswitch.ldap,v 2.4 2003/10/02 02:36:25 lukeh Exp $
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# uses LDAP conjunction with files.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

# the following two lines obviate the "+" entry in /etc/passwd and /etc/group.
passwd:         files ldap sss
group:          files ldap sss
shadow:         files ldap sss
# consult files/dns first, we will need it to resolve the LDAP host. (If we
# can't resolve it, we're in infinite recursion, because libldap calls
# gethostbyname(). Careful!)
hosts:          files dns ldap

# LDAP is nominally authoritative for the following maps.
services:   ldap [NOTFOUND=return] files
networks:   ldap [NOTFOUND=return] files
protocols:  ldap [NOTFOUND=return] files
rpc:        ldap [NOTFOUND=return] files
ethers:     ldap [NOTFOUND=return] files

# no support for netmasks, bootparams, publickey yet.
netmasks:   files
bootparams: files
publickey:  files

automount:  files sss
sudoers:    files sss

# I'm pretty sure nsswitch.conf is consulted directly by sendmail,
# here, so we can't do much here. Instead, use bbense's LDAP
# rules ofr sendmail.
aliases:    files
sendmailvars:   files

# Note: there is no support for netgroups on Solaris (yet)
netgroup:   ldap [NOTFOUND=return] files sss
... # cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass                                         #
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so                         #
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok                                            #
password    required      pam_deny.so

session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0077
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so                                                        #
mnxamoto
() автор топика
Ответ на: комментарий от mnxamoto

Я так понял вы вообще не понимаете что делаете, вам сложно понимать написанное и его смысл, и вы тыкаете наобум.

Давайте это поставим, ой файла нет, давайте другое. А давайте сюда этот мусор запишем, а не, давайте другой. Чем nss от pam отличается, что для чего, какой смысл проводимых вами операций - всего этого вы не знаете, и не очень заметно что хотите узнать. Это грустно.

Если вы на каждом шагу так будете делать, то в году всего 365 дней и вы до конца не доберетесь никогда, а пересказывать вам документацию на том уровне, на котором вы поймёте больше я не хочу. Это скучное, контрпродуктивное занятие т.к. вам кажется что вы можете хуяк-хуяк и все заработает. Это в целом не так, и в gentoo тем более.


Я так понял domains должно быть равно значению dc из ldap?

Я так понял, что domains должен быть равен записи
«[domain/blablabla]» что отражено в комментариях и в логике предоставленного примера конфига.

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

Потому что у меня уже неделю горит от документации на оф сайте samba и скудных «гайдов» о подключении samba к ldap в Gentoo.

Тот же nextcloud подключил к ldap за 2 минуты. Прописал адрес сервера LDAP, base DN, DN и пароль админа и nextcloud тут же смог вытянуть учетки из ldap. Потом еще указал из какой группы брать учетки. А с samba уже неделю какие-то пляски с бубном, чтение неполных документаций и гайдов.

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

Просто в случае с nextcloud за вас это уже сделали, это готовое решение.

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

В целом вам нужно настроить либо
nss_ldap
либо
sssd

И добиться чтобы в системе возвращались пользователи которых вы завели в LDAP

С самого начала я не помогу, но если конкртные вопросы - welcome

zgen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.