OpenLdap在客户端和服务器之间同步主目录

OpenLdap在客户端和服务器之间同步主目录

我最近ldap client authentication在 karmic 和 lucid 桌面客户端上安装了 Ubuntu,ldap 服务器在 10.04 LTS 服务器上运行,是我在客户端设置时遵循的链接,这可能也适用于 11.04。我能够使用 ldap 用户帐户登录到客户端,而且在客户端上,我使用session required pam_mkhomedir.so umask=0022 skel=/etc/skelpam.d/ 中的条目common-session在用户首次登录时自动在客户端计算机上创建主目录。我想应该有一种方法可以将主目录从客户端同步到服务器,反之亦然,这样用户无论登录到哪个客户端都可以拥有他们的文档。

我还剩下以下任务要做:

  1. 同步客户端和服务器之间的主目录(就像 Windows 中的漫游配置文件一样)。

我尝试过,autofs但问题在于客户端计算机上的本地用户帐户(管理员、来宾),当我放置条目以同步 ldap 用户的主目录(包括中的条目)时,这些帐户也会同步或覆盖(我不希望它们* server:/ldaphome/&/etc/auto.home安装/home /etc/autofs.home/etc/autofs.master

有没有人有技巧可以做到这一点或使用任何其他方法,以便我可以使用 ldap 和本地用户凭据登录到客户端,并为 ldap 用户同步主目录?我知道这里有很多大师,一个人如何以他们的风格做到这一点?

更新:1

我尝试在客户端autofs之外自动挂载不同的目录 (ldaphome) home,并尝试在同一客户端上链接,这样当服务器上的 ldaphome 在客户端上挂载 ldaphome 时,用户的主目录 home/$USER 将因为符号链接而同步。因此,我编辑了ldaphome/$USER文件并放置在登录时链接这些目录。我意识到符号链接对目录不起作用,因为它在 /home/$USER/$USER 下创建了一个链接名称。home/$USER/etc/profile.d/custom.shln -sf "/ldaphome/$USER" "/home/$USER"

DROPPED THIS SYMLINK METHOD!

更新:2

感觉除了更改客户端上本地用户的主目录并自动挂载目录之外没有其他办法,homeautofs我想要保护的客户端上的相同本地管理员用户也可作为服务器上的用户帐户(管理员、来宾)使用...

更新:3

usermod -m -d /local-home/admin admin我妥协了,只是将已经存在的本地用户帐户移动( )到不同的主目录,然后为客户端设置自动挂载home。我再次陷入问题,一旦客户端通过 ldap 进行身份验证,它就不会从服务器获取主文档,而只有当我手动将其挂载(mount ldapserver:/ldaphome/test /home/test)在客户端上时才会起作用。客户端是karmic...

客户端配置

vim /etc/nsswitch.conf:

# pre_auth-client-config # passwd:         compat
passwd: files ldap
# pre_auth-client-config # group:          compat
group: files ldap
# pre_auth-client-config # shadow:         compat
shadow: files ldap

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

# pre_auth-client-config # netgroup:       nis
netgroup: nis

vim /etc/ldap.conf:

base dc=mydomain,dc=net
uri ldap://192.168.1.2
ldap_version 3
rootbinddn cn=admin,dc=mydomain,dc=net
bind_policy soft
pam_password md5
nss_initgroups_ignoreusers avahi,avahi-autoipd,backup,bin,colord,daemon,games,gdm,gnats,hplip,irc,kernoops,libuuid,lightdm,list,lp,mail,man,messagebus,news,proxy,pulse,root,rtkit,saned,speech-dispatcher,sshd,statd,sync,sys,syslog,usbmux,uucp,vboxadd,www-data

vim /etc/ldap/ldap.conf:

BASE    dc=mydomain,dc=net
URI     ldap://192.168.1.2

SIZELIMIT       0
TIMELIMIT       0
DEREF           never

# TLS certificates (needed for GnuTLS)
TLS_CACERT      /etc/ssl/certs/ca-certificates.crt

vim /etc/auto.master:

+auto.master

/home   /etc/auto.home

vim /etc/auto.home:

*               192.168.1.2:/ldaphome/&

ldaphome在服务器 (192.168.1.2) 上共享。现在的问题是,我/home在客户端上有一个单独的分区,我将其卸载fstab,然后使用 ldaphome 进行安装,您可以在 autofs 配置中看到它。当我尝试使用 ldap 登录时,在成功验证后,它会再次进入登录屏幕。当我停止服务时,它通常会登录并创建我在 pam.d/common-session 中autofs使用的主目录。session required pam_mkhomedir.so umask=0022

当我第一次尝试使用任何新的 ldap 帐户登录时,出现以下错误:

    Creating directory '/home/user3'.
    Unable to create and initialize directory '/home/user3'.
    No directory, logging in with HOME=/


vim /var/log/auth.log:
lucid mkhomedir_helper: PAM unable to create directory /home/user3: No such file or directory

答案1

处理本地和集中帐户混合(无论是 LDAP 还是 NIS 还是其他)的常见方法有两种。您的第三次更新涵盖了其中一种。

  1. 本地帐户使用非/home基本目录作为家庭目录
  2. LDAP/central 使用非/home基础目录作为家庭目录

我通常使用选项#1并创建然后设置我的本地帐户以在那里拥有主目录,/local例如/local/admin,,等。然后我使用autofs来控制集中/远程主目录的挂载,方式与您在“更新3”中描述的相同。/local/sysadmin/local/joe/home

我猜想您的服务器正在使用 NFS 导出主目录?如果在客户端上手动安装 NFS 导出可以按预期工作,但 autofs 却不行,那么问题几乎肯定出在您的 autofs 配置上。

/etc/nsswitch.conf为了帮助解决您的 autofs 问题,请发布、/etc/(open)ldap/ldap.conf/etc/ldap.conf和(或任何相关的 autofs 配置)/etc/auto.master的内容。/etc/auto.home

答案2

你看过pam_mount? 这就是我目前正在使用的,尽管我的用例与您的略有不同。这篇博文对该过程进行了很好的概述,它适用于 SAMBA 服务器,但如果您忽略 Samba 特定部分,它可以与 NFS 配合使用(我使用的就是 NFS),并且可以与 10.04 配合使用。我还没有在 11.04 上尝试过。

答案3

我必须创建或复制home directory通过 nfs 在服务器上共享的 ldap 用户ldaphome,我完全没想到这是原因。我以为当用户首次登录客户端时,用户的主目录将自动在 ldaphome 下创建。我做了以下事情,每个用户都很容易通过身份验证并自动安装他们的主目录,没有错误消息提示,我认为根本session required pam_mkhomedir.so umask=0022不需要该条目:

在服务器上,

cp -a /home/* /ldaphome/

或者,如果 /home 下没有可供 ldap 用户使用的主目录,则可以创建该目录。

mkdir /ldaphome/ldapuser
chown -R ldapuser:ldapuser /ldaphome/ldapuser

在客户端,

  • 将本地用户帐户移动到任意目录,例如/local-home

    mkdir /local-home

usermod -m -d /local-home/username username

  • 如果主目录是单独的分区,则取消注释文件/home中的挂载目录/etc/fstab以让 autofs 挂载/home

尝试在客户端使用 ldap 凭证登录...成功!

由于我是实时使用 Linux 上此设置的初学者,我非常关心服务器上的 NFS 性能如何,因为一次登录和安装的用户数很多。我不知道是否有其他方法可以减少服务器负载或证明性能最佳。如果有,我非常有兴趣听取任何人的意见。

相关内容