[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.defs
MAIL_DIR /var/spool/mail
UMASK 022
HOME_MODE 0700
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
SUB_UID_MIN 100000
SUB_UID_MAX 600100000
SUB_UID_COUNT 65536
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
SUB_GID_MIN 100000
SUB_GID_MAX 600100000
SUB_GID_COUNT 65536
ENCRYPT_METHOD YESCRYPT
USERGROUPS_ENAB yes
CREATE_HOME yes
HMAC_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/passwd
test:x:1002:1002::/home/test:/bin/bash -
在
/etc/shadow
添加密码字段(加密存储)username:!!:19453:0:99999:7:::
查看
test
用户说明这里的
!!
表示密码未设置,需要passwd username
进行设置$ grep test /etc/shadow
test:!!:20172:0:99999:7:::
4.更新 /etc/group
-
如果指定了附加组(
-G
),useradd
会在/etc/group
中更新相关组的成员列表$ grep test /etc/group
test:x:1002:
5.创建用户主目录(可选)
- 如果使用
-m
(默认) 选项,useradd
会在/home
下创建username
目录,并从/etc/skel
复制默认配置文件(如.bashrc
、.profile
)
6.设置默认 shell
-
若未指定
-s
,默认使用/etc/default/useradd
中的SHELL
配置$ cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_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)