开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

确保/etc/passwd中的组都存在

“/etc/passwd”中指定的用户组在“/etc/group”中不存在,将引发权限管理风险。手动修改这两个文件时,若操作不当,容易导致用户组配置错误,影响系统安全性。因此,应确保“/etc/passwd”中涉及的所有用户组在“/etc/group”中真实存在。

操作步骤

  1. 请通过如下脚本进行检查。
    #!/bin/bash    
    
    grep -E -v '^(halt|sync|shutdown)' "/etc/passwd" | awk -F ":" '($7 != "/bin/false" && $7 != "/sbin/nologin") {print $4}' | while read group; 
    do
         grep -q -P "^.*?:[^:]*:$group:" "/etc/group"
         if [ $? -ne 0 ]; then
             echo "Group $group not found"
         fi
    done
    • 若无返回输出,则表示用户组均设置正确,无需执行后续操作。
    • 若有返回输出,请执行2
  2. 分析两个文件不匹配的原因,支持以下两种修复方式。
    • 方式一:通过删除账号,重新添加的方式进行修复。
      userdel -r test
      useradd test
    • 方式二:通过删除或添加组的方式进行修复(其中,xxx表示GID)。
      groupdel testgroup
      groupadd -g xxx testgroup