zoukankan      html  css  js  c++  java
  • Linux系统用户管理

    Linux系统的用户管理

      1.用户管理*****

      2.Linux用户命令****

      3.用户创建的原理***

      4.密码管理***

      5.组命令管理**

      6.身份切换**** .

      7. sudo提升权限*****

    我们现在所使用的操作系统都是多用户操作系统

      AAA认证体系

      认证授权统计

    用户和组存在的意义

      1.系统上的每一个进程(运行的程序)都需要特定的用户运行

      2.每一个文件都有特定的用户拥有

      3.访问文件或目录受到用户的限制

      4.进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关

      5、当多个用户的权限相同时,可以归到一个组,对组进行配置权限

    查看当前登录的用户信息

    用户的 uid分类

      0  超级管理员

      1-200  系统用户,不要动(例如,xxx进程执行会有一个特定的用户组,但是这个用户不能登录)

      201-999  系统用户,用来运行服务账户,不需要登陆系统(动态分配)

      1000-65535(2^16)  常规用户

    组类别

      基本组  优先使用基本组,用户只能属于一个基本组,用户默认基本组

      附加组  基本组不能满足授权要求,创建附加组,用户可以属于多个附加组

      私有组  私有组,创建用户时如果没有指定基本组,系统会创建和用户同名的组

      注:一个新用户,没有规定组就是默认私有组,其实就是基本组,当再需要加包含到别的组时就是附加组,基本组的优先级高

    1、用户管理

    用户的账号信息存在 /etc/passwd中,密码存在 /etc/shadow中

    如果2个文件出问题会导致无法正常登录Linux

    /etc/passwd  账户文件

    [root@yxlll ~]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash

    以 :为分隔符,分成7个字段

    字段名称      注释说明

    1.用户名称     //用户的账号名称

    2.密码占位符    //存放账户的口令,暂用x表示,密码保存在/etc/shadow

    3.用户的UID     //用户标识号

    4.用户基本组GID   //组标识号

    5.用户注释       //用户详细信息

    6.用户家目录      //用户家目录, root家目录是/ root普通用户的家目录存在/home/username,可自定义

    7.用户登录Shell   //用户登录Linux使用的shell cat /etc/shells

              /bin/bash  登录

              /sbin/nologin  无法登录

    /etc/shadow  用户密码文件

    [root@yxlll ~]# head -1 /etc/shadow
    root:$6$q3cxb/GDYej/n$qCNj5kVGF.2olXgggZliryOb.BWprWoQms9z.rjU1PEuKkkHaj7gN13Bvj04aPvLa8xUXhmDu7tk662ZgHFcy.:18514:0:99999:7:::

    字段名称            注释说明

    1.用户登陆名          //用户的账号名称

    2.加密后的密码         //用户密码,这是加密过的口令(未设密码时为! !,未设置密码和密码为空是2个概念,默认 !! )

                    $a$b$c  a表示加密算法  b表示salt随机值,盐  c加密后的值

    3.最近一次密码更改时间       //从1970年到最近一次更改密码时间之间过了多少天

    4.密码最少使用几天        //密码最少使用几天才可以更改密码(0表示无限制)

    5.密码最长使用几天        //密码使用多少天需要修改密码(默认99999永不过期)

    6.密码到期前警告期限         //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)

    7.密码到期后保持活动的天数   //在此期限内,用户依然可以登陆系统并更改密码,指定天数过后,账户被锁定

    8.账户到期时间             //从1970年起,账户在这个日期前可使用,到期后失效.

    9.标志            //保留

    用法:chage [选项] 登录
    选项:
      -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
      -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
      -h, --help                    显示此帮助信息并推出
      -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
      -l, --list                    显示帐户年龄信息
      -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
      -M, --maxdays MAX_DAYS        set maximum number of days before password
                                    change to MAX_DAYS
      -R, --root CHROOT_DIR         chroot 到的目录
      -W, --warndays 警告天数       将过期警告天数设为“警告天数”
     
    其余相关操作
    date -s "20200923"  更改时间
    useradd yxlaa1  创建用户
    echo "yxl123" |passwd --stdin yxlaa1  修改密码
    su - yxlaa1  登录用户
    exit  登出

    2、Linux用户命令

    添加用户前需要确定

      确定用户的默认组是否有特殊要求

      确定用户是否允许登陆

      确定用户的密码策略

      确定用户的有效期

      确定用户的uid是否有特殊要求

    1.使用useradd命令新增账户,注意: adduser命令软链接指向useradd命令
      ‘-u'  指定用户的UID,不能和现有ID冲突  
      ' -g'  指定用户用户默认基本组
      '-G'  指定用户附加组,用逗号隔开添加多个附加组
      '-d'   指定用户家目录
      ‘-C'  指定用户注释信息
      '-M'   不建立家目录
      '-S'  指定用户默认shell
      ’-r'   创建系统账户,没有家目录
     
     
    创建一个普通用户,即 Uid>1000
    [root@yxlll ~]# groupadd sa [root@yxlll ~]# groupadd dba [root@yxlll ~]# groupadd students [root@yxlll ~]# useradd -u 5001 -g students -G sa,dba -c "2020 yxl" -d /home/yxlll -s /bin/bash yxlllaa1 [root@yxlll ~]# tail -1 /etc/passwd yxlllaa1:x:5001:1002:2020 yxl:/home/yxlll:/bin/bash
    创建一个用户,没有家目录,那么就是 -M 或者 -r
    [root@yxlll ~]# useradd -M -s /sbin/nologin Mysql [root@yxlll ~]# tail -1 /etc/passwd Mysql:x:5002:5002::/home/Mysql:/sbin/nologin [root@yxlll ~]# useradd -r -s /sbin/nologin dba useradd:dba 组已经存在 - 如果您想将此用户加入到该组,请使用 -g 参数。 [root@yxlll ~]# useradd -r -g dba -s /sbin/nologin dba [root@yxlll ~]# tail -1 /etc/passwd dba:x:997:1001::/home/dba:/sbin/nologin [root@yxlll ~]# tail -3 /etc/passwd yxlllaa1:x:5001:1002:2020 yxl:/home/yxlll:/bin/bash Mysql:x:5002:5002::/home/Mysql:/sbin/nologin dba:x:997:1001::/home/dba:/sbin/nologin

    使用 usermod命令修改用户组

       -u  指定用户的UID,不能和现有ID冲突  
       -g  指定用户用户默认基本组
      -G  指定用户附加组,用逗号隔开添加多个附加组
      -d   指定用户家目录
      -C  指定用户注释信息
      -M  不建立家目录
      -S  指定用户默认shell
      -r  创建系统账户,没有家目录
      
      -L  锁定用户
      -U  解锁用户
    [root@yxlll ~]# usermod -u 250 Mysql
    [root@yxlll ~]# tail -3 /etc/passwd
    yxlllaa1:x:5001:1002:2020 yxl:/home/yxlll:/bin/bash
    Mysql:x:250:5002::/home/Mysql:/sbin/nologin
    dba:x:997:1001::/home/dba:/sbin/nologin

    使用 chfn修改用户信息

    [root@yxlll ~]# finger yxlllaa1
    Login: yxlllaa1                   Name: 2020 yxl
    Directory: /home/yxlll                  Shell: /bin/bash
    Never logged in.
    No mail.
    No Plan.
    [root@yxlll ~]# id yxlllaa1
    uid=5001(yxlllaa1) gid=1002(students) 组=1002(students),1000(sa),1001(dba)
    [root@yxlll ~]# chfn yxlllaaq
    chfn: user "yxlllaaq" does not exist.
    [root@yxlll ~]# chfn yxlllaa1
    Changing finger information for yxlllaa1.
    名称 [2020 yxl]: yxl
    办公 []: yxlaaa
    办公电话 []: 12345678
    住宅电话 []: 13234567891
    
    Finger information changed.
    [root@yxlll ~]# finger yxlllaa1
    Login: yxlllaa1                   Name: yxl
    Directory: /home/yxlll                  Shell: /bin/bash
    Office: yxlaaa, 12345678        Home Phone: +1-323-456-7891
    Never logged in.
    No mail.
    No Plan.

    3、用户创建的原理和流程

      取模板

         

    4、密码设置

    随机生成密码,保存备份

    4.1、系统内置的变量产生密码  md5

    4.2、 mkpasswd密码生成工具 

    //-l 密码长度 -d 数字 -C 大写字母数 -c 小写字母数
    [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 ,EOMbl478KxcFfd [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 {BgTVYpl6e61nsB [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 Eme1@E6e4QhvAMk [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 3DccxkeO+YBxY27 [root@yxlll ~]# mkpasswd -l 15 -d 3 -C 5 -c 5 dTSsFo*Ua30Cjb3

     5、组命令管理

     组账号信息保存在 /etc/group 和 /etc/gshadow两个文件中

    /etc/group  组账号信息

    [root@yxlll ~]# tail /etc/group    //获取最后10行(默认)的组信息数据
    postfix:x:89:
    chrony:x:996:
    nscd:x:28:
    tcpdump:x:72:
    slocate:x:21:
    apache:x:48:
    sa:x:1000:yxlllaa1
    dba:x:1001:yxlllaa1
    students:x:1002:
    Mysql:x:5002:

    组信息一般用 :分割,一般有4个信息

    组账号名称 :密码信息(存放在 gshadow中) :组GID号 :组成员(一般不显示)

    使用 groupadd命令增加组

    [root@yxlll ~]# egrep -v "^#|^$" /etc/login.defs  //用正则表达式,排除空行和注释行的内容,显示文件更加简洁
    [root@yxlll ~]# groupadd test 11
    用法:groupadd [选项] 组
    选项:
      -f, --force  如果组已经存在则成功退出
       并且如果 GID 已经存在则取消 -g
      -g, --gid GID                 为新组使用 GID
      -h, --help                    显示此帮助信息并推出
      -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
      -o, --non-unique              允许创建有重复 GID 的组
      -p, --password PASSWORD       为新组使用此加密过的密码
      -r, --system                  创建一个系统账户
      -R, --root CHROOT_DIR         chroot 到的目录
      -P, --prefix PREFIX_DIR       directory prefix

     使用 groupdel删除组

      注意:只能删除附加组,不能删除基本组

     6、身份切换

    su  切换身份  su - yxlllaa1

    shell分类

      交互式 shell  等待用户输入执行提交的命令,exit退出

      非交互式 shell  执行 shell脚本,执行结束自动退出

    1、把交互命令转化成同等功能的非交互命令

    2、提前做好应答文件

    个人配置文件: ~/ . bash_ profile ~/ . bashrc

    全局配置文件: /etc/profile /etc/profile.d/*.sh /etc/bashrd

    字符串环境变量文件: /etc/locale. conf (CentOS7)

    维持当前身份去执行用户身份的内容

    命令: su -c username

    例如,在 roo身份下,以 yxlllaa1身份去操作

    7、sudo提升权限

    su切换用户身份,再切回 root身份时需要密码,这样不安全,使用 sudo执行 root身份才能执行的命令,

    默认只有 root用户才能使用 sudo,普通用户想要使用需要更改设定文件,即 /etc/sudoers

    [root@yxlll ~]# 
    [root@yxlll ~]# grep wheel /etc/sudoers
    ## Allows people in group wheel to run all commands
    %wheel    ALL=(ALL)    ALL
    // wheel组 在任何主机名 以任何身份 执行任何命令 #
    %wheel ALL=(ALL) NOPASSWD: ALL

    // 1.用户名/组名  2.主机名  3.角色名  4.命令名

        

    //授权方式,授权用户所有管理员的所有权限

  • 相关阅读:
    [css3]搜索框focus时变长
    [css3]文字过多以省略号显示
    HTML5表单新增属性
    [JS]getYear()和getFullYear()方法区别
    红包彩带动画效果
    ios下input focus弹出软键盘造成fixed元素位置移位
    旋转效果
    移动端前端开发
    如何加快页面加载速度
    centos7/rhel7下安装redis4.0集群
  • 原文地址:https://www.cnblogs.com/yxlll/p/13716854.html
Copyright © 2011-2022 走看看