Answers:
这听起来像是一个愚蠢的主意,但是如果用户实际上没有做任何事情,则可以执行以下操作:
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的发行版将在您首次登录时为您创建一个新的主目录,前提是该目录应在/ etc / passwd中指定。
要进行测试,请执行“ su-”,然后查看它是否执行“正确的操作”。如果没有,我认为上述脚本会很好地工作。
for i in $(awk -F: '{print $1 }' /etc/passwd)
你也可以用 mkhomedir_helper
Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
sudo /sbin/mkhomedir_helper dka
?该/home
目录属于root
用户,因此我可以想象必须是root用户才能创建其子目录。
您将需要手动创建用户目录。这需要三个步骤:
/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
用于复制目录。
public_html
至少需要x
设置一些位,因此我建议chmod 0711
在每个主public_html
目录上使用默认目录和类似目录。
cp -r /etc/skel/.*
递归回到/ etc /并从此处复制所有数据(/etc/skel/.*与/ etc / skel / ..匹配)。superuser.com/a/61619/22153中的解决方案似乎可以正常工作:cp -r / etc / skel / home / user(/ home / user在运行命令之前不得存在)
*
以.
(点)扩展。因此..
是匹配的。我对吗?由于这种行为,许多外壳默认情况下都禁用了此功能。您使用哪个外壳?
mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john
我相信那应该可以解决
usermod: no changes
。并且未创建目录。该-m
选项也不起作用。
您可以使用诸如pam_mkhomedir之类的东西来防止将来成为任何用户的问题。pam_mkhomedir是一个PAM模块,如果不存在,它将在登录时自动创建用户的主目录,并使用/ etc / skel(或您指定的任何skel目录)中的文件填充该主目录。
这也是一种很好的可扩展方法,因为如果将来您将用户存储库切换到诸如LDAP之类的目录服务,它将继续解决此问题。
在我的情况下,主卷已损坏,我决定从头开始重建它,因为所涉及的数据不多,但是我想保留用户的登录信息,因此我使用以下脚本手动创建了主目录:
#!/bin/bash
cat /etc/passwd | while IFS=: read n x i g c d r
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
用用户john登录并从shell编写:
xdg-user-dirs-update
而已!不要使用sudo或su,您不需要root访问权限即可创建某些目录。从根帐户,您可以使用:
sudo -u john xdg-user-dirs-update
这样,您将以john身份执行命令,如果您与多个用户犯错,将很有用。
您可以简单地编辑/ etc / passwd。倒数第二个字段是用户的主目录。
greeblesnort:x:1000:1000:greeblesnort,,,:/home/greeblesnort:/bin/bash
usermod -d /home/john john
要么
usermod --home /home/john john
并阅读
man usermod
;)