• Linux用户和用户组信息管理


    用户管理

    ⽤户的管理(/etc/passwd)
    ⽤户的添加(useradd)
    ⽤户的删除(userdel)
    ⽤户的修改(usermod)
    ⽤户的查看(查看/etc/passwd) id
    
    [root@redhat ~]# grep lei0 /etc/passwd
    lei0:x:1000:1000::/home/lei0:/bin/bash
    [root@redhat ~]# id lei0
    uid=1000(lei0) gid=1000(lei0) groups=1000(lei0)
    [root@redhat ~]# 
    
    创建用户时,系统自动为你创建了一个与用户名同名的用户组,这个系统创建出来的组就是私有组(private group)
    每个用户都必须得属于一个组,就像我的身份一样,我属于湖北省的襄阳市的保康县里的一员,保康县就是我的所属组。
    私有组的创建是系统为了保证每个用户必须属于一个组而创建的。如果创建用户时指定了用户所属组,那系统就不会为他创建私有组了。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    用户密码信息/etc/shadow详解

    /etc/shadow存放的是密码信息,每⼀列密码信息都被冒号分割开来。
    
    第⼀列表示存放的是哪个⽤户的密码信息(username)
    
    第⼆列存放的就是密码,该密码并不是明⽂的,⽽是使⽤算法⽣成的,算法在/etc/login.defs中有指定。
    
    第三列存放的是上次修改密码的时间
    
    第四列存放的是密码最⼩有效期
         如果是0,就可以⽆限次的不考虑间隔的修改密码
         如果是1,就表示,修改完密码之后,必须使⽤该密码⼀天才能再次修改
         
    第五列存放的是密码的最⼤有效期默认是99999,表示密码99999天就会失效。
         如果该数字是3,就表示,3天后密码会过期,如果你想继续使⽤,必须要在
         密码到期之前修改。
         
    第六列存放的是密码到期前提前多少天警告的时间信息 
         如果该数字为7,就表示密码到期之前的7天就会发出警告,告诉你密码即将过期。
         
    第七列表示⽤户密码到期后宽限⽇期
         如果该数字是2,就表示密码到期后,你还能使⽤该密码2天,如果2天到了,
         你还没修改或更新密码,密码就失效了。
         
    第⼋列表示账号失效⽇期
    
    第⼋列的⽇期就是账号的失效⽇期。如果到了第⼋列的时间,账号直接失效。不可登录。
    
    第九列保留
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    su命令详解

    su(switch user)切换用户
       普通用户切换到任何用户都需要输入密码
       root用户切换到任何用户都不需要输入密码
    
    su - username
       su命令切换用户如果不加“-”,只是shell层面的切换,用户的环境变量实际上是没有变的,也就是切换的不彻底。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    sudo

    rpm -qi sudo
    
    Summary     : Allows restricted root access for specified users
    Description :
    Sudo (superuser do) allows a system administrator to give certain
    users (or groups of users) the ability to run some (or all) commands
    as root while logging all commands and arguments. Sudo operates on a
    per-command basis.  It is not a replacement for the shell.  Features
    include: the ability to restrict what commands a user may run on a
    per-host basis, copious logging of each command (providing a clear
    audit trail of who did what), a configurable timeout of the sudo
    command, and the ability to use the same configuration file (sudoers)
    on many different machines.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    sudo即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等,这样不仅减少了root用户的登录和管理时间,同样也提高了安全性。

    sudoers授权规则

    用户 登入主机=(代表用户) 命令
    user host=(runas) command
    
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    实践:授权普通账户"lei"能挂载光盘

    在这里插入图片描述

    sudo 授权的命令需要写上命令的路径
    
    • 1

    在这里插入图片描述

    授权lei用户可以挂载

    ## Allow root to run any commands anywhere 
    root    ALL=(ALL)       ALL
    lei     ALL=(root)      /usr/bin/mount  /dev/cdrom /mnt/
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    使用sudo执行挂载

    在这里插入图片描述
    使用sudo执行命令时还有一个特点就是操作审计,你的操作会被记录下来
    /var/log/secure日志里记录授权操作
    在这里插入图片描述
    在这里插入图片描述

    ⽤户组的管理(切换到root)

    ①⽤户组的添加(groupadd)
    ②⽤户组的删除(groupdel)
    ③⽤户组的查看(grep 组名)
    ④⽤户组的修改(groupmod)
    primary group(主要组),private group(私有组),attached group(附加组)
    /etc/group存放着⽤户组的信息

    [lei0@redhat root]$ su -
    Password: 
    [root@redhat ~]# 
    
    
    • 1
    • 2
    • 3
    • 4

    /etc/group 内容详解

    [root@redhat ~]# grep kcz /etc/group
    kcz:x:1001:
    
    每⼀个冒号分割了⼀个内容
    第⼀列表示组名
    第⼆列表示组密码,x表示密码存放在/etc/gshadows⽂件⾥
    第三列表示组ID
    第四列表示"组成员"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    用户组的添加

    创建用户组
    /etc/group存放着⽤户组的信息
    [root@redhat ~]# groupadd kcz
    [root@redhat ~]# grep kcz /etc/group
    kcz:x:1001:
    [root@redhat ~]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    用户组的删除

    [root@redhat ~]# groupadd lsj
    [root@redhat ~]# grep lsj /etc/group
    lsj:x:1002:
    [root@redhat ~]# groupdel lsj
    [root@redhat ~]# grep lsj /etc/group
    [root@redhat ~]# 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    用户组的查看

    [root@redhat ~]# grep kcz /etc/group
    kcz:x:1001:
    [root@redhat ~]# 
    
    • 1
    • 2
    • 3

    用户组的修改

    用户是有UID的,那么对于用户组来说也有GID(Group ID),GID也是唯一的。
    
    为什么要有ID,因为系统是根据Id来识别用户和用户组的。
    
    添加用户组的同时可以指定GID
    
    [root@redhat ~]# groupadd -g 10086 kcq
    [root@redhat ~]# grep kcq /etc/group
    kcq:x:10086:
    [root@redhat ~]# groupmod -g 68001 kcq
    [root@redhat ~]# grep kcq /etc/group
    kcq:x:68001:
    [root@redhat ~]#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    ⽤户组和⽤户的关联

    创建⽤户的时候指定⽤户组

    由于任何⽤户都必须依赖于⽤户组才能存在,所以如果创建⽤户没有指定⽤户组(primary group),
    那么系统会为该⽤户创建⼀个同名的组。这个组叫做该⽤户的private group(私有组),
    私有组默认⾥⾯只有⼀个和该私有组同名的⽤户。
    
    耿彦祖的经验之谈:私有组的意义就在于让⽤户有了⼀个⽤户组。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    添加一个leilei的用户,将他添加到kcz组中
    [root@redhat ~]# useradd leilei -g kcz
    [root@redhat ~]# id leilei
    uid=1000(leilei) gid=1001(kcz) groups=1001(kcz)
    [root@redhat ~]# grep kcz /etc/group
    kcz:x:1001:
    
    如果你创建了⼀个⽤户,指定了该⽤户的所属组,那么该⽤户就没有私有组。
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    Java类包+final声明
    Client引入Eureka报Completed shut down of DiscoveryClient问题原因及解决方式
    Codeforces Round #835 (Div. 4) G. SlavicG‘s Favorite Problem
    随smart登陆欧洲,亿咖通科技踏上出海新征程
    【算法题】2651. 计算列车到站时间
    Android:EditText 输入字母时小写自动转为大写
    CAPL函数Test Node中,关闭总线,关闭节点,停发报文应该怎么做?
    stdout stderr 重定向到文件
    Linux调试器——gdb的使用
    数据结构——二分查找法
  • 原文地址:https://blog.csdn.net/flytalei/article/details/132922354