我遇到了一个问题,它偶尔会出现然后又消失,这让我很抓狂。
我的 Debian 服务器通过 AD 进行身份验证,只有“linuxadmins”组成员可以通过 SSH 连接到服务器并“sudo su”。
SSH 登录正常,没有任何问题,但用户在使用 sudo 时收到错误“用户 xyz 不在 sudoers 中”
我的 /etc/sudoers 包含 AD 组名
%linuxadmins ALL =(ALL) ALL
和 samba conf
#GLOBAL PARAMETERS
[global]
workgroup = RKAS
realm = RKAS.RK
preferred master = no
server string = SEP DEV Server
security = ADS
encrypt passwords = true
log level = 3
log file = /var/log/samba/%m
max log size = 50
printcap name = cups
printing = cups
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
winbind nested groups = Yes
#winbind separator = +
#idmap uid = 600-20000
#idmap gid = 600-20000
;template primary group = "Domain Users"
template shell = /bin/bash
template homedir = /home/%D/%U
winbind offline logon = yes
winbind refresh tickets = yes
问题在于 Samba 处理的组分隔符。
getent group | grep linuxadmins
在几分钟内返回两个不同的结果
linuxadmins:x:784:xyz
或者
\linuxadmins:x:784:xyz
仅当没有 baskslash 时,用户才能够使用 sudo。
怎么了?我不明白为什么它在组名中不断添加反斜杠并将其删除?
普通账户:
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so
account required pam_permit.so
通用身份验证:
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login require_membership_of=linuxadmins try_first_pass
auth required pam_permit.so
没有共同制度,只有会话
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
我必须补充一点,这种行为发生在所有 Linux 服务器上
答案1
好的,所以实际上idmap uid 范围已被弃用,但它已被替换为:
idmap backend = ad
idmap config *:backend = ad
idmap config *:range = 10000-20000
看,我认为发生了什么.. samba(和相关模块)不知道如何为用户分配正确的 id/uid。
我会将这 3 行放入/etc/samba/smb.conf
,清除 Samba 缓存文件(它们都会重新创建),重新启动rm -rf /var/lib/samba/*
所有 Samba 服务,,,winbindd
然后尝试,,smbd
nmbd
wbinfo -u
wbinfo -g
wbinfo -i $id
您还需要确保所有用户和组都具有 uidNumbers 和 gidNumbers(Active Directory 管理中心,右键单击用户,打开属性,找到属性编辑器,如果尚未设置,请设置 uidnumber 和 gidnumber)。
您还需要为树中的组(包括域用户)提供一个 gidNumber。