• 【Linux】学习笔记:(二)用户和组群账户管理



    前言

    • 在Linux系统中,用户账户是登录系统的唯一凭证,其中root用户是系统的最高管理者,该用户的UID是0,与用户和组群账户相关的配置文件有/etc/passwd,/etc/shadow,/etc/group和/etc/gshadow。


    一、 用户账户简介

    1、 用户账户分类

    1. root用户
      • root用户UID为0。root用户的权限是最高的,普通用户无法执行的操作,root用户都能完成,所以也称之为超级用户
    2. 系统用户
      • 系统用户的UID为1~999
      • 这类用户不具有登录Linux的能力,但却是系统运行不可缺少的用户。
    3. 普通用户
      • 系统用户的UID为1000~60000
      • 在Linux系统上进行普通操作,其使用系统的权限受限制。

    2、 /etc/passwd文件

    • 假设以账户zhangsan登录系统时,系统首先会检查/etc/passwd文件,存在zhangsan账户,然后确定用户zhangsan的UID,通过UID确认用户身份,如果存在,则读取/etc/shadow文件中对应的密码,核实无误,则登录系统,读取用户的配置文件
    [root@centos83 home]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    ..............(省略)..........
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
    zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
    
    
    字段 字段含义
    用户名 在系统中用户名应该具有唯一性
    密码 存放加密用户的密码,看到的是一个x,其实密码已经被映射到/etc/shadow文件中
    用户标识号(UID) 每个用户的UID都是唯一的,root用户的UID是0,普通用户的UID默认从1000开始
    组群标识号(GID) 在系统内用一个整数标识用户所属的主要组群ID号,每个组群ID都是唯一的
    用户名全称 用户名描述,可以不设置
    主目录 用户登录系统后首先进入的目录
    登录shell 用户使用的Shell类型,Linux系统默认使用的Shell是/bin/bash

    2、 /etc/shadow文件

    • /etc/shadow文件内容包括用户及被加密的密码以及其他/ect/passwd不能包括的信息,比如账户有效期等
    • /etc/shadow文件只有root用户可以读取和操作,确保系统安全
    [root@centos83 home]# cat /etc/shadow
    root:$6$Uq9EeN5GfNDLF83M$csUva0exzO/n3PIvhKv5D1Xs3Ga06G2whjfagtEtJUW1wlQbREEd6HkOjTRCTqGuZCXvg2WQ1wdyzqY.qfAzE1::0:99999:7:::
    bin:*:18397:0:99999:7:::
    ..............(省略)..........
    sshd:!!:18625::::::
    rngd:!!:18625::::::
    zhangsan:$6$HMTy.raoMPbhboQn$71FPRHyRycVf3AcenfNW1n7/qD7ep.x5vSeBSSxzJdWmvjoQ98oDhfA8Kz/6PlOgKe/ksj58AXeWBPOGAm/dl1:18625:0:99999:7:::
    
    字段 字段含义
    用户名 这里的用户名和/etc/passwd中的相同
    加密密码 密码已经加密,如果由用户显示"!!",则表示这个用户还没有设置密码,无法登录到系统
    用户最后一次更改密码的日期 从1970年1月1日算起到最后一次修改密码的时间间隔天数
    密码允许更换前的天数 如果设置为0,则禁用此功能。该字段指定用户可以更改密码的天数
    密码需要更换的天数 如果设置为0,则禁用此功能。该字段指定用户必须更改密码的天数
    密码更换前警告的天数 用户登录系统后,系统登录程序提醒用户密码即将过期
    账户被取消激活前的天数 表示用户密码过期多少天后,系统会禁用此用户
    用户账户过期日期 指定用户账户禁用的天数(从1970年1月1日开始到账户被禁用的天数),如果这个字段的值为空,账户可以永久使用
    保留字段 目前为空,为将来发展做预留


    二、 用户账户设置

    1、useradd:创建用户

    1. 创建用户
      • useradd moon
    2. 创建用户并设置UID为1010
      • useradd -u 1010 moon
    3. 创建用户并设置用户所属群组为root
      • useradd -g root moon
    4. 创建系统用户mysql并设置所属组群
      • useradd -r -g mysql mysql
    选项 选项含义
    -d <主目录> 新账户每次登录时所使用的主目录
    -e <过期日> 设置账户的有效期限,日期格式为MM/DD/YY
    -f <失效日> 设置密码过期多少天后为失效状态
    -c <用户名全称> 设置用户账户的用户名全称(描述)
    -g <主要组群名> 指定用户账户所属的主要组群。
    -G <次要组群名> 指定用户账户为多个次要组群的成员,每个组群使用“,”来分隔
    -m 用户主目录如果不存在则自动建立
    -r 创建系统用户账户,不会创建用户主目录,也不会响应在文件/etc/login.defs中定义的值
    -u <用户UID> 用户的UID,数字不可以为负值

    2、 usermod:修改用户账户

    1. 修改用户pp的登录名为moon
      • usermod -l moon pp
    2. 修改用户moon账户过期时间为2028年11月23日
      • usermod -e 11/23/2028 moon
    3. 修改用户moon的主目录到/home/oopp,并自动创建目录
      • usermod -d /home/oopp -m moon
    选项 选项含义
    -m 移动主目录的内容到新的位置
    -l <新登录名> 修改用户账户名称
    -u <用户UID> 修改用户UID
    -c <用户名全称> 修改用户账户的用户名全称
    -d <主目录> 修改用户登陆时的主目录,如果指定-m选项,用户旧目录会移动到新的目录中,如果旧目录不存在,则创建新目录
    -e <过期日> 修改账户的有效期限,日期格式为MM/DD/YY
    -f <失效日> 修改在密码过期后多少天即设定密码为失效状态
    -g <主要组群名> 修改用户所属的主要组群
    -G <次要组群名> 修改用户所属的次要组群(附加组群)

    3、 userdel:删除用户账户

    1. 删除用户moon
      • userdel moon
    2. 删除用户的同时删除用户主目录
      • userdel -r moon
    选项 选项含义
    -r 删除用户时,把用户的主目录和本地邮件存储的目录或文件一同删除
    -f 强制删除用户


    三、组群账户简介

    1、 组群账户分类

    1. 分类法一

      • 私有组群
        • 创建新用户时,如果没有指定该用户所属那一组群,则Linux会自动创建同名组群,此时这个组群就是私有组群
        • 将其他用户加入到这个私有组群中,会使这个组群变为标准组群
      • 标准组群
        • 也称为普通组群,可以包含多个用户账户
        • 如果使用标准组群,则在创建新用户时,应该指定该用户所属组群
    2. 分类法二

      • 主要组群
        • 当一个账户属于多个组群成员时,登录后所属组群便是主要组群,其他组群是次要组群,一个用户账户智能属于一个主要组群
      • 次要组群
        • 也称之为附加组群,一个用户账户可以属于多个次要组群

    2、 /etc/group文件

    1. 文件简介

      • 内容包括组群名、组群密码、GID及该组群所包含的用户
      • 比如把某一用户加入到root组群,那么这个用户就可以浏览root用户主目录的文件
      • 如果root用户把某个文件的读写执行权限开放,root组群的所有用户就都可以修改此文件
      • 如果是可执行文件,root组群的用户也是可以执行的
    [root@centos83 home]# cat /etc/group
    root:x:0:
    bin:x:1:
    ..............(省略)..........
    sshd:x:74:
    rngd:x:991:
    zhangsan:x:1000:
    
    
    字段 字段含义
    组群名 组群名称
    组群密码 存放加密的组群密码,看到一个x,密码已经被映射到/etc/gshadow文件中
    组群标识号(GID) 在系统内用一个整数标识组群GID,每个GID都是唯一的,默认普通组群GID从1000开始,root组群GID是0
    组群成员 属于这个组群的成员,如root组群的成员有root用户
    1. 组群GID范围查看
    //查看系统创建组群默认的GID范围
    [root@centos83 ~]# cat /etc/login.defs |grep GID
    GID_MIN                  1000
    GID_MAX                 60000
    
    

    3、 /etc/gshadow文件

    • /etc/gshadow是/etc/group的加密文件,组群密码存放在此文件中
    • /etc/gshadow和/etc/group是互补的两个文件
    • 对于大型服务器,需要针对很多用户和组群,定制比较复杂的权限模型。设置组群密码是很有必要的
    [root@centos83 ~]# cat /etc/gshadow
    root:::
    bin:::
    daemon:::
    sys:::
    ..............(省略)..........
    zhangsan:!::
    
    
    字段 字段含义
    组群名 组群的名称
    组群密码 密码已加密,如果组群显示的是“!”,表示这个组群没有密码
    组群管理者 组群的管理者有权在该组中添加、删除用户
    组群成员 属于该组群的用户成员列表,如有多个用户则用逗号分隔


    四、 组群账户设置

    1、 groupadd:创建组群账户

    1. 创建组群china
      • groupadd china
    2. 创建GID为1300的组群ous
      • groupadd -g 1300 ous
    3. 创建系统族群chinese
      • groupadd -r chinese
      • // cat /etc/group |grep chinese命令查看用户gid为978,1000以内均为系统组群
    选项 选项含义
    -g 为组群设置GID
    -r 创建系统组群
    -o 允许使用和别的组群相同GID创建组群
    -f 即使组群存在,还是强制创建组群
    -p <密码> 为新组群设置加密的密码

    2、 groupmod:修改组群账户

    1. 修改china的GID为1400(修改的GID必须是新的。否则使用-o)
      • groupmod -g 1400 china
    2. 修改组群名称为suhai
      • groupmod -n suhai china
    选项 选项含义
    -g 设置GID
    -o 重复使用组群GID
    -n <新组群名> 更改组群名称

    3、 groupdel:删除组群账户

    1. 删除时,如果该组群中仍旧包括某些用户,必须先删除这个用户后才能删除组群
    2. 删除组群china
      • groupdel china


    五、 用户和组群账户维护

    1、 passwd:设置用户密码

    1. 为用户china添加密码

      • passwd china
    2. 删除用户china密码

      • passwd -d china

    2、 gpasswd:组群管理

    1. 把用户china添加到已有的组群group1中
      • gpasswd -a china group1
    2. 从组群group1中删除china用户
      • gpasswd -d china group1
    选项 选项含义
    -a <用户> 将一个用户加入到一个组群中
    -d <用户> 将一个用户从一个组群中移除

    3、 su:切换用户

    1. 切换用户china,但是不切换环境
      • su china
    2. 切换用户china,并切换环境
      • su - china
    3. 从china用户切换到root用户
      • su 或者 su -
      • 切换root用户不需要写root名称

    ps:加了"-",是以login shell登陆的,所以会设置环境变量,也会将目录变更到用户所属目录下;如果不加,使用的还是切换前用户的环境变量,有时候会出错,看情况使用

    4、 groups:显示组群成员

    [wuyiz@centos83 ~]$ groups wuyiz
    wuyiz : wuyiz suhai
    
    

    5、 id:显示用户UID及该用户所属组群的GID

    [wuyiz@centos83 ~]$ id
    uid=1000(wuyiz) gid=1000(wuyiz) 组=1000(wuyiz),1001(suhai) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    
    
  • 相关阅读:
    如何在VS2013中进行Boost单元测试
    C++项目中的extern "C" {}(转)
    C/C++语言中NULL、'’和0的区别
    关于C++“加、减机制”的整理
    C++继承中的public/protected/private
    Systemc在VC++2010安装方法及如何在VC++2010运行Noxim模拟器
    Testbench(转)
    Java高级特性之泛型
    Java高级特性之反射
    Java 输入输出流
  • 原文地址:https://www.cnblogs.com/suhai/p/14229199.html
Copyright © 2020-2023  润新知