我正在尝试让我的 Linux 机器使用 Active Directory 身份验证。我相信我几乎已经正确设置了所有内容。我能够分别发出wbinfo -g
和wbinfo -u
查看所有组和用户。
我的设置简要介绍:
我在 Linux 机器上执行管理操作时使用的用户名是nick
。我的活动目录用户名是nwalke
。它们有两个不同的密码。我可以使用 和该用户的密码登录机器nick
,也可以使用nwalke
的nwalke
密码登录。
令人好奇的是:
在创建活动目录用户的主目录后,我运行了一个需要 root 访问权限的脚本。这是为他们设置一些系统范围的东西,比如 samba 共享。当我以 身份登录时nwalke
,我输入我的nwalke
密码,然后成功了。然后我收到了[sudo] password for nick:
。如果我nwalke
在这里输入我的密码,它会说Sorry, try again.
。如果我输入nick
的密码,它会说Sorry, user nick is not allowed to execute scriptname as root
。
如果我groups
这样做nwalke
,我会发现我的用户神奇地被赋予了该组nick
。
现在,我意外地认为nick
UID 是 100,而不是 1000。所以最初在我的账户中smb.conf
我有idmap uid 1000-10000
。我唯一能想到的是,我在仍设置该值时使用 进行登录nwalke
,现在我得到的只是 UID 1000,这迫使 Linux 认为我是nick
。
我不太确定接下来该怎么做。就像我说的,我相当确定 Active Directory 正在与我的服务器正确通信,但 Linux 端肯定有什么东西没有正确映射。
有什么想法吗?
这是我的smb.conf
:
[global]
security = ads
netbios name = hostname
realm = COMPANY.COM
password server = adshost.company.com
workgroup = COMPANY
idmap uid = 10000-90000
idmap gid = 10000-90000
winbind separator = +
winbind enum users = no
winbind enum groups = no
winbind use default domain = yes
template homedir = /home/%D/%U
template shell = /bin/bash
client use spnego = yes
domain master = no
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
我是否需要以某种方式绑定到Linux机器上的用户?
答案1
听起来你的 UID 有重叠。
如果nwalke
和共享相同的数字 UID,则第一个 nsswitch 匹配将获胜,nick
例如,,等(并且第一个匹配通常不在 passwd 文件中,除非你更改了或等效顺序)。id
sudo
ls
/etc/nsswitch.conf
(登录可以使用任意名称,因为登录会按名称查找用户。但是如果两个用户同名,将会引起一些有趣的混乱……)
您的本地(/etc/passwd
、/etc/group
)和远程(NIS、Samba、LDAP 等)UID/GID 不应重叠。解决该核心问题,其余问题将迎刃而解。
答案2
我已将 smb.conf 中的值更改为 10,000,但仍然感觉 nwalke 与 1000 配对。我该如何解决这个问题?
我不记得它是哪个文件,而且我目前没有系统可以检查。
当用户首次连接时,系统会分配一个 ID,然后将其存储在 Samba 数据库之一中。/var/lib/samba/
查看该文件夹,可能很明显它是哪个文件。您可以尝试停止 Samba,然后移动/删除那里的所有文件,但您需要重新加入域,因为计算机帐户凭据也存储在其中一个数据库中。