我有一个IPA服务器和客户端设置,两者都安装了NFS和autofs。每当我使用ipa用户添加用户,然后切换到该用户时,IPA会为该用户创建一个主目录并显示Creating home directory for user
。我想这样做,所以autofs设置主目录,所以IPA不需要。我的IPA服务器也充当NFS服务器,我将/home
添加到我的/etc/exports
并将其指向我的客户端计算机。我的IPA客户端充当我的NFS客户端,/home
上安装了/mnt/nfs/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
我做错了什么?
答案 0 :(得分:1)
autofs的IPA配置使安装的用户主目录不是用户主目录的根。这意味着在您的情况下,autofs正在尝试挂载/ mnt / nfs / home / newuser。
对于这些鸡/蛋问题,它们不是官方的解决方法。 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 lacl1-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行并更改您的行的路径即可,它应该可以正常工作。
考虑制作类似的代码来擦除/存档已删除的帐户。