man useradd 可以查看到以下相关的有用信息
一、用户配置文件
1.1 用户信息文件:/etc/passwd
root: x:0:0:root:/root:/bin/bash
字段 | 作用 |
---|---|
第1个字段 | 用户名称 |
第2个字段 | 密码标志 x:代表此用户有密码,最后会去/etc/shadow中去找密码,如果不写,代表没有密码 |
第3个字段 | UID(用户ID) 0:超级用户, 1-499:系统用户(伪用户)500-65535:普通用户 |
第4个字段 | GID(用户初始组ID) |
第5个字段 | 用户说明 |
第6个字段 | 家目录 普通用户:/home/用户名/, 超级用户:/root/ |
第7个字段 | 登录之后的Shell |
如果想把一个普通用户变成超级用户,只需要将其UID改写成0
初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户相同的组名作为这个用户的初始组
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个
1.2 影子文件:/etc/shadow
root:$6jtjmHA2rocUmD1qwrbe6EuSPC11wW8wDuK2qAudUnBZ3iKg.MaYNRLKUf1Mp0OilcXwA74msPaeUp/3OIL4sf/:18267:0:99999:7:::
字段 | 作用 |
---|---|
第1个字段 | 用户名称 |
第2个字段 | 加密密码 , 如果密码位是"!!"或“*”代表没有密码,不能登录 |
第3个字段 | 密码最后一次修改日期,使用1970年1月1日作为标准时间,每过一天时间戳加1 |
第4个字段 | 再次修改密码时,两次密码的修改间隔时间(和第3个字段相比)0: 代表再次修改密码时,不需要时间间隔 |
第5个字段 | 密码有效期(和第3个字段相比) |
第6个字段 | 密码修改到期前的警告天数(和第5字段相比) |
第7个字段 | 密码过期后的宽限天数(和第5字段相比)0:代表密码过期后立即生效,-1:代表密码永远不会失效 |
第8个字段 | 账号失效时间,要用时间戳表示 |
第9个字段 | 保留 |
1.3 组信息文件/etc/group和组密码文件/etc/gshadow
/etc/group
root: x:0:
字段 | 作用 |
---|---|
第1个字段 | 组名 |
第2个字段 | 组密码标志 |
第3个字段 | GID |
第4个字段 | 组中附加用户 |
/etc/gshadow
cdrom:*::panxiong
字段 | 作用 |
---|---|
第1个字段 | 组名 |
第2个字段 | 组密码 |
第3个字段 | 组管理员用户名 |
第4个字段 | 组中附加用户 |
二、用户管理相关件
用户添加的相关文件
- 用户的家目录
- 普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
- 超级用户:/root/,所有者和所属组都量root用户,权限是550
- 用户的邮箱
- /var/spool/mail/用户名/
- 用户模板目录
- /etc/skel/
创建家目录时,里面初始的文件就是从/etc/skel/目录中拷贝过去的
- /etc/skel/
三、用户管理命令
- 常用命令
# 1. 用户添加命令:useradd # useradd [option] 用户名 # -u UID:手工指定用户的UID号 # -d 家目录:手工指定用户的家目录 # -c 用户说明:手工指定用户的说明 # -g 组名:手工指定用户的初始组 # -G 组名:指定用户的附加组,多个附加组可以用逗号分隔 # -s shell:手工指定用户的登录shell。默认是/bin/bash useradd px # 创建一个用户后,系统会自动修改或添加以下的文件: # grep px /etc/passwd # grep px /etc/shadow # grep px /etc/group # grep px /etc/gshadow # ll -d /home/px # ll /var/spool/mail/px useradd -u 550 -G root,bin -d /px -c "test user" -s /bin/bash px # # 2. 修改用户密码:passwd # passwd [option] 用户名 # -S:查询用户密码的密码状态。仅root用户可用 # -l:暂时锁定用户,远程就没有办法登录,原理是在/etc/shadow下相关用户的密码前加上了!!。仅root用户可用 # -u:解锁用户。仅root用户可用 # --stdin:可以通过管道符输出的数据作为用户的密码 # 修改当前用户的密码 passwd passwd -S px # 输出 px 01/06/2020 0 99999 7 -1 # 用户名密码设定时间(01/06/2020)密码修改间隔时间(0) 密码有效期(99999) # 警告时间(7) 密码不失效(-1) echo "123" | passwd --stdin px # 3. 修改用户信息:usermod # usermod [option] 用户名 # -u UID:修改用户的UID号 # -c 用户说明:修改用户的说明信息 # -G 组名:修改用户的附加组 # -L:临时锁定用户 # -U:解锁用户锁定 # 修改用户说明 usermod -c "test user" px # 把px用户加入root组 usermod -G root px # 锁定用户 usermod -L px # 解锁用户 usermod -U px # 4. 修改用户密码状态:chage # chage [option] 用户名 # -l:列出用户的详细密码状态 # -d 日期:修改密码最后一次更改日期(shadow 3字段) # -m 天数:再次密码修改间隔(4字段) # -M 天数:密码有效期(5字段) # -W 天数:密码过期前警告天数(6字段) # -I 天数:密码过后宽限天数(7字段) # -E 天数:账号失效时间(8字段) # 这个命令其实是把密码修改日期归0了(shadow 3字段),这样用户一登陆就要修改密码 chage -d 0 px # 5. 删除用户:userdel # userdel [-r] 用户名 # -r:删除用户的同时删除用户家目录 # 6. 用户切换命令:su # su [option] 用户名 # - :选项只使用“-” 代表连带用户的环境变量一起切换 # -c 命令:仅执行一次命令,而不切换用户身份 su - root # 不切换成root, 但是执行useradd命令添加px用户 su - root -c "useradd px" # 7. 查看用户ID # id 用户名 id px # 输出:uid=0(root) gid=0(root) groups=0(root)
Linux下创建用户时会用到useradd和adduser这两个命令,他们的区别如下:
1.使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:一无Home Directory,二无密码,三无系统Shell。
2.使用adduser时,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户。
adduser会提示设置密码,而useradd不会。
adduser会创建用户目录,比如/home/freebird freebird是用户,useradd不会
dduser会创建用户目录,比如/home/freebird freebird是用户,useradd不会
adduser会询问全名,房间号码,电话号码等用户信息,useradd不会
在Linux中,adduser更适合初级使用者,因为不用去记那些繁琐的参数选项,只要跟着系统的提示一步一步进行下去就行,缺点就是整个创建过程比较复杂而漫长;而useradd比较适合有些高阶经验的使用者,往往一行命令加参数就能解决很多问题,所以创建起来十分方便。
-
手工删除用户:
# 1. 删除/etc/passwd中相关内容 vim /etc/passwd # 2. 删除/etc/shadow中相关内容 vim /etc/shadow # 3. 删除/etc/group相关内容 vim /etc/group # 4. 删除/etc/gshadow中相关内容 vim /etc/gshadow # 5. 删除邮箱 rm -rf /var/spool/mail/用户名/ # 6. 删除家目录 rm -rf /home/用户名/
-
用户默认值文件
# 1. /etc/default/useradd文件 vim /etc/default/useradd - GROUP=100 # 用户默认组 - HOME=/home # 用户家目录 - INACTIVE=-1 # 密码过期宽限天数(shadow文件7字段) - EXPIRE= # 密码失效时间(shadow文件8字段) - SHELL=/bin/bash # 默认shell - SKEL=/etc/skel # 模板目录 - CREATE_MAIL_SPLLO=yes # 是否建立邮箱 # 2 /etc/login.defs PASS_MAX_DAYS 99999 # 密码有效期(5) PASS_MIN_DAYS 0 # 密码修改间隔(4) PASS_MIN_LEN 5 # 密码最小5位(PAM) PASS_WANR_AGE 7 # 密码到期警告(6) UID_MIN 500 # 最小和最在UID范围 UID_MAX 60000 ENCRYPT_METHOD SHA512 # 加密模式
四、用户组管理命令
# 8. 添加用户组
# groupadd [option] 组名
# -g GID:指定组ID
groupadd group1
# 10. 修改用户组
# groupmod [option] 组名
# -g GID:修改组ID
# -n 新组名:修改组名
# 把组名group1修改为newgrp
groupmod -n newgrp group1
# 11. 删除用户组
# groupdel 组名
groupdel newgrp
# 12.把用户添加入组或组中删除
# gpasswd 选项 组名
# -a 用户名:把用户加入组
# -d 用户名:把用户从组中删除
# 把用户px加入newgrp组中
gpasswd -a px newgrp
# 把用户px从newgrp组中删除
gpasswd -d px newgrp