Linux 用户和用户组管理

一:用户配置文件

1,用户信息文件/etc/passwd
保存用户基本信息的文件
man 5 passwd  查看passwd配置文件的命令

第一列:第二列:第三列:第四列:第五列:第六列:第七列

第一列:用户名称
第二列:密码标识  放在etc/shadow中 
第三列:UID (用户ID)  唯一确定每个用户的,类似于人的身份证号
 0     超级用户
 1~499    (系统用户)伪用户   该类用户不能登录,也不能删除,一旦删除会导致系统启动失败。
 500~56635   普通用户

第四列:GID(初始用户组ID) ,一般不推荐修改用户的初始组。
 用户组分两种:初始组,附加组。
第五列:用户说明
第六列:家目录(宿主目录)
 普通用户:/home/用户名
 超级用户:/root/
第七列:登录之后的Shell
 shell:linux的命令解释器。
 标准的shell是/bin/bash/  能够登录的用户的shell必须是/bin/bash/
 不能登录的shell /sbin/nologin

2,影子文件 /etc/shadow   该文件的权限是--------- 只有root用户能读
第一列:第二列:第三列:第四列:第五列:第六列:第七列:第八列:第九列
第一列:用户名
第二列:加密密码
 加密算法是SHA512散列加密
 !!或者是*表示是没有密码
第三列:密码的最后一次修改的日期
 1970年1月1日作为标准时间,以后每过一天增加1
第四列:两次密码修改的间隔时间(和第三个字段相比)
第五列:密码的有效期    天
第六列:密码到期的警告时间     天
第七列:密码过期后的宽限时间   天
 0或者不写表示到期立即失效
 -1表示永远不会失效
第八列:帐号失效时间
第九列:保留

时间戳换算的方法:

 
Linux 用户和用户组管理


 3,用户组文件 /etc/group
第一列:第二列:第三列:第四列

第一列:用户组名字
第二列:组密码标志    /etc/gshadow中
第三列:GID(组ID)
第四列:组中附加用户  

4,组密码文件 /etc/gshadow
第一列:第二列:第三列:第四列
第一列:组名
第二列:组密码
第三列:组管理员名
第四列:组中附加用户


5,和用户相关的配置文件
1,用户的家目录
普通用户家目录:/home/用户名/
超级管理员家目录:/root/

2,用户的邮箱
/var/spool/mail/用户名/

3,用户模版目录
/etc/skel/

二:用户管理

用户添加命令 useradd
语法:useradd [选项] 用户名
-u UID: 指定用户的UID号
-d 家目录:手工指定用户的家目录
-c 用户说明:手工指定用户的说明
-g 组名:手工指定用户的初始组
-G 组名:指定用户的附加组
-s shell:手工指定用户登录的shell  默认是/bin/bash

eg:useradd user1  添加了user1用户
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/home/用户名
/var/spool/mail/用户名

用户默认值文件
a,/etc/default/useradd
GROUP=100      #用户默认组
HOME=/home  #用户家目录
INACTIVE=-1   #密码过期宽限天数(/etc/shadow文件第7个字段)
EXPIRE=   #密码失效时间(etc/shadow文件第8个字段)
SHELL=/bin/bash  #默认shell
SKEL=/etc/skel  #模版目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱

b,/etc/login.defs
PASS_MAX_DAYS 99999   #密码有效期  (/etc/shadow文件第5个字段)
PASS_MIN_DAYS 0 #密码修改间隔  (/etc/shadow文件第4个字段)
PASS_MIN_LEN 5 #密码最小位数 (PAM替代了此设置)
PASS_WARN_AGE 7 #密码到期警告天数(/etc/shadow文件第6个字段)
UID_MIN  500 #最小和最大UID范围
UID_MAX  60000 #
GID_MIN  500 #最小和最大GID范围
GID_MAX  60000 #

ENCRYPT_METHOD SHA512  #  加密模式


修改用用户密码命令 passwd
语法:passwd [选项] 用户名
 -S 查看密码状态 S是大S
 -l 锁定用户
 eg: passwd -l user1 锁定用户user1 
 锁定用户 实际是在密码前面加上!!(双感叹号)
 -u 解锁用户
 eg: passwd -u user1 解锁用户user1
 解锁用户 实际是去掉密码前的!!(双感叹号)
 --stdin
 eg:echo "123456" | passwd --stdin user1
 给用户user1 设置密码123456  这种做法用在shell脚本里面。适合批量增加密码
 
普通用户修改密码的做法是:
1,passwd
2,原始密码
3,新密码
4,确认密码

修改用户信息命令 usermod
语法:usermod [选项] 用户名
 -L  锁定用户 L是大写
 锁定用户 实际是在密码前面加上!(感叹号)
 -U  解锁用户 U是大写
 解锁用户 实际是在密码前去掉!(感叹号)
usermod 命令是针对已经存在的用户的。

修改用户密码状态 change
语法:change [选项] 用户名
 -l 列出用户密码的详细状态
 -d 日期 用户修改密码的最后日期  (shadow文件的3字段)
 -m 两次密码修改间隔 (shadow文件的4字段)
 -M 密码有效期 (shadow文件的5字段)
 -W 密码过期前警告天数 (shadow文件的6字段)
 -I 密码过期后的宽限天数 (shadow文件的7字段)
 -E 帐号失效时间 (8字段)

 change -d 0 user1 该条命令的意思是把密码修改日期归0了(shadow文件的3字段)
 这样用户一登录就要修改密码。
 
删除用户密码 userdel
语法:userdel [选项] 用户名

也可以手工删除用户
参考 手工删除用户截图:

 
Linux 用户和用户组管理
 

id 命令  查看用户ID
语法:id 用户名
eg:id user1 

切换用户身份 su
语法:su [选项] 用户名
 -  选项只使用"-" 代表连用户环境一起切换
 -c 仅执行一次命令,不切换用户身份
eg: su - root  切换到root (连环境一起切换、需要输入root的密码,从root 切回到普通用户不需要输入密码)
su - root -c 'add user3' 借用root身份执行 'add user3' 命令

 who命令
查看登录用户的信息的命令
语法:who
 
登录的用户名    登录的终端(tty本地终端 pts远程终端 )  登录时间   登录主机ip地址(没写表示是本机登录)
 

whoami 命令

查看当前登录的用户的用户名


w命令
查看登录用户(在线用户)详情信息的命令

三:用户组管理

 添加组 groupadd
语法:groupadd [选项] 组名
 -g GID 组id

修改组 groupmod
语法:groupmod [选项] 语法
 -g GID 修改组id
 -n  修改组名
eg: groupmod -n groupnewname groupoldname 将组名为"groupoldname"的名字修改为"groupnewname"

删除组 groupdel
语法:groupdel 组名
eg: groupdel group1 删除用户组group1

用户和组的关系有两种 一是初始用户,二是附加用户。
删除组时如果组下面有初始用户时候要先删除组下的用户后才能再删除用户。如果组下面有附加用户时候可以直接删除组。

将用户加入组或从组中删除 gpasswd
语法:gpasswd [选项] 组名
 -a 用户名 把用户加入组
 -d 用户名 把用户从组中删除
gpasswd 加到指定组中去的用户是附加用户,不是初始用户,是附加用户,初始用户在/etc/group中是看不见的。