ldap slapd ldapscripts samba smbldap-tools migrationtools cifs-utils libpam-mount sssd

Настройка Сервера

Установить SLDAP

apt install slapd -y
 
dpkg-reconfigure slapd   

Установка

apt install samba smbldap-tools

Настройка

Копирование необходимых файлов

cd /usr/share/doc/samba/examples/LDAP/
 
# Копируем схему
cp samba.schema /etc/ldap/schema/ 
 
# Копируем файл настрйоки в любой удобный каталог
cp samba.ldif ~/
 
# Добавляем 
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f ~/samba.ldif 
 
cd /usr/share/doc/smbldap-tools/examples/
 
# заменям smb.conf на ldap'по подобный
cp smb.conf.example /etc/samba/smb.conf
cp smbldap.conf /etc/smbldap-tools/ 
cp smbldap_bind.conf /etc/smbldap-tools/

Настройка файла smb.conf

Приводим файл /etc/samba/smb.conf к подобному виду

[global]
        workgroup = vm13.local   # домен сервера ldap
        netbios name = hq-noc    # имя устройства 
				log level = 2    # уровень логирования (чем выше тем круче)
# ..че-то там..
 
		# поменять доменное имя
		passdb backend = ldapsam:"ldap://ldap.vm13.local/"
		ldap ssl = no                                  # если нет сертификатов
        ldap admin dn = cn=admin,dc=vm13,dc=local # админ ldap'а
 
# ..че-то там..
	
		ldap suffix = dc=vm13,dc=local    # меняем доменное имя
		# комментим что не надо
#       ldap user suffix = ou=Users
#       ldap group suffix = ou=Groups
#       ldap machine suffix = ou=Computers
        ldap idmap suffix = ou=Idmap
 
# ....
 
# Папка пользователей
[PROFILES]
        path = /share/profiles/%u
        browseable = no
        writeable = yes
        create mask = 0611
        directory mask = 0700
        profile acls = yes
        csc policy = disable
        map system = yes
        map hidden = yes
  • Также не забыть создать папку
mkdir -p /share/profiles
chmod 777 /share/profiles/

Применение настроек

smbpasswd -W
systemctl restart smbd.service
# Без ошибок должно быть
smbldap-config
 
# В целом, можно протыкивать все дальше, 
# при этом нужно смотреть что данные соответствуют, данным в smb.conf
 
# Возможно нужно будет что то с SSID сделать
	 
 
# Ибо он должен соответствовать тому что выдает эта команда
# Но вроде этой командой он сам его нормально добавил
 
# ....
 
. logon path: directory where roaming profiles are stored. Ex:'\\hq-noc\profiles\%U'
  logon path (press the "." character if you don't want roaming profiles) [\\hq-noc\profiles\%U] >
. home directory prefix (use %U as username) [/home/%U] >
. default users' homeDirectory mode [700] >
. default user netlogon script (use %U as username) [] >
. default password validation time (time in days) [45] >
. ldap suffix [dc=firmatpolska,dc=pl] >
. ldap group suffix [] >
. ldap user suffix [] >
. ldap machine suffix [] >
. Idmap suffix [ou=Idmap] >
. sambaUnixIdPooldn: object where you want to store the next uidNumber
  and gidNumber available for new users and groups
  sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=firmatpolska.pl] >
. ldap master server: IP address or DNS name of the master (writable) ldap server
  ldap master server [ldap.firmatpolska.pl] >
. ldap master port [389] >
. ldap master bind dn [cn=admin,dc=firmatpolska,dc=pl] >
. ldap master bind password [] >
. ldap slave server: IP address or DNS name of the slave ldap server: can also be the master one
  ldap slave server [ldap.firmatpolska.pl] >
. ldap slave port [389] >
. ldap slave bind dn [cn=admin,dc=firmatpolska,dc=pl] >
. ldap slave bind password [] >
. ldap tls support (1/0) [0] >
. SID for domain firmatpolska.pl: SID of the domain (can be obtained with 'net getlocalsid hq-noc')
  SID for domain firmatpolska.pl [S-1-5-21-782873100-53651731-553527799] >
. unix password hash: hash used for unix passwords
  If set to "exop", use LDAPv3 Password Modify (RFC 3062) extended operation.
  unix password hash (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT) [SSHA] >
. default user gidNumber [513] >
. default computer gidNumber [515] >
. default login shell [/bin/bash] >
. default skeleton directory [/etc/skel] >
. default domain name to append to mail address [] >
. treat shadowAccount object or not (1/0) [1] >
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
backup old configuration files:
  /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old
  /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldap-tools/smbldap_bind.conf.old
writing new configuration file:
  /etc/smbldap-tools/smbldap.conf done.
  /etc/smbldap-tools/smbldap_bind.conf done.
vi /etc/smbldap-tools/smbldap.conf
 
# изменить параметры 
	usersdn="${suffix}" #103 строка
	computersdn="${suffix}" #108 строка
	groupsdn="${suffix}" #113 строка
 
 
# после чего выполнить команду
smbldap-populate

Обращение к pam

apt install libpam-ldapd
 
# Выбрать (нажать пробел) (далее = Enter)
*passwd *group *shadow 
 
# IP сервера
<ip address> 
 
# Доменное имя сервера
<domain name>
 
# Включить создание каталога для пользователя
pam-auth-update
    # выбрать (нажать пробел) (далее = Enter)
	*create home directory on login
 
# Перезапустить
reboot

Добавление групп

smbldap-groupadd admins

Добавление пользователей

smbldap-useradd -a -P admin -G admins -o "Admins" -md /share/profiles/admin -M admin@vm.local
 
# -a автоматически заполнить поля (id, uid и прочие)
# -P Имя пользователя
# -G Группа
# -o OU т.е. организационный юнит
# -M email
# -md тут сразу два 
	# -m Создавать директорию если её нет
	# -d Местонахождение домашней директории
 

SLDAP + SAMBA

LDAPS + сделать то что выше

vi /etc/samba/smb.conf
	passdb backend = ldapsam:"ldaps://ldap.lego.dk/"
	ldap ssl = no
	#ldap ssl = start tls
	
vi /etc/smbldap-tools/smbldap.conf
	# Можно перед каждым пользователем менять его userdn
	usersdn="${suffix}" # Изначальный userdn
	#usersdn="ou=Billund,dc=lego,dc=dk" # userdn для пользователя frida