[toc]
Linux用户组管理
Linux用户管理
useradd命令创建用户过程
1.检查参数和选项
useradd解析传入的选项,如-u(UID)、-g(主组)、-G(附加组)、-d(主目录)、-s(Shell)、-c(用户信息)等
2.选择 UID 和 GID
-
如果未指定 UID,则系统会从
/etc/login.defs读取UID_MIN和UID_MAX,自动分配可用的 UID$ egrep -v '^$|#' /etc/login.defsMAIL_DIR /var/spool/mailUMASK 022HOME_MODE 0700PASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_WARN_AGE 7UID_MIN 1000UID_MAX 60000SYS_UID_MIN 201SYS_UID_MAX 999SUB_UID_MIN 100000SUB_UID_MAX 600100000SUB_UID_COUNT 65536GID_MIN 1000GID_MAX 60000SYS_GID_MIN 201SYS_GID_MAX 999SUB_GID_MIN 100000SUB_GID_MAX 600100000SUB_GID_COUNT 65536ENCRYPT_METHOD YESCRYPTUSERGROUPS_ENAB yesCREATE_HOME yesHMAC_CRYPTO_ALGO SHA512 -
如果未指定主组,则
useradd会创建与用户名相同的组(除非使用-N选项)
3.更新 /etc/passwd 和 /etc/shadow
-
useradd在/etc/passwd添加用户记录,例如username:x:1001:1001:User Info:/home/username:/bin/bash创建一个
test用户$ grep test /etc/passwdtest:x:1002:1002::/home/test:/bin/bash -
在
/etc/shadow添加密码字段(加密存储)username:!!:19453:0:99999:7:::查看
test用户说明这里的
!!表示密码未设置,需要passwd username进行设置$ grep test /etc/shadowtest:!!:20172:0:99999:7:::
4.更新 /etc/group
-
如果指定了附加组(
-G),useradd会在/etc/group中更新相关组的成员列表$ grep test /etc/grouptest:x:1002:
5.创建用户主目录(可选)
- 如果使用
-m(默认) 选项,useradd会在/home下创建username目录,并从/etc/skel复制默认配置文件(如.bashrc、.profile)
6.设置默认 shell
-
若未指定
-s,默认使用/etc/default/useradd中的SHELL配置$ cat /etc/default/useradd# useradd defaults fileGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes
7.应用 SELinux/ACL 设置(如适用)
- 在 SELinux 启用的系统上,可能会使用
restorecon设置正确的 SELinux 上下文。 - 若系统启用了 ACL,则会根据
/etc/login.defs进行相关操作
创建完成后,你可以用 id 用户名 或 getent passwd 用户名 来检查用户信息
id 命令
$ id test
uid=1002(test) gid=1002(test) groups=1002(test)
getent 命令
$ getent passwd test
test:x:1002:1002::/home/test:/bin/bash