zoukankan      html  css  js  c++  java
  • 用户与组管理

    权限管理-用户组管理

    一、linux用户与组管理

    1. 什么是用户?

      • 用户是操作系统提供一种安全机制

      • 用户是权限的化身

    2. 为何要有用户?

      1.划分权限,增强安全性
      2.每启动一个进程都会与一个用户关联
      进程-》用户-》权限(作用在文件身上)
    3. 查看用户相关信息

      [root@localhost ~]# id   #查看当前用户
      [root@localhost ~]# whoami   #查看当前用户是谁
      [root@localhost ~]# id egon   #查看egon用户
      [root@localhost ~]# who       #查看当前登录的所有用户
      [root@localhost ~]# ps aux |grep [s]sh   #每一个进程都有其用户
    4. linux系统中用户角色划分

      • linux系统中用户分为管理员和其他用户

        • 管理员有最高权限

        • 其他用户根据管理员的分配拥有不同权限

      • UID与GID

        • UID用户ID,唯一表示一个系统用户的账号,UID在系统中是唯一的,相当于一个人身份证,用户名就相当于这个人的名字 ,

        • GID组ID,如果把一个操作系统看成一家公司,UID相当于这个人的员工号,GID就是他的部门编号。

        • 用户分类(约定,规范)

        centos7规定:
           0         超级管理员,最高权限,有极强的破坏能力
           1-200     系统用户,由系统分配给系统进程使用
           201-999   系统用户,用来运行安装的程序,所以此类用户无需登录系统(动态分配)
           1000+     普通常规用户,正常可以登录系统的用户,权限比较小,能执行任务有限
      • 组的概念:

        主组:用户本身所在部门
        附加组:为用户添加的部门
      • 用户和组的关系

        一对一:一个用户可以属于一个组,用户默认就在自己的主组下

        一对多:一个用户可以属于多个组,用户只有一个主组,但可以为用户添加多个附加组

        多对多:多个用户可以属于多个组
    5. 超级用户

      • 默认root用户,UID和GID均为0。可以操作系统中任何文件和命令,拥有最高管理权限。

    6. 总结:

      • linux系统把文件的权限分为了三类

        • 1、属主对应的权限

        • 2、属组对应的权限

        • 3、其他对应的权限

      • 一个用户对文件的权限扫描的优先级:

        • 1、先看该用户是否是文件的属主

        • 2、在1失败的情况,再看该用户是否是文件的属组

        • 3、在2失败的情况,该用户属于其他人权限

      -rw-r--r--. 1 root egon 1149 1028 11:51 /etc/passwd
    7. PS:

      linux/Unix是一个多用户、多任务的操作系统
      windows 是一个单用户多任务操作系统

    二、用户与组相关文件

    和用户、组相关的文件:

    • /etc/passwd #保存用户信息的文件

    • /etc/shadow #用户密码

    • /etc/group #组文件

    • /etc/gshadow #组密码

       

      详解如下:

    1. /etc/passwd:用户信息文件

      24a4fa9d9eede80686505c9152ca764

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

      // /etc/passwd由 ':' 为分割符, 分为7个字段,每个字段的具体含义如下:
      字段名称               注释说明
      1.用户名称             //用户的账号名称
      2.密码占位符         //存放账户的口令,暂用x表示,密码保存在/etc/shadow
      3.用户的UID        //用户标识号
      4.用户基本组GID      //组标识号
      5.用户注释          //用户详细信息
      6.用户家目录         //root家目录是/root普通用户家目录存在/home/username(可自定义)
      7.用户登录Shell     //用户登录Linux使用的shell  #cat /etc/shells
    2. /etc/shadow:用户密码文件

      1603886579(1)

      [root@zls ~]# tail -1 /etc/shadow
      zls1:!!:16312:0:99999:7:::

      //  /etc/shadow由 ':' 为分割符, 分为9个字段,每个字段的具体含义如下:
      字段名称                       注释说明
      1.用户登陆名             //用户的账号名称
      2.加密后的密码            //用户密码,这是加密过的口令(未设密码时为!!)
      3.最近一次密码更改时间     //从1970年到最近一次更改密码时间之间过了多少天
      4.密码最少使用几天        //密码最少使用几天才可以更改密码(0表示无限制)
      5.密码最长使用几天      //密码使用多少天需要修改密码(默认99999永不过期)
      6.密码到期前警告期限     //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
      7.密码到期后保持活动的天数 //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定
      8.账户到期时间        //从1970年起,账户在这个日期前可使用,到期后失效。
      9.标志                        //保留,以备linux发展之用
    3. etc/group:组文件

      [root@zls ~]# head -2 /etc/group
      root:x:0:
      bin:x:1:bin,daemon

      // /etc/group由':' 分割, 分割为4个字段,每个字段的具体含义如下:
      字段名称
      1.组的名称
      2.组的密码(存在/etc/gshadow)
      3.组GID信息
      4.仅显示附加成员,基本成员不显示
    4. /etc/gshadow:

      [root@zls ~]# head -2 /etc/gshadow
      root:::
      bin:::bin,daemon

      // /etc/gshadow由 ':' 分割, 分割为4个字段,每个字段的具体含义如下:
      字段名称
      1.组名称
      2.组密码
      3.组管理员
      4.仅显示附加成员,基本成员不显示
    5. /home/xxx #用户家目录

    6. /etc/skel/ #用户老家的模板

      [panghu@duorou ~]$ ll -a /etc/skel
      总用量 24
      drwxr-xr-x.   3 root root   78 10月  6 10:14 .
      drwxr-xr-x. 146 root root 8192 1028 20:31 ..
      -rw-r--r--.   1 root root   18 4月   1 2020 .bash_logout
      -rw-r--r--.   1 root root  193 4月   1 2020 .bash_profile
      -rw-r--r--.   1 root root  231 4月   1 2020 .bashrc
      drwxr-xr-x.   4 root root   39 10月  6 10:14 .mozilla

       

    7. /var/spool/mail/xxx #用户邮箱文件

      [panghu@duorou ~]$ ll /var/spool/mail
      总用量 0
      -rw-rw----. 1 chirou mail 0 1027 19:45 chirou
      -rw-------. 1 root   mail 0 1020 21:02 root
      -rw-rw----. 1 rpc    mail 0 10月  6 10:14 rpc
      -rw-rw----. 1 test   mail 0 9月  26 10:46 test

       

    三、手动创建用户

    1. 准备用户信息

      • /etc/passwd

        [root@web01 ~]#  vim /etc/passwd   #新加一行
        [root@web01 ~]# tail -1 /etc/passwd
        likui:x:1004:1004::/home/likui:/bin/bash/etc/shadow
      • /etc/shadow

        [root@web01 ~]# tail -1 /etc/shadow
         likui:$6$ilevDH.F$eYR2qYz9yWAIWBGKwNVJN3T4QjPZ5jEgOoRxXJ8WUCXlUR.xhlMDpMTE2j3oY/QGZTZA10.Z7q1lDL9vrofAG0:18563:0:99999:7:::
        [root@web01 ~]# openssl passwd -1 -salt 'i have a dream'           #制作密码
        Password:      #输入密码
        $1$i have a$UE.0R7CD7Y8Bdh/.F1SFH.   #生成的密码

        ps:openssl passwd 手动生成密码
           语法格式 openssl passwd [option] passwd
           选项如下:
          -1:表示采用MD5加密算法
               -salt:指定salt值,不不使用随机产生的salt。在使用加密算法进行加密时,及时密码一样,salt不一样,所计算出来的bash值也不一样,除非密码一样,salt值也一样,计算出来的hash值才一样。salt为8字节的字符串。
    2. 准备组信息

      • /etc/group

        [root@web01 ~]# tail -1 /etc/group
         likui:x:1004:
        [root@web01 ~]# tail -1 /etc/gshadow
         likui:$6$Q1ywq/DXFEnMDIhP$WzKzOf0mmr4BPhUuYsQVGUFDB8ddEPrlrgLy10ToW4qgYi7xKYEof7OA0JVNwoE966uCj.aVNI5hFnoB4pLoO0::
      • /etc/gshadow

        [root@aliyun ~]# vim /etc/gshadow
        [root@aliyun ~]# tail -1 /etc/gshadow
        ligui:!::

         

    3. 准备家目录

      • /home/xxx/(创建用户家目录,并且用户老家的模板/etc/skel/ 装修一下,注意权限)

        [root@web01 ~]# mkdir /home/likui/ 
        [root@web01 ~]#
        [root@web01 ~]# chown likui.lilui /home/likui/
        [root@web01 ~]# chmod 700 /home/likui/
        [root@web01 ~]#
        [root@web01 ~]# cp -ra /etc/skel/.[!.]* /home/likui/   #装饰用户
        [root@web01 ~]# chown likui.likui /home/likui/.[!.]*     #修改权限
    4. 准备邮箱

      • /var/spool/mail/xxx 用户邮箱文件

      [root@web01 ~]# touch /var/spool/mail/likui
      [root@web01 ~]# chown likui.mail /var/spool/mail/likui
      [root@web01 ~]# chmod 660 /var/spool/mail/likui
    5. 激活账号的登录

      [root@aliyun ~]# ssh ;ligui@127.0.0.1
      egon@127.0.0.1's password:
      Last login: Mon Aug 10 23:18:55 2020 from 127.0.0.1
      Welcome to Alibaba Cloud Elastic Compute Service !
      [egon@aliyun ~]$ whoami
      ligui

     

    四、用户管理命令

    用户管理命令汇总

    • useradd #添加用户

    • userdel #删除用户

    • usermod #修改用户信息

    详解如下:

    1. 创建用户

      [root@localhost ~]# useradd biubiu
    2. 查看用户

      [root@localhost ~]# id biubiu
      uid=1011(biubiu) gid=1011(biubiu) 组=1011(biubiu)
      [root@localhost ~]# who
      [root@localhost ~]# whoami
      PS:当创建一个用户时。如果没有指定用户的主组,将会创建一个同名的组作为用户的主组。
    3. 删除用户

      [root@localhost ~]# userdel user01  #删除用户user01,但不删除用户家目录和mail
      [root@localhost ~]# userdel -r user01 #要想删彻底,加-r选项
    4. useradd 命令详解:创界用户的同时指定选项

      '-u' 指定用户的UID,不能和现有ID冲突
      '-g' 指定用户用户所属的主组
      '-G' 指定用户附加组,用逗号隔开添加多个附加组
      '-d' 指定用户家目录
      '-c' 指定用户注释信息
      '-M' 不建立家目录
      '-s' 指定用户默认shell
      '-r' 创建系统账户, 没有家目录

      //创建zls用户,指定UID5001,基本组students 附加组sa,dba 注释信息:one newB user, 登陆的shell:/bin/bash
      [root@zls ~]# groupadd sa
      [root@zls ~]# groupadd dba
      [root@zls ~]# groupadd students
      [root@zls ~]# useradd -u 5001 -g students -G sa,dba -c "one newB user" -d /home/zls -s /bin/bash zls
      [root@zls ~]# tail -1 /etc/passwd
      zls:x:5001:505:one newB user:/home/zls:/bin/bash

      //创建系统用户,不建立用户家目录 指定nologin使其用户无法登陆系统
      [root@zls ~]# useradd mysql -M -s /sbin/nologin
      [root@zls ~]# useradd -r dba -s /sbin/nologin
    5. usermod命令详解

      '-u'    修改用户的UID
      '-g'    修改用户所属的基本组GID
      '-G'    修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组
      '-a'    追加更多的附加组, 必须和-G使用: -aG 追加附加组
      '-m'    家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置
      '-d'    指定用户的家目录新位置  
      '-c'    修改用户的注释信息
      '-s'    更改用户使用的shell
      '-l'    更改用户登录名
      '-L'    锁定用户
      '-U'    解锁用户


      [root@zls ~]# grep "zls" /etc/passwd
      zls:x:5001:505:2018 new student:/home/zls:/bin/bash

      //修改用户uid,gid, 附加组, 注释信息, 用户家目录, 登录shell, 登录名

      //建立组,指定组gid
      [root@zls ~]# groupadd -g 5008 network_sa
      [root@zls ~]# groupadd -g 5009 devops

      //修改用户属性
      [root@zls ~]# usermod -u 6001 -g5008 -a -G 5009 -c "2019 new student" -md /zls -s /bin/sh -l zls_zls zls

      //检查是否修改成功
      [root@zls ~]# grep "zls" /etc/passwd
      zls_zls:x:6001:5008:2019 new student:/zls:/bin/sh

      [root@zls ~]# id zls_zls
      uid=6001(zls_zls) gid=5008(network_sa) groups=5008(network_sa),503(sa),504(dba),5009(devops)

      //验证家目录
      [root@zls ~]# ll -d /zls
      drwx------. 2 zls_zls network_sa 4096 2014-09-23 00:13 /zls


      锁定用户
      [root@zls ~]# echo "123" |passwd --stdin zls_zls
      [root@zls ~]# usermod -L zls_zls
      //无法正常登录系统
      ➜  ~ ssh zls_zls@192.168.56.11
      zls_zls@192.168.56.11's password:
      Permission denied, please try again.

      解锁用户
      [root@zls ~]# usermod -U zls_zls
      //正常登录系统
      ➜  ~ ssh zls_zls@192.168.56.11
      zls_zls@192.168.56.11's password:
      Welcome to Aliyun Esc Linux
      -sh-4.1$

       

    五、组管理命令

    组管理命令汇总

    • groupadd # 创建组

    • groupmod #修改组

    • groupdel #删除组

    • gpasswd #设置组密码

    • newgrp #切换主组

    详解如下:

    1. 创建组

      //创建基本组, 不指定gid
      [root@zls ~]# groupadd no_gid
      [root@zls ~]# tail -n1 /etc/group
      no_gid:x:1000:

      //创建基本组, 指定gid为5555
      [root@zls ~]# groupadd -g 5555 yes_gid
      [root@zls ~]# tail -n1 /etc/group
      yes_gid:x:5555:

      //创建系统组,gid从201-999
      [root@zls ~]# groupadd -r sys_group
      [root@zls ~]# tail -n1 /etc/group
      sys_group:x:990:
    2. 2.使用groupmod命令修改组

      //-g 修改组gid
      [root@zls ~]# groupmod -g 1111 no_gid
      [root@zls ~]# tail -1 /etc/group
      no_gid:x:1111:

      //-n 修改组名称
      [root@zls ~]# groupmod -n active_group yes_gid
      [root@zls ~]# tail -1 /etc/group
      active_group:x:5555:
    3. 使用groupdel删除组

      #删除组
      [root@zls ~]# groupdel egon

      #删除用户附加组
      [root@docker ~]# id zls
      uid=1069(zls) gid=5005(zls) groups=5005(zls),5004(devops)
      [root@docker ~]# groupdel devops
      [root@docker ~]# id zls
      uid=1069(zls) gid=5005(zls) groups=5005(zls)

      #无法删除用户基本组
      [root@zls ~]# tail -n1 /etc/group
      network_sa:x:5008:
      [root@zls ~]# groupdel network_sa
      groupdel: cannot remove the primary group of user 'zls_zls'
      #只有删除用户或者用户变更基本后,方可删除该组

      PS:
      如果一个组是一个用户的主组,那么该组不能被删除,删掉用户会默认一起删掉他的主组。
      一个用户必须有一个主组
      groupdel 删掉的组不能是任何用户的主组
    4. 使用gpasswd设置密码(了解)

      [root@zls ~]# groupadd devops
      [root@zls ~]# gpasswd devops
      Changing the password for group devops
      New Password:
      Re-enter new password:
    5. 切换用户

      //切换普通用户
      [root@docker ~]# su - zls

       

     

  • 相关阅读:
    Web应用网络模型
    Http协议
    Array数组标准库
    Array数组基础
    javascript--Object
    javascript--Function
    letCode-3
    面试前的准备
    面试常见问题
    面试经验总结
  • 原文地址:https://www.cnblogs.com/taoxiaoxin/p/13894109.html
Copyright © 2011-2022 走看看