【Linux基础】用户管理

用户管理



1.用户/组配置文件

1.1用户基本信息

  用户的基本信息在文件/etc/passwd里面,样子如下所示,每一行代表一个用户,共分为7列。

在这里插入图片描述

  用户分为三种,即特权用户、系统用户和普通用户,他们用uid进行区分。0代表特权用户,即root超管用户,1到499是系统用户,1000(含)以后是普通用户。特别地,CentOS7以前,500以后就是普通用户,CentOS7以后,500到999也留给系统用户使用。


  下面以超管为例,讲解7列字段的含义:

rootx00root/root/bin/bash
用户名密码占位符uidgid用户描述,默认用户名家目录登录系统时的命令解释器

x是密码占位符,真正的密码以加密的形式存储到了/etc/shadow文件里面。

每一个用户都有一个用户id和一个组id,当创建一个用户时,会伴随着一个组的创建,这个组叫做关于这个用户的基础组,关于组的信息存储到了/etc/group里面。

用户描述,即给用户的相关信息补充,比如上面的mysql的系统用户的描述就是MySQL Server.

登录系统的命令解释器简单理解就是当用户登录时,会以什么样的方式处理。通常情况的一种方式就是/bin/bash。如果想让用户不能登录,那么可以通过相配的配置,将命令解释器设置为/sbin/nologin,这样即使用户有密码也不能登录,类似于冻结账户。


演示如下:

上面batman的相关信息是:batman:x:1003:1003::/home/batman:/bin/bash
也就是说可以登录的。现在通过设置,让其不能登录。


用超管用户修改batman的登录时的shell为 /sbin/nologin ,然后尝试切换用户batman登录,发现batman无法登录。

在这里插入图片描述


用超管用户把batman登录时的shell修改回来以后,发现可以登录batman。
在这里插入图片描述



1.2用户密码信息

  用户密码信息相关的文件是/etc/shadow,大概的样子如下所示(一些信息我打码了)。

在这里插入图片描述

用户密码信息分为9个字段,下面对应batman的信息来解释:

  1. 用户名:batman

  2. 口令:$6$k/Z8WMY2$rtNrEBOZqwCvWRObCIXWN/4wbrs1KaEtm4n5ec.w2rCiwRbfs4I6QQ4r3MoVLuxHch9L5CiMWe0wCI7dl/sN90

    口令由加密算法和加密后的信息组成,算法如下,简单了解即可:

$1$代表MD5加密

$2$代表BlowFish加密

$5$代表SHA-256加密

$6$代表SHA-521加密。

口令可能为*,代表账号已被锁定,也可能为!!,代表密码已过期。

  1. 最后一次修改时间:18554。这个字段表示的是最近修改密码的时间,这个记录的是从1970年1月1日以来经过的天数。下面我通过用一段Java代码来计算得到最后一次代码修改的时间为2020-10-19

       //打印结果  2020-10-19T00:00:00Z
        @Test
        public void testLastModifiedPasswordDay(){
            Instant instant = Instant.EPOCH.plus(18554, ChronoUnit.DAYS);
            System.out.println(instant);
        }
    
    
  2. 最小时间间隔:0.该字段表明两次修改密码的时间间隔必须大于等于此值

  3. 最大时间间隔:99999.该字段表明该密码有效的时间,过了这个时间将强制用户修改密码,否则不能登录。

  4. 警告时间:7.该字段表明在密码失效的前n天,会提醒用户修改密码。

  5. 密码过期后的宽限时间::这个字段可以没有,该字段表示如果用户在达到最大时间间隔以后仍能使用密码登录的宽限时期。,

  6. 失效时间::这个字段可没有,该字段表示如果超过这个时间,不管你是否修改密码,登录都会失效。

  7. 预留:这个就是预留字段,没有实际意义。

更详细的参考这篇文章


1.3组信息

  组相关的信息存储在/etc/group里面,大概的样子如下所示:

在这里插入图片描述

当用户创建时,会伴随着创建一个组,这个组是关于这个用户的基础组,一般情况下基础组的名字和用户的名字是一样的。当然,还有附加组的概念,在后文组管理会谈及到。

下面通过conflict组来讲解四个字段的含义:

conflictx1004batman,lordbao
组名组密码占位符gid(这里的要求和uid一样)组成员。如果conflict是关于某个成员的基础组,那么该成员也是该组的组成员,可以忽略不写。



2.用户管理

2.1创建用户

  useradd这个命令可以用于创建新的用户,常用的选项参数如下面的代码所示

