• 权限管理--用户介绍;用户与组相关文件;用户管理命令之用户创建、查看、删除、修改


    权限管理-用户组管理

    一、linux用户介绍

    1、什么是用户

    ⽤户对硬件资源的操作都需要通过操作系统,⽐如⽤户要读取硬盘中的⼀份关键数据
    出于安全考虑,操作系统的开发者们都专⻔开发了安全机制,要使⽤操作系统必须事先输⼊正确的⽤户
    名与密码
    这便是⽤户的由来
    

    2、为何要有⽤户?或者说我们为何要哦创建⽤户?

    # 主要就是权限问题
    1、系统上的每⼀个进程,都需要⼀个特定的⽤户运⾏,⼀个⽤户拥有特定的权限,该⽤户运⾏的进程与
    ⽤户权限⼀致
    2、通常在公司是使⽤普通⽤户管理服务器,因为root权限过⼤,容易出问题
    

    3、如何查看⽤户相关信息

    [root@aliyum ~]# id # 查看当前⽤户
    uid=0(root) gid=0(root) groups=0(root) [root@aliyum ~] # whoami # 查看当前⽤户是谁
    root
    [root@aliyum ~]# id egon  # 查看egon⽤户
    uid=0(root) gid=0(root) groups=0(root) 
    [root@aliyum ~]# who # 查看所有登录的⽤户
    root pts/2 2020-10-23 15:24 (139.227.12.100)
    [root@aliyum ~]# ps aux |grep [s]sh  # 每⼀个进程都有其⽤户
    root 1067 0.0 0.2 112920 4328 ? Ss Feb15 0:04 /usr/sbin/sshd -D
    root 27197 0.0 0.2 154708 5576 ? Ss 15:24 0:00 sshd:
    root@pts/2
    

    4、linux系统中⽤户⻆⾊划分

    在linux系统中的⽤户分为管理员⽤户与其他⽤户
    管理员⽤户拥有最⾼权限
    其他⽤户根据管理员的分配拥有不同的权限
    
    # 需要强调的是:
    对于linux系统来说,⽤户的⻆⾊是通过UID和GID识别的;⽤户系统帐号的名称(如egon)其实给
    ⼈(管理员)看的,linux系统能够识别的仅仅是UID和GID这样的数字。
    
    # uid与gid
    1. UID (User Identify)⽤户ID,唯⼀标识⼀个系统⽤户的帐号,uid在系统中是唯⼀的。uid
    相当于⼀个⼈的身份证,⽤户名就相当于这个⼈的名字
    2. GID (Group Identify)组ID,如果把⼀个操作系统当成⼀家公司,uid相当于这个⼈的员⼯
    号,gid相当于他的部⻔编号。
    centos7系统之前约定
    uid: 0 由超级⽤户或具备超级⽤户权限的⽤户创建的⽤户(贫⺠⽼百姓,⼤⾂,布
    ⾐/bin/bash) 
    uid: 1~499 系统虚拟⽤户:UID范围1-499,存在满⾜⽂件或服务启动的需要。⼀般不能登录,
    只是傀儡
    uid: 500-65535 普通⽤户
    
    centos7系统约定:
    0 超级管理员,最⾼权限,有着极强的破坏能⼒
    1~200 系统⽤户,⽤来运⾏系统⾃带的进程,默认已创建
    201~999 系统⽤户,⽤来运⾏安装的程序,所以此类⽤户⽆需登录系统
    1000+ 普通⽤户,正常可以登录系统的⽤户,权限⽐较⼩,能执⾏的任务有限
    
    # ⽤户和组的关系:
    ⼀对⼀,多对⼀,⼀对多,多对多
    

    5、超级⽤户

    默认是root⽤户,其UID和GID均为0。root⽤户在每台unix/linux操作系统中都是唯⼀且真实存
    在的,通过它可以登录系统,可以操作系统中任何⽂件和命令,拥有最⾼的管理权限。
    
    举个例⼦:
    - 1、操作系统=》⼀个国家
    - 2、root⽤户=》国王
    - 3、root⽤户的家⽬录=》皇宫
    
    需要注意的是:
    - 1、在⽣产环境中,⼀般会禁⽌root帐号通过SSH远程连接服务器(保护好皇帝),当然了,也会
    更改默认的SSH端⼝(保护好皇宫),以加强系统安全。
    - 2、企业⼯作中:没有特殊需求,应该尽量不要登录root⽤户进⾏操作,应该在普通⽤户下操作任
    务,然后⽤sudo管理普通⽤户的权限,可以细到每个命令权限分配。
    - 3、在linux系统中,uid为0的⽤户就是超级⽤户。但是通常不这么做,如果确实有必要在某⼀操
    作上⽤到管理的权限的话,那就⽤sudo单独授权,也不要直接⽤uid为0的⽤户,
    

    6、扩展阅读

    # Linux/Unix是⼀个多⽤户、多任务的操作系统
    # windows是⼀个单⽤户多任务操作系统
    多⽤户不是说可以创建多个⽤户,⽽是指⼀次可以登录多个⽤户
    多任务指的是可以并发执⾏多个进程
    回忆之前讲过的linux发展史:
    multics-》unix-》linux,所以linux是多⽤户的,天然⽀持多个连机终端,连机终端在没有互联
    ⽹的情况下是有意义的,多个⼈可以⽤不同的连机终端连到⼀台机器/服务器上使⽤,⽽有了互联⽹之
    后,多个⼈可通过⽹络访问服务器,这个时候多⽤户or单⽤户的概念就不再那么重要
    

    ⼆、⽤户与组相关⽂件

    和⽤户、组相关的⽂件:

    • /etc/passwd

    • /etc/shadow

    • /etc/group

    • /etc/gshadow

      /etc/passwd

      root:x:0:0:root:/root:/bin/bash
       
      第⼀字段:⽤户名(也被称为登录名);
      第⼆字段:⼝令;在例⼦中我们看到的是⼀个x,其实密码已被映射到/etc/shadow ⽂件中;
      第三字段:UID ;请参看本⽂的UID的解说;
      第四字段:GID;请参看本⽂的GID的解说;
      第五字段:描述信息,可选
      第六字段:⽤户的家⽬录所在位置;
      第七字段:⽤户所⽤SHELL的类型
      

      /etc/shadow

      small_egon:$1$VE.Mq2Xf$2c9Qi7EQ9JP8GKF8gH7PB1:13072:0:99999:7:::
      big_egon:$1$IPDvUhXP$8R6J/VtPXvLyXxhLWPrnt/:13072:0:99999:7::13108:
      第⼀字段:⽤户名(也被称为登录名),在/etc/shadow中,⽤户名和/etc/passwd 是相同的,这
      样就把passwd 和shadow中⽤的⽤户记录联系在⼀起;这个字段是⾮空的;
      第⼆字段:密码(已被加密),如果是有些⽤户在这段是x,表示这个⽤户不能登录到系统;这个字段
      是⾮空的;
      第三字段:上次修改⼝令的时间;这个时间是从1970年01⽉01⽇算起到最近⼀次修改⼝令的时间间隔
      (天数),您可以通过passwd 来修改⽤户的密码,然后查看/etc/shadow中此字段的变化;
      第四字段:两次修改⼝令间隔最少的天数;如果设置为0,则禁⽤此功能;也就是说⽤户必须经过多少
      天才能修改其⼝令;此项功能⽤处不是太⼤;默认值是通过/etc/login.defs⽂件定义中获取,
      PASS_MIN_DAYS 中有定义;
      第五字段:两次修改⼝令间隔最多的天数;这个能增强管理员管理⽤户⼝令的时效性,应该说在增强了
      系统的安全性;如果是系统默认值,是在添加⽤户时由/etc/login.defs⽂件定义中获取,在
      PASS_MAX_DAYS 中定义;
      第六字段:提前多少天警告⽤户⼝令将过期;当⽤户登录系统后,系统登录程序提醒⽤户⼝令将要作
      废;如果是系统默认值,是在添加⽤户时由/etc/login.defs⽂件定义中获取,在PASS_WARN_AGE
      中定义;
      第七字段:在⼝令过期之后多少天禁⽤此⽤户;此字段表示⽤户⼝令作废多少天后,系统会禁⽤此⽤
      户,也就是说系统会不能再让此⽤户登录,也不会提示⽤户过期,是完全禁⽤;
      第⼋字段:⽤户过期⽇期;此字段指定了⽤户作废的天数(从1970年的1⽉1⽇开始的天数),如果这
      个字段的值为空,帐号永久可⽤; www.hackdig.com
      第九字段:保留字段,⽬前为空,以备将来Linux发展之⽤;
      如果更为详细的,请⽤ man shadow来查看帮助,您会得到更为详尽的资料;
      

      /etc/group:组⽂件

      /etc/gshadow:组密码⽂件

      /etc/skel/ ⽤户⽼家的模板

      /home/xxx ⽤户家⽬录

      /var/spool/mail/xxx ⽤户邮箱⽂件

      三 ⽤户管理命令

      useradd #添加⽤户
      userdel #删除⽤户
      usermod #修改⽤户信息
      

      1,创建用户

      [root@localhost ~]# useradd user1
      

      2,查看用户

      [root@localhost ~]# id user1
      uid=1002(user1) gid=1003(user1) 组=1003(user1) 
      [root@localhost ~]# who # 查看所有登录的⽤户信息
      [root@localhost ~]# whoami # 查看当前登录的⽤户名
      

      注意:当创建⼀个⽤户时,如果没有指定⽤户的主组,将会创建⼀个同名的组作为⽤户的主组。

      3,删除用户

      [root@localhost ~]# userdel user1 # 删除⽤户user1,但不删除⽤户家⽬录和mail
      [root@localhost ~]# userdel -r user1 # 要想删彻底,加-r选项
      

      4,useradd命令详解:创建⽤户的同时指定选项

      #怎样在Linux系统中添加⼀个新的⽤户账户
      1) 掌握useradd命令的功能:新增⼀个⽤户。
      2) 了解useradd命令的常⽤选项:
      3) –u:指定⽤户的UID
      4) –g:指定⽤户所属的主群
       –G:指定⽤户所属的附加群
      5) –d:指定⽤户的家⽬录
      6) –c:指定⽤户的备注信息
      7) –s:指定⽤户所⽤的shell
      8) -e:修改过期时间
      9) -M: 不创建家⽬录
      10) -r: 创建系统账户,uid处于系统⽤户范围内,默认就没有家⽬录
      #灵活应⽤useradd命令的举例:
      a) 例如:在系统中新增⼀个fox(狐狸)⽤户的命令:useradd fox
      
      b) 例如:在系统中新增⼀个⽤户user01,属组为police以及uid为600的命令:
      useradd –u 600 –g police user01
      # 其他练习
      [root@root ~]# useradd user01 
      [root@root ~]# useradd user02 -u 503 # 创建⽤户usr02,指定uid
      [root@root ~]# useradd user03 -d /aaa # 创建⽤户user03 指定家⽬录
      [root@root ~]# useradd user04 -M # 创建⽤户user04,不创建家⽬录
      [root@root ~]# useradd user05 -s /sbin/nologin # 创建⽤户并指定shell
      [root@root ~]# useradd user06 -g hr # 创建⽤户,指定主组
      [root@root ~]# useradd user07 -G sale # 创建⽤户,指定附加组
      [root@root ~]# useradd user08 -e 2014-04-01 # 指定过期时间
      [root@root ~]# useradd user10 -u 4000 -s /sbin/nologin
      [root@aliyum ~]# useradd xxx -M -s /sbin/nologin # 创建普通⽤户,但是没有家⽬
      录,不能登录系统
      [root@aliyum ~]# useradd -r yyy -s /sbin/nologin # yyy属于系统⽤户,uid处于系
      统⽤户uid范围内
      

      5,usermod命令

      同useradd参数基⼀致,只不过useradd是添加,usermod是修改

      -u #指定要修改⽤户的UID
      -g #指定要修改⽤户基本组
      -a #将⽤户添加到补充组。仅与-G选项⼀起使⽤
      -G #指定要修改⽤户附加组,使⽤逗号隔开多个附加组, 覆盖原有的附加组
      -d #指定要修改⽤户家⽬录
      -c #指定要修改⽤户注释信息
      -s #指定要修改⽤户的bash shell
      [root@root ~]# usermod -e 2013-02-11 user1000 # 修改过期时间
      [root@root ~]# usermod -g group1 jj # 修改主组
      [root@root ~]# usermod -a -G group2 jj # 修改附加组,-a添加,不加-a代表覆盖
      其他选项
      -m #将⽤户主⽬录的内容移动到新位置。如果当前主⽬录不存在,则不会创建新的主⽬录
      -l #指定要修改⽤户的登陆名
      -L #指定要锁定的⽤户
      -U #指定要解锁的⽤户
      

      6、设定与修改密码

      passwd # 默认给当前⽤户设定密码
      passwd ⽤户名 # root⽤户可以给⾃⼰以及所有其他⽤户设定密码,普通⽤户只能设定⾃⼰的密码
      echo "密码" | passwd --stdin ⽤户名 # ⾮交互式
      # 补充:可以利⽤系统内置变量⽣成随机字符串来充当密码
      [root@aliyum ~]# echo $RANDOM|md5sum|cut -c 1-10
      70ba11a74b
      
  • 相关阅读:
    面试中变相考算法复杂度
    黑马程序猿——JAVA面向对象的特性:封装,继承,多态
    Supermap 组合单值专题图与标签专题图演示样例
    线段树 hdu3642 Get The Treasury
    servlet学习(1)
    Androidbutton事件的五中写法总结
    Java多线程的调度策略
    linux命令行学习-dig(DNS查询器)
    kettle(一)概述
    学习C语言,困难吗?
  • 原文地址:https://www.cnblogs.com/caodan01/p/14524447.html
Copyright © 2020-2023  润新知