如何自动清除 Linux 用户的主目录并将其重置为默认值?

mat*_*ele 8 automation linux user-accounts

下周我将帮助教授两门 Unix 课程。用户将在 RHEL 5 机器上获得一个帐户,在此期间,他们会将文件添加到他们的/home文件夹中,更新他们的.bashrc和其他点文件,并执行其他需要清理的一般混乱。

第二节课的学生将重复使用第一节课的人的用户帐户。我想自动清理他们的帐户,以便新用户可以重新开始。

我确信我可以编写一个 shell 脚本来运行 asu -u $USER_ID并在他们的 homedir 中放置一组“原始”的好文件,并删除它找到的任何其他内容。是否有其他工具可以帮助我完成此清理/重置操作?我对 Puppet、Chef 或其他工具没有任何经验。他们会帮助做这样的事情吗?

为了提供问题的范围,大约有 30 个用户帐户,我知道所有用户 ID/密码,并且它们都是在同一个 RHEL 机器上创建的。

mai*_*ilq 12

有很多方法可以提供帮助:

  • 删除完整的主目录并将所有文件从主目录复制/etc/skel回主目录。之后更改权限。
  • 将系统放入虚拟机中,制作快照并在第 1 课后恢复到快照
  • 在 RHEL 中找到类似 kiosk 模式的东西。Ubuntu 有类似的东西,它会在注销时自动恢复主页
  • 将家放在 btrfs 文件系统上,制作快照并在第 1 课后恢复
  • tar 课前的家目录,课后删除家,从 tar
  • ...

如果你想要下周的结果,那么学习其他工具,比如 Puppet/Chef 就有点太多了。


Zor*_*che 5

假设您所有学生的 UID 都在 1000 到 65000 之间

像这样的快速单班轮会起作用。awk 将为范围内的每个用户打印出 rsync 命令和 chown 命令。将 awk 的输出发送到 bash 将运行所有命令以重置目录和权限。

# see what will happen.
awk 'BEGIN{FS=":"} $3 >= 1000 && $3 <=65000 { print "rsync --delete -v -r /etc/skel/ " $6 "/ ; chown -R " $1 ":" $1 " " $6;}' /etc/passwd

# actually run the commands to reset all users matched by awk.
bash <( awk 'BEGIN{FS=":"} $3 >= 1000 && $3 <=65000 { print "rsync --delete -v -r /etc/skel/ " $6 "/ ; chown -R " $1 ":" $1 " " $6;}' /etc/passwd )
Run Code Online (Sandbox Code Playgroud)