我创build了一些用户:
$ useradd john
我忘了指定参数-m
来创build主目录,并将骨架文件复制到每个用户。 现在我想这样做,我不想重新创build所有用户(必须有一个更简单的方法)。 那么,有没有办法创build用户目录并复制骨架文件?
我想创build目录,将它们发送给相应的用户,复制所有的骨架文件并将它们发送给相应的用户。 但是如果有一个像useradd -m
这样的命令不会再创build用户,而是创build目录,那会更好。
这可能听起来像一个愚蠢的想法,但如果用户没有做任何事情,你可以这样做:
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
但是,许多基于Redhat的发行版在第一次login时会为您创build一个新的主目录,只要在/ etc / passwd文件夹中指定该目录即可。
要testing一下,做一个“苏”,看看它是否“正确的事情”。 如果没有的话,我想这个脚本会很好地工作。
你也可以使用mkhomedir_helper
Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
您将需要手动创build用户目录。 这需要三个步骤:
/etc/passwd
,通常会有一个/ home / login条目。 最后设置正确的权限:
mkdir /home/YOU
cd /home/YOU
cp -r /etc/skel/. .
chown -R YOU.YOURGROUP .
chmod -R go=u,go-w .
chmod go= .
顺便说一句:我总是会错过useradd的-m
选项。 至less基于Debian的系统应该有一个adduser
命令,我推荐使用useradd命令。 如果你错过了-m
选项,它也可能值得考虑deluser
,然后用适当的选项重新创build用户。
编辑:添加-r
复制也目录。
mkdir -p /home/john chown john:john /home/john usermod -d /home/john john
这应该做我相信的诡计
您可以使用像pam_mkhomedir这样的东西,以防止这将成为未来的任何用户的问题。 pam_mkhomedir是一个PAM模块,如果它不存在,它将在login时自动创build一个用户的主目录,并使用/ etc / skel(或者你指定的任何skel目录)中的文件填充它。
这也是一个很好的可扩展的方法,因为如果将来将用户存储库切换到像LDAP这样的目录服务,它将继续解决这个问题。
在我的情况下,家庭卷已损坏,我决定只是从头开始重build,因为涉及的数据不多,但我想保留用户的login信息,所以我用这个脚本手动重新创build了主目录:
#!/bin/bash cat /etc/passwd | while IFS=: read nxigcdr do # my system has uid started at 1000, but has nfsnobody at 65534: if [[ "$i" -ge 1000 && "$i" -le 65000 && ! -x "$d" ]] then cp -av /etc/skel "$d" chown -R "$i:$g" "$d" # may needed in SELinux system: restorecon -R "$d" # add your chmod as your need: chmod -R o-rw "$d" fi done
如果你编辑/etc/login.defs
来包含
CREATE_HOME yes
那么主目录将自动为未来的用户创build,除非您告诉系统不要这样做。
另一个select是使用PAM进行login,并使用pam_mkhomedir模块在第一次login时自动创buildhomedir。
做一个useradd
之后,我的第一步是su - <user>
。
创build主目录,复制骨架等 – 至less在我最常使用的CentOS 4框上。
这正是mkhomedir_helper $USERNAME
命令的作用。
你可以简单地编辑/ etc / passwd。 第二个到最后一个字段是用户的主目录。
greeblesnort:x:1000:1000:greeblesnort,,,:/home/greeblesnort:/bin/bash
usermod -d /home/john john
要么
usermod --home /home/john john
并阅读
man usermod
;)