我设置了IPA服务器和客户端,并在两者上安装了NFS和autofs。每当我使用ipa user-add创建用户,然后切换到该用户时,IPA都会为该用户创建一个主目录并显示Creating home directory for user。我想让autofs设置主目录,这样IPA就不需要这样做了。我的IPA服务器还充当NFS服务器,我在/etc/exports中添加了/home,并将其指向我的客户机。我的IPA客户端充当我的NFS客户端,它在/mnt/nfs/home上挂载了/home。在我的客户机上,我进入/etc/auto.master并添加了一行/home /etc/auto.misc。然后,我在/etc/auto.misc上添加了行:*  -fstype=nfs    :nameofserver.example.home:/mnt/nfs/home。在这之后,我重新启动了autofs并尝试创建一个用户,但是当我现在切换到用户时,我得到了消息warning: cannot change directory to /home/user: No such file or directory我做错了什么?
发布于 2018-10-18 21:39:59
autofs的IPA配置使用户home被挂载,而不是用户home的根目录。这意味着在您的示例中,autofs正在尝试挂载/mnt/nfs/home/newuser。
AFAIK他们不是这个鸡/蛋问题的官方解决方案。Free-ipa目前正在开发一个钩子/回调系统,旨在为那些老的、众所周知的“有问题的”提供一个解决方案。
由于此更新还不可用,因此惟一的方法是设置一个cron脚本,该脚本调用IDM服务器的LDAP服务并创建新的主目录。但没有人看到有发布代码来做到这一点。
以下是我为此创建的bash脚本。我在设置为每分钟的cron中运行它。
#!/bin/bash
TIMEFILE=/root/scripts/data/ldap_last_check.txt
LASTTIME=$(cat $TIMEFILE)
CURRENTTIME=$(date +%Y%m%d%H%M%SZ)
echo $LASTTIME
NEWUSERLIST=$(/usr/bin/ldapsearch -LLL -x  -h localhost -b "cn=users,cn=accounts,dc=domain,dc=com" "(createTimestamp>=$LASTTIME)" uid)
UID_REGEX="^uid:"
mount filesrv:/srv/idmhome /mnt/idmhome
OLDUSERLIST=$(ls -1 /mnt/idmhome)
while read -r i_line; do
    HOME_EXIST=false
    if [[ $i_line =~ $UID_REGEX ]]; then
        TMPUSER="$(echo $i_line | awk '{print $NF}')"
        while read -r j_line; do
            if [[ $TMPUSER = $j_line ]]; then
                HOME_EXIST=true
            fi
            if [[ $TMPUSER = "admin" ]]; then
                HOME_EXIST=true
            fi
        done <<< "$OLDUSERLIST"
        if ! $HOME_EXIST; then         
            mkdir /mnt/idmhome/$TMPUSER
            cp /etc/skel/.* /mnt/idmhome/admin/
            chown -R $TMPUSER:$TMPUSER /mnt/idmhome/$TMPUSER/
            ls -lah /mnt/idmhome/$TMPUSER
        fi
    fi
done <<< "$NEWUSERLIST"
umount /mnt/idmhome
echo $CURRENTTIME > $TIMEFILE我的设置和你的有点不同,我的nfs服务器和我的IDM不在同一台服务器上。您只需注释mount/umount行并将路径更改为您的路径,它就会工作得很好。
考虑编写类似的代码来擦除/存档已删除的帐户。
https://stackoverflow.com/questions/42183332
复制相似问题