1. 如何创建一个UID为1200、家目录在 /data/user1 、登录Shell为 /bin/zsh 的系统账户?请描述具体操作步骤。
# 创建家目录
mkdir -p /data/user1
# 创建用户
useradd -u 1200 -d /data/user1 -s /bin/zsh sysuser1
# 验证
id sysuser1
# 输出应包含: uid=1200(sysuser1) gid=1200(sysuser1) groups=1200(sysuser1)
grep sysuser1 /etc/passwd
# 输出应包含: /data/user1:/bin/zsh
2. 某用户忘记密码且被锁定,管理员需要重置密码并解除锁定状态,请说明完整操作流程。
# 解锁账户
passwd -u lockeduser
# 重置密码
echo "NewSecurePass123" | passwd --stdin lockeduser
# 验证状态
passwd -S lockeduser
# 应显示"PS" (密码已设置)
3. 现需将用户 developer 的主组改为 devteam ,并同时加入 docker 和 git 作为附加组,写出具体实现方法。
# 修改主组
usermod -g devteam developer
# 添加附加组
usermod -aG docker,git developer
# 验证
id developer
# 输出应包含: groups=devteam,docker,git
4. 如何批量修改 /home 目录下所有用户家目录的属组,确保其所属组与用户名一致?描述关键步骤。
# 创建修复脚本
cat <<EOF > /root/fix_homedirs.sh
#!/bin/bash
for userdir in /home/*; do
username=\$(basename "\$userdir")
if id "\$username" &>/dev/null; then
chown -R :"\$username" "\$userdir"
echo "修复 \$userdir 的属组"
fi
done
EOF
# 执行脚本
chmod +x /root/fix_homedirs.sh
/root/fix_homedirs.sh
# 验证示例
ls -ld /home/developer
# 应显示所属组为developer
5. 某组 admins 需要设置组管理员,并允许该管理员自行添加/移除组成员,如何配置?
# 设置组管理员
gpasswd -A adminuser admins
# 验证
grep admins /etc/gshadow
# 输出应包含adminuser作为组管理员
6. 如何查询系统中所有属于 sudo 组的用户列表?写出具体方法。
# 方法1:直接查询
getent group sudo | cut -d: -f4
# 方法2:详细列表
grep sudo /etc/group | awk -F: '{print $4}' | tr ',' '\n'
# 方法3:通过用户查询
getent passwd | awk -F: '{print $1}' | while read user; do
if groups "$user" | grep -q '\bsudo\b'; then
echo "$user";
fi;
done
7. 需要强制用户 john 下次登录时修改密码,并设置密码30天后过期,如何实现?
# 强制下次登录修改密码
chage -d 0 john
# 设置30天过期
chage -M 30 john
# 验证
chage -l john
# 应显示"密码必须更改"和"密码过期后保留的天数:30"
8. 如何查看当前登录用户的UID、GID及所属的所有组信息?描述操作方式。
# UID和GID
echo "UID: $UID, GID: $(id -g)"
# 所有组信息
groups
# 或详细版本
id
9. 某用户离职后,需彻底删除其账户、家目录及所有关联文件,写出安全清理流程。
# 删除用户及家目录
userdel -r departeduser
# 删除邮件假脱机
rm -f /var/spool/mail/departeduser
# 查找残留文件
find / -user departeduser 2>/dev/null | xargs rm -rf
# 验证
id departeduser
# 应显示"no such user"
10. 如何限制普通用户使用空密码登录系统?请说明配置方法及关键文件。
# 编辑PAM配置
cat <<EOF >> /etc/pam.d/system-auth
auth required pam_unix.so nullok
EOF
# 编辑SSH配置
sed -i 's/^#PermitEmptyPasswords.*/PermitEmptyPasswords no/' /etc/ssh/sshd_config
# 重启SSH服务
systemctl restart sshd
# 验证
sshd -T | grep permitemptypasswords
# 应显示"permitemptypasswords no"