cd1*_*cd1 84 linux user-management
我创建了一些用户:
$ useradd john
我忘记指定参数-m来创建主目录并将骨架文件复制到每个用户。现在我想这样做,而且我不想重新创建所有用户(必须有更简单的方法)。那么,有没有办法创建用户目录并复制骨架文件?
我想过创建目录,将它们chowning给相应的用户,复制所有的骨架文件并将它们chowning给相应的用户。但是如果有这样的命令useradd -m不会再次创建用户,而是创建目录,那就更好了。
Rah*_*til 128
你也可以使用 mkhomedir_helper
Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
Run Code Online (Sandbox Code Playgroud)
mat*_*ath 21
您需要手动创建用户目录。这需要三个步骤:
/etc/passwd,通常已经有一个 /home/login 条目。最后设置正确的权限:
mkdir /home/YOUcd /home/YOUcp -r /etc/skel/. .chown -R YOU.YOURGROUP .chmod -R go=u,go-w .chmod go= .顺便说一句:我也总是错过-museradd的选项。至少基于 Debian 的系统应该有一个adduser命令,我推荐它而不是 useradd。如果您错过了-m选项,也可能值得考虑deluser,然后使用适当的选项重新创建用户。
编辑:添加-r用于复制目录。
dot*_*fle 16
这听起来可能是一个愚蠢的想法,但如果用户实际上没有做任何事情,你可以这样做:
cat /etc/passwd | cut -f 1 -d : >/tmp/users.list
然后编辑 /tmp/users.list 以仅包含您想要的用户。然后做:
for i in `cat /tmp/users.list`
do
userdel $i
useradd -m $i
done
Run Code Online (Sandbox Code Playgroud)
但是,许多基于 Redhat 的发行版会在您第一次登录时为您创建一个新的主目录,前提是在 /etc/passwd 中指定了该目录的位置。
要测试它,请执行“su -”并查看它是否“正确”。如果没有,我认为上面的脚本会很好地工作。
Dav*_*man 14
mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john
Run Code Online (Sandbox Code Playgroud)
我相信这应该可以解决问题
jgo*_*afe 10
您可以使用pam_mkhomedir 之类的东西来防止这在将来成为任何用户的问题。pam_mkhomedir 是一个 PAM 模块,如果用户的主目录不存在,它会在登录时自动创建用户主目录,并用 /etc/skel(或您指定的任何 skel 目录)中的文件填充它。
这也是一种很好的可扩展方法,因为如果您将来将用户存储库切换到诸如 LDAP 之类的目录服务,它将继续解决这个问题。