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

use*_*864 7 ubuntu openldap synchronization nfs home-directory

我最近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但问题出在客户端计算机上的本地用户帐户(admin、guest),当我将条目* server:/ldaphome/&放入/etc/auto.home以获取 ldap 用户的主目录时,这些帐户也会同步或覆盖(我不希望它们被挂载)同步的(包括在条目/home /etc/autofs.home/etc/autofs.master)。

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

更新:1

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

DROPPED THIS SYMLINK METHOD!

更新:2

除了更改客户端上的本地用户的主目录并自动挂载home目录外,别无他法,autofs但我旨在保护的客户端上的同一本地管理员用户也可用作服务器上的用户帐户(管理员,来宾)。 .

更新: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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

vim /etc/auto.master:

+auto.master

/home   /etc/auto.home
Run Code Online (Sandbox Code Playgroud)

vim /etc/auto.home:

*               192.168.1.2:/ldaphome/&
Run Code Online (Sandbox Code Playgroud)

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

当我第一次尝试使用任何新的 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
Run Code Online (Sandbox Code Playgroud)

rth*_*son 5

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

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

我通常使用选项#1,创建/local,然后设置我的本地帐户的home目录还有如/local/admin/local/sysadmin/local/joe,等我再使用autofs的控制下集中/远程主目录的安装/home在你的“描述的一样多更新 3”。

我认为您的服务器正在使用 NFS 导出主目录?如果在客户端上手动安装 NFS 导出按预期工作但 autofs 没有,那么您的问题几乎肯定是您的 autofs 配置。

对于您的autofs问题的帮助,请张贴的内容/etc/nsswitch.conf/etc/(open)ldap/ldap.conf/etc/ldap.conf/etc/auto.master/etc/auto.home(或什么/只要相关的autofs配置)。


use*_*864 1

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

在服务器上,

cp -a /home/* /ldaphome/
Run Code Online (Sandbox Code Playgroud)

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

mkdir /ldaphome/ldapuser
chown -R ldapuser:ldapuser /ldaphome/ldapuser
Run Code Online (Sandbox Code Playgroud)

在客户端,

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

    mkdir /local-home

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

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

尝试在客户端使用 LDAP 凭据进行日志记录...成功了!

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