用户与组管理

权限管理-用户组管理

一、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

     

 

posted @ 2020-10-28 22:59  贾维斯Echo  阅读(239)  评论(0编辑  收藏  举报