- OpenLDAP(ldapsearch 및 PHP 스크립트 사용)
- LDAP 없이 삼바 사용
이것이 내가 access.log
말하는 것입니다(내 모든 SMB 데이터가 덤프됩니다).
[2013/02/10 19:41:25, 2] passdb/init_sam_from_ldap(545): Entry found for user: ***<username>***
[2013/02/10 19:41:25, 0] passdb/pdb_get_group_sid: Failed to find Unix account for ***<username>***
[2013/02/10 19:41:25, 1] auth/make_server_info_sam(589): User ***<username>*** in passdb, but getpwnam() fails!
[2013/02/10 19:41:25, 0] auth/check_sam_security: make_server_info_sam() failed with 'NT_STATUS_NO_SUCH_USER'
[2013/02/10 19:41:25, 2] auth/check_ntlm_password: Authentication for user [***<username>***] -> [***<username>***] FAILED with error NT_STATUS_NO_SUCH_USER
이는 OpenLDAP 데이터베이스의 비밀번호 해시가 Samba가 수신해야 한다고 가정하는 비밀번호 해시와 일치하지 않는 것과 같습니다. 노트:잘못된 비밀번호를 입력하면 잘못된 비밀번호라고 표시됩니다. 이 로그는 올바른 자격 증명을 사용한 완벽한 인증을 위한 것입니다. 또는 적어도 그것이 제가 하려고 하는 것입니다(gnome filebrowser, 사용자 이름:사용자 이름, 작업 그룹: WORKGROUP, 비밀번호:일반 텍스트 비밀번호)
이것은 내 smb.conf입니다.
[global]
unix charset = LOCALE
netbios name = test
server string = test
passdb backend = ldapsam:"ldap://<ip>"
username map = "/etc/samba/smbusers"
log level = 2
syslog = 0
log file = /var/log/samba/access.log
max log size = 0
name resolve order = hosts dns
load printers = No
add user script = /usr/bin/smbldap-useradd -m '%u'
delete user script = /usr/bin/smbldap-userdel '%u'
add group script = /usr/bin/smbldap-groupadd -p '%g'
delete group script = /usr/bin/smbldap-groupdel '%g'
add user to group script = /usr/bin/smbldap-groupmod -m '%g' '%u'
delete user from group script = /usr/bin/smbldap-groupmod -x '%g' '%u'
add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
set primary group script = /usr/bin/smbldap-usermod -g '%g' '%u'
domain logons = Yes
domain master = Yes
wins support = Yes
ldap admin dn = cn=admin,dc=test,dc=local
ldap group suffix = ou=Groups
ldap user suffix = ou=People
ldap suffix = dc=test,dc=local
ldap ssl = no
ldap passwd sync = yes
이것은 내 ldap.conf입니다.
**서버가 다운되어서 ATM이 없습니다**
Wireshark에 따르면 OpenLDAP는 검색 시 올바른 정보를 보내지 uid
만 실제로 로그인할 때는생각하다삼바가 뭔가를 말하네"단일 층"나는 이것이 관련이 있을 것이라고 생각했는데, 이것이 실패하고 "잘못된" 데이터가 삼바로 다시 전송되는 곳입니다.
Samba는 단순히 LDAP 로그인 사용을 거부합니다.
공유하다:
LDAP 없이도 작동하므로 공유에 문제가 없습니다! (비LDAP 인증을 사용하는 경우에도)
유닉스 사용자 추가
작동합니다...그러면 공유에 액세스할 수 있지만 Samba에 명시적으로 지시했습니다.아니요로컬 인증을 사용하여 LDAP?를 선택했습니다.
답변1
비슷한 문제가 있었습니다. samba는 LDAP를 백엔드로 사용했지만 도메인 로그인을 허용하려면 여전히 사용자의 로컬 Unix 계정이 필요했습니다.
나에게 문제는 /etc/nsswitch.conf
사용자 계정 및 그룹 등을 쿼리하는 데 사용되는 데이터베이스를 나열하는 파일 이었습니다. 사용 중인 Linux 운영 체제를 지정하지 않았으므로 Ubuntu에서 이 문제를 해결하는 데 사용한 단계를 제공하겠습니다.
먼저 패키지를 설치해야 합니다 libnss-ldap
.
sudo apt-get install libnss-ldap
여러 종속성이 있으며 그 중 하나는 OpenLDAP 서버의 ACL이 익명 검색을 차단하는 경우 이 패키지를 구성하는 동안 LDAP 데이터베이스에 액세스할 수 있는 계정과 같은 LDAP 계정을 지정 ldap-auth-config
해야 합니다 .cn=admin,dc=example,dc=com
다음으로 /etc/nsswitch.conf
파일을 편집합니다. 아래와 같이 비밀번호, 그룹 및 섀도우에 대한 세 가지 항목에 "ldap"을 추가합니다. 일부 시스템은 "compat"를 사용하고 다른 시스템은 "file"을 사용하므로 첫 번째 비트만 유지하면 됩니다.
passwd: compat ldap
group: compat ldap
shadow: compat ldap
변경사항은 즉시 적용됩니다. 다음 명령을 실행하여 작동하는지 확인할 수 있습니다 getent
.
getent passwd
모든 로컬 및 LDAP 사용자 계정이 나열되어야 합니다.