我创建了一些用户:
$ useradd john
我忘了指定参数-m
来创建主目录并将骨架文件复制给每个用户。现在我想这样做,并且我不想重新创建所有用户(必须有更简单的方法)。那么,有没有办法创建用户目录和复制骨架文件呢?
我考虑过创建目录,将它们分配给相应的用户,复制所有骨架文件并将它们分配给相应的用户。但是如果有这样的命令useradd -m
不会再次创建用户,而是创建目录,那就更好了。
我创建了一些用户:
$ useradd john
我忘了指定参数-m
来创建主目录并将骨架文件复制给每个用户。现在我想这样做,并且我不想重新创建所有用户(必须有更简单的方法)。那么,有没有办法创建用户目录和复制骨架文件呢?
我考虑过创建目录,将它们分配给相应的用户,复制所有骨架文件并将它们分配给相应的用户。但是如果有这样的命令useradd -m
不会再次创建用户,而是创建目录,那就更好了。
你也可以使用
mkhomedir_helper
您将需要手动创建用户目录。这需要三个步骤:
/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= .
顺便说一句:我也总是想念
-m
useradd 的选项。至少基于 Debian 的系统应该有一个adduser
命令,我建议使用 useradd。如果您错过了-m
选项,也可能值得考虑deluser
,然后使用适当的选项重新创建用户。编辑:添加
-r
用于复制目录。这可能听起来像一个愚蠢的想法,但如果用户实际上没有做任何事情,你可以这样做:
cat /etc/passwd | cut -f 1 -d : >/tmp/users.list
然后编辑 /tmp/users.list 以仅包含您想要的用户。然后做:
但是,许多基于 Redhat 的发行版会在您第一次登录时为您创建一个新的主目录,前提是它在 /etc/passwd 中指定的目录应该在哪里。
要对此进行测试,请执行“su -”并查看它是否“正确”。如果没有,我认为上面的脚本会很好地工作。
我相信这应该可以解决问题
您可以使用诸如pam_mkhomedir 之类的东西来防止这在将来成为任何用户的问题。pam_mkhomedir 是一个 PAM 模块,如果用户的主目录不存在,它会在登录时自动创建它,并使用 /etc/skel(或您指定的任何 skel 目录)中的文件填充它。
这也是一种很好的可扩展方法,因为如果您将来将用户存储库切换到像 LDAP 这样的目录服务,它将继续解决这个问题。
就我而言,主卷已损坏,我决定从头开始重建它,因为涉及的数据不多,但我想保留用户的登录信息,因此我使用此脚本手动重新创建了主目录:
如果您编辑
/etc/login.defs
包含然后将自动为任何未来的用户创建主目录,除非您告诉系统不要这样做。
另一种选择是使用 PAM 登录,并使用 pam_mkhomedir 模块在第一次登录时自动创建 homedir。
使用用户 john 登录并从 shell 写入:
而已!不要使用 sudo 或 su,你不需要 root 权限来创建一些目录。从 root 帐户,您可以使用:
这样,您将以 john 的身份执行命令,如果您对多个用户犯了错误,这将很有用。
我做 a 后的第一步
useradd
是su - <user>
.创建主目录、复制骨架等——至少在我最常这样做的 CentOS 4 机器上。
这正是该
mkhomedir_helper $USERNAME
命令的作用。