Linux用户和用户组管理

来源:互联网 发布:java什么是类 编辑:程序博客网 时间:2024/04/29 15:07

一 用户配置文件
1 用户信息文件 /etc/passwd
我们先打开这个文件看一下
这里写图片描述
这里涉及到一些格式,我们还记得用man可以查看配置信息的帮助
man 5 passwd
这里写图片描述
这里看到:分割的每一项都有做详细说明,我们来总结下这里
第1个字段:用户名称

第2个字段:密码标志,我们可以看到都是x,那么真实的密码在哪里呢,我们来看/etc/shadow文件
这里写图片描述
这里我们看到root对应的第二个字段就是root的密码,显然是经过加密的,那么为什么密码不直接放在passwd中呢,我们看下两个文件的详细权限
这里写图片描述
对于passwd的,一般用户还是可以可读的,但是对于shadow,就什么权限都没有了,只有root可以查看,这样做是为了更安全些。

第3个字段:UID(用户ID)
我们可以发现在passwd中除了root用户我们认识,还有很多其他的我们没见过的,这些叫系统用户(伪用户),不能登录,只是在做系统调用服务的时候用到,我们不用管它们即可
0:超级用户
1-499 系统用户(伪用户)
500-65535 普通用户

第4个字段:GID(用户初始组ID)
这里我们要区分下初始组和附加组
初始组:就是指用户一登录就立刻拥有这个组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组
附加组:指用户可以加入多个其它的用户组,并拥有这些组的权限,附加组可以有多个

第5个字段:用户说明,这个一般就是描述信息

第6个字段:家目录
普通用户:/home/用户名/
超级用户:/root/

第7个字段:登录之后的shell

二 影子文件 /etc/shadow
我们打开这个文件来看一下
这里写图片描述
第1个字段:用户名

第2个字段:加密密码,加密算法是SHA512加密算法,如果是“!!”“*”代表没有密码,不能登录

第3个字段:密码最后一次修改日期,我们看到root的这个字段是17105,这个是使用1970年1月1日作为标准时间,每过一天,时间戳+1

第4个字段:两次密码的修改间隔时间(和第3个字段相比),就是说多少天后可以修改这个密码,我们看到root用户的这个字段是0

第5个字段:密码有效期(和第3个字段相比),我们看到root用户的这个字段是99999,基本上是永久有效

第6个字段:密码到期前的警告天数(和第5个字段相比),也就说比如我们在第5个字段设置了一个密码有效期,比如10天,然后我们这个字段设置是7,那么就是还剩7天到期的时候,就会有警告了。

第7个字段:密码过期后的宽限天数(和第5个字段相比)
0代表密码过期后立即失效,-1代表永远不会失效

第8个字段:账号失效的时间(要用时间戳表示),如果这个字段设置了失效时间,前面设置的有效期就没用了。

第9个字段:保留

那么我们刚才一直在说时间戳,接下来我们看下时间戳的换算公式
1 把时间戳换算为日期
date -d “1970-01-01 16066 days”
我们把16066的时间戳转换为日期
这里写图片描述

2 把日期转换为时间戳
这里写图片描述

三 组信息文件/etc/group和组密码文件/etc/gshadow
1 组信息文件/etc/group
我们打开这个文件看一下
这里写图片描述
第1个字段:组名
第2个字段:组密码标志
第3个字段:GID
第4个字段:组中附加用户

2 组密码文件/etc/gshadow
这里写图片描述
第1个字段:组名
第2个字段:组密码
第3个字段:组管理员用户名
第4个字段:组中附加用户

兄弟连沈超老师说不推荐组密码方式管理,一般用root管理,所以这里了解即可

四 用户管理相关文件
1 用户的家目录
普通用户 :/home/用户名/,所有者和所属组都是此用户,权限是700
超级用户:/root/,所有者和所属组都是root,权限是550

2 用户的邮箱
/var/spool/mail/用户名/
比如我们创建一个用户fuqiang,然后到这个路径下查看,就会发现这个路径下自动生成了这个新用户的邮箱
这里写图片描述

3 用户模板目录
/etc/skel/
我们看下这个目录
这里写图片描述
我们看到这个目录下的内容和/home/用户名下的内容是一样的,也就是说,在创建用户的时候,在/home/用户名下,就会自动生成这些模板目录下的文件

五 用户管理命令
1 用户添加命令useradd:
useradd 选项 用户名
选项:
-u UID 手动指定用户的UID,我们知道普通用户的UID是从500,自动往后排的,如果我想设置一个吉利的数字,比如888,就可以用这个选项
-d 家目录,比如我们不想放在/home下,就可以用这个选项改
-c 用户说明
-g 组名:手工指定用户的初始组,这个一般不建议修改
-G 组名:手工指定用户的附加组
-s shell:手工指定用户的登录shell,默认是/bin/bash

那么如果我们不加任何选项,默认是怎么样的呢,比如我现在添加一个fq的用户
这里写图片描述
我们来查看一下跟用户相关的文件信息
这里写图片描述
我们可以看到默认的这些信息
那么用户默认值文件在哪里呢,
这里写图片描述
这里写图片描述

2 修改用户密码passwd:
passwd 选项 用户名
-S 查询用户密码的密码状态,仅root用户可用
这里写图片描述
2016-11-03 用户密码设定时间
0 密码修改间隔时间
99999 密码有效期
7 警告时间
-1 密码不失效

-l 暂时锁定用户,仅root用户可用,锁定用户,这个用户就不能登录了,其实就是修改shadow文件中对应密码的字段,前面加!!
-u 解锁用户,仅root用户可用

还可以使用字符串作为用户的密码
echo “123 ”| passwd -stdin fq
这个主要用于shell编程,批量创建用户

3 修改用户信息 usermod:
usermod 选项 用户名
-u UID 修改用户的UID
-G 组名 修改用户的附加组
-L 锁定用户
-U 解锁用户
这个命令格式跟useradd类似,只不过useradd是新增,这个是修改已有

4 修改用户密码状态 chage
chage 选项 用户名
-d日期 修改密码最后一次更改日期(shadow第3个字段)
-m天数 两次密码修改间隔(4字段)
-M 天数 密码有效期(5字段)
-W天数 密码过期前有效期(6字段)
-I 天数 密码过期后宽限天数(7字段)
-E 日期 账号失效日期(8字段)
其实这样也都可以手工修改shadow文件

chage -d 0 fq
把fq的密码最后一次更改日期归0 ,这样用户一登录就要修改密码

5 删除用户userdel
userdel 选项 用户名
-r 删除用户的同时删除用户家目录
当然除了这种方式外,我们也可以手工删除用户,就是上面说的涉及到用户的各个文件去删除即可

6 查看用户id
id 用户名
这里写图片描述
比如我执行usermod -G root fuqiang,然后再用id查看
这里写图片描述
我们看到fuqiang用户多了一个附加组

7 切换用户身份su
我们一般用su 直接加用户名进行切换,但是这样用户的环境变量会有问题,具体可用env命令查看,会发现有些环境并没有切换过去
加选项 - 会连同用户的环境变量一起切换
这里写图片描述
-c 仅执行一次命令,而不切换用户
比如:su -root -c “useradd user3”

六 用户组管理命令
1 添加用户组groupadd 选项 组名
-g GID 指定组ID
我们先添加一个fuqianggroup的组 groupadd -g 600 fuqianggroup
然后到/etc/group下看看
这里写图片描述
可以看到这个组已经添加成功了

2 修改用户组groupmod 选项 组名
-g GID 指定组的GID
-n 修改组名
比如我想把刚刚创建的fuqianggroup组修改为fqgroup
这里写图片描述
再来看下/etc/group
这里写图片描述
发现修改成功了

3 删除用户组groupdel 组名
注意:这样只能删除附加组,如果想删除初始组,必须把初始组的用户也删掉才行。

4 把用户填加到组里或者从组中删除 gpasswd 选项 组名
-a 用户名:把用户加入组
-d 用户名:把用户从组中删除
我想把fuqiang这个用户添加到刚才的fqgroup中
gpasswd -a fuqiang fqgroup
这里写图片描述
再把它删除
gpasswd -d fuqiang fqgroup
这里写图片描述

好了,Linux用户和用户组管理就总结到这里,如有问题,欢迎指正,谢谢。

0 0
原创粉丝点击