一、软件包
- 使用samba+winbind的方式。(也可以使用sssd+samba的方式)
- 必要的软件包:krb5-config krb5-user winbind libpam-winbind libnss-winbind
- krb5-config krb5-user:用于配置krb5配置信息
- libpam-winbind libnss-winbind:用于映射AD域服务用户、用户组信息至本地
- winbind:守护进程,用于缓存AD映射至本地的用户信息
二、配置
- 配置smb.conf,注意ID映射部分的处理,主要看global部分即可,配置samba主要用于使用AD域访问samba服务。
[global]
realm = ADSERV.COM # AD域名信息
winbind cache time = 1
idmap config ADSERV : range = 100000-200000 # 指定AD域用户的id映射范围(重要)
winbind use default domain = true
template homedir = /home/%U
printcap name = /dev/null
idmap config ADSERV : backend = rid # 指定AD域用户存放数据库
template shell = /sbin/nologin
winbind enum users = yes
Guest account = nobody
security = ads
winbind offline logon = true
winbind enum groups = yes
idmap config * : backend = tdb # 指定AD域用户存放数据库
log level = 0
strict locking = no
winbind separator = /
load printers = no
workgroup = ADSERV
printing = bsd
max xmit = 4194304
case sensitive = yes
cups options = raw
log file = /var/log/samba/log.%%m
store dos attributes = yes
idmap config * : range = 70000-99999 # 普通用户的id映射范围
max log size = 5
-
/etc/nsswitch.conf,增加winbind信息,注意不要覆盖了sss信息,否则会导致sssd服务无法使用。
-
passwd: files sss winbind group: files sss winbind shadow: files sss winbind gshadow: files hosts: files dns networks: files protocols: db files services: db files sss # 添加sss信息 ethers: db files rpc: db files netgroup: nis sss # 添加sss信息
- 修改命令参考:sed -i “s/passwd.*/& winning/” /etc/nsswitch.conf
-
配置krb5.conf,下面是模板之间参考即可,只需替换相应的ip及域名即可。
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log[libdefaults] default_realm = ADSERV.COM dns_lookup_realm = false dns_lookup_kdc = true ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] ADSERV.COM = { kdc = 172.16.19.193 admin_server = 172.16.19.193 default_domain =ADSERV.COM } [domain_realm] .adserv.com = ADSERV.COM adserv.com = ADSERV.COM [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
-
配置pam认证信息,该部分主要用于AD用户登录linux时的认证
- 编辑/etc/pam.d/common-password,将默认的use_authtok去掉
password [success=1 default=ignore] pam_winbind.so try_first_pass - 编辑/etc/pam.d/common-account,增加以下信息
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 - 编辑/etc/pam.d/common-session,增加以下信息
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
- 编辑/etc/pam.d/common-password,将默认的use_authtok去掉
-
配置dns,因为第二步中nsswitch指定走dns认证,增加AD域ip信息
vim /etc/resolv.conf
nameserver adip -
配置hosts,添加AD域信息,⚠️是增加ip 域名的关系
adip dn -
以上信息配置完成只需加入命令
# 加入AD域
net ads join -U username@domain%passwd# 重启winbind服务,更新AD域用户信息 systemctl restart winbind # 重启smbd、nmbd服务,更新AD域信息 systemctl restart smbd systemctl restart nmbd # 使用wbinfo -t检查是否已加入
三、检查配置是否生效
-
使用wbinfo -t检查是否已成功加入AD域。
-
使用getent查询用户及用户组信息
# 查询AD服务用户信息getent passwd + 用户名,不指定则查询所有,如
getent passwd test1
getent passwd# 查询AD服务器用户组信息getent group + 组名,不指定则查询所有,如 getent group "domain users" getent group
-
使用id + 用户名,查询域服务器用户信息
id test1 -
以上检查均正常,则表示AD域已成功加入,并且用户信息已成功映射至本地。
遇到的问题
- 加入了AD域,创建了samba服务,却无法登录。
- 缺少安装包:libpam-winbind libnss-winbind,导致无法映射用户信息至本地,登录失败。
- ssh无法登录系统,由于未安装pam相关软件包,却配置了/etc/pam.d/common-account、common-session等认证信息,导致登录失败,安装对应包即可解决。
- 通常samba无法登录都是由于用户信息为正常映射或用户id与本地用户id冲突导致,参考以上方式解决即可。
配置参考
- https://blog.51cto.com/yangzhiming/2164955
- https://www.jianshu.com/p/fd18ac8c7c52