# -d 指定用户的家目录 ,这个不是必须的,默认会在  /home下面创建一个和用户名同名的家目录
#  添加一个用户joker 并指定家目录
useradd -d /home/joker   joker

# -u 指定用户的uid  当然这个id要求在1000(含)以后.默认情况下,是上一个用户的uid+1
#  添加一个用户joker 并指定uid位为1024
useradd -u 1024   joker

# -g 指定用户的基础组 ,  这个参数既可以是数字表示gid,也可以是基础组的姓名。
#  这个不是必须的,默认会创建一个和用户同名的基础组
#  添加一个用户joker 并指定基础组为1024
useradd -g 1024  joker

# -G 添加附加组 
#  添加一个用户joker 并指定附加组 red  和 black
useradd -G red,balck   joker

  当然,可以给用户赋密码,这一节可以参考2.4节修改密码。不过需要注意的是,有个选项是 -p,这个选项是指定加密后的密码。



2.2修改用户

  usermod这个命令可以用于修改用户,比如修改用户的基础组,修改用户的附加组,将用户添加到新的附加组里面等等。

# -u   指定用户的uid
# 将joker的uid 设置为1024
usermod -u 1024   joker

# -g   指定用户的基础组
# 将joker的基础组指定为red  (通过gid 或是 组名都行)
usermod -g red   joker

# -G   指定用户的附加组(当然会覆盖掉原来的附加组)
# 将joker的附加组指定为red 
usermod  -G red  joker




2.3删除用户

  userdel这个命令可以用于删除用户。

# -r   顺带删除用户的家目录 和 mail spool
# 删除joker
usermod -r   joker



2.4修改密码

  passwd命令可以用于修改用户的密码。root可以修改自己和其他普通用户的密码。当然普通用户也可以修改自己的密码,但是密码的修改相比于root修改而言要更加严格,毕竟root可是超管呐。


root给jojo用户修改密码:

在这里插入图片描述


jojo给自己修改密码(当然,要满足一定的要求)

密码要满足一定规则比如超过8个字符,密码不能包含用户姓名,数字与字母组合等等。

在这里插入图片描述


不合理示范

在这里插入图片描述



2.5查看用户相关id

  使用id 就可以查看用户的uid ,gid 和所属组。

在这里插入图片描述

  总的来说,修改用户的相关配置相关的命令有useradd,usermod,userdel,id,passwd等。具体的相关选项可以通过 命令 --help查看



3.组管理

3.1组的基本概念

  用户创建的时候会有一个组伴随着创建,这个组的名字默认和用户名一样,通常这样的一个组被称作是关于这个用户的基本组。基本组只有一个,除此以外,一个用户可以加入其它的组,当用户加入其它组以后,这些组就是关于这个用户的附加组。当然除此以外,还有一些啥关系也没有的组。

在这里插入图片描述



3.2创建组

  创建组会用到一个命令,即groupadd,相关选项如下:

#  -g  指定组的id
#   添加一个avenger的小组,并指定小组id为1024
groupadd -g 1024 avenger



3.3修改组

  修改组会用到一个命令,groupmod,相关选项如下:

#  -g  指定组的id
#   指定小组avenger的id为1024
groupmod -g 1024 avenger



3.4删除组

  删除组会用到一个命令,groupdel,具体示例如下:

# 删除小组avenger avenger
groupdel  avenger



3.5修改组与成员的关系

  修改组与成员的关系会涉及到一个命令gpasswd,相关选项如下

#  -a  给小组添加用户
#  给 avenger小组添加 ironman
gpasswd  -a ironman avenger

#  -d  给小组删除用户
#  从 avenger小组中删除 ironman
gpasswd  -d ironman avenger



4.提权

  普通用户的权利有限,比如修改其他用户的密码等等,所以适当时候需要给用户提升权利。这里提权的方式有两种,一种是切换成root用户,这也是永久提权的方式,好比你变身奥特曼一样,另外一种方式是临时获取部分特权,这是暂时提升权利的一种方式,好比尚方宝剑一样。


方式一,切换root

在这里插入图片描述


方式二,临时采用sudo方式操作

sudo与/etc/sudoers配置文件相关。里面罗列了可以执行特殊权限指令的小组,这部分了解即可。可以将用户附加里面有特权的小组,然后使用sudo命令即可。

现将batman加入到一个有特权的小组wheel

在这里插入图片描述

batman 通过sudo命令添加一个新用户闪电侠(theflash)

在这里插入图片描述

5.总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值