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

    一、用户组的基本概念

    1.1 用户与组的基本概念

    . Every process (running program) on the systemruns as a particular user.
       系统上的每个进程(运行的程序)都是作为特定用户运行的,
    . Every file is owned by a particular user.    
      每个文件是由一个特定的用户拥有
     . Access to files and directories are restricted by user.
       访问文件和目录受到用户的限制
     . The user associated with a running process determines thefiles and directories accessible to that process.
       与正在运行的进程相关联的用户确定该进程可访问的文件和目录 

    进程访问文件,文件是否能被访问,由进程关联的用户决定。

    为避免服务器被攻入的时候,被黑,使用普通的用户启动进程,避免太大的权限。

    查看用户的登入信息
        [root@lh ~]# id [user]
        uid=0(root) gid=0(root) groups=0(root)
       用户id    主组id    所有的组 查看文件的所有者 ls
    -l 查看进程的启动者 ps aux|grep httpd

    1.2 相关的配置文件

    • /etc/passwd      用户信息
    • /etc/shadow      用户密码
    • /etc/group            组的信息

    1.2.1 passwd文件

    root:x:0:0:root:/root:/bin/bash

    被:隔开分成了7各字段

    用户名:口令:uid:gid:注释性描述:主目录:登录Shell

    man 5 passwd

    用户名(login_name):是代表用户账号的字符串。通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(:),因为冒号在这里是分隔符。为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
    
      口令(passwd):一些系统中,存放着加密后的用户口令字。虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
    
      用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535。0是超级用户root的标识号,1-99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
    
      组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
    
      注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
    
      主目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
    
      登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
    
      用户的登录Shell可以指定为某个特定的程序(此程序不是一个命令解释器)。利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
    各字段详解

    1.2.2 shadow文件

      root:$6$gayPchTpBy32EWDr$KQeLRW6DEGvwp//:19760:0:99999:7:::   总共有9段,每个账号都有对应的行

      用户:密码:最后一次改动日期:密码不可被更动的天数:密码需要重新变更的天数:。。。。。。。

    密码字段详解:man 5 shadow

    密码被$分成了三段
    1.加密算法
            $1    MD5
            $5    SHA-256    
            $6    SHA-512
    2.盐
        为不同的密码,随机生产一个字符串,可以让密码相同的,最后生产的hash也不一样
    
    3.hash值
        密码+盐=hash值
        1. 帐号名称:由于密码也需要与帐号对应啊~因此, 这个档案的第一栏就是帐号,必须要与 /etc/passwd 相同才行!
      2. 密码:这个才是真正的密码,而且是 经过编码过的密码啦! 你只会看到有一些特殊符号的字母就是了!需要特别留意的是, 虽然这些加密过的密码很难被解出来,但是‘很难’不等于‘不会’,所以, 这个档案的预设属性是‘-rw-------’或者是‘-r--------’,亦即只有 root 才可以读写就是了!你得随时注意,不要不小心更动了这个档案的属性呢!另外, 如果是在密码栏的第一个字元为‘ * ’或者是‘ ! ’,表示这个帐号并不会被用来登入的意思。 所以万一哪一天你的某个使用者不乖时,可以先在这个档案中,将他的密码栏位的最前面多加一个 * !嘿嘿!他就无法使用该帐号啰!直到他变乖了,再给他启用啊!
      3. 最近更动密码的日期:这个栏位记录了‘更动密码的那一天’的日期, 不过,很奇怪呀!在我的例子中怎么会是 12959 呢?呵呵,这个是因为计算 Linux 日期的时间是以 197011 日作为 1 ,而 197111 日则为 366 啦! 所以这个日期是累加的呢!得注意一下这个资料呦!那么最近的 200511 日就是 12784 啦,瞭解了吗?
      4. 密码不可被更动的天数: 第四个栏位记录了这个帐号的密码需要经过几天才可以被变更!如果是 0 的话, 表示密码随时可以更动的意思。这的限制是为了怕密码被某些人一改再改而设计的!如果设定为 20 天的话,那么当你设定了密码之后, 20 天之内都无法改变这个密码呦!
      5. 密码需要重新变更的天数: 由于害怕密码被某些‘有心人士’窃取而危害到整个系统的安全,所以有了这个栏位的设计。 你必须要在这个时间之内重新设定你的密码,否则这个帐号将会暂时失效。 而如果像上面的 99999 的话,那就表示,呵呵,密码不需要重新输入啦! 不过,如果是为了安全性,最好可以设定一段时间之后,严格要求使用者变更密码呢!
      6. 密码需要变更期限前的警告期限:当帐号的密码失效期限快要到的时候, 就是上面那个‘必须变更密码’的那个时间时, 系统会依据这个栏位的设定,发出‘警告’言论给这个帐号,提醒他‘再过 n 天你的密码就要失效了,请尽快重新设定你的密码呦!’,如上面的例子,则是密码到期之前的 7 天之内,系统会警告该用户。
      7. 密码过期的恕限时间:如果用户过了警告期限没有重新输入密码, 使得密码失效了,也就是说,你在‘必须变更密码的期限前,并没有变更你的密码!’ 那么该组密码就称为‘失效的密码’啰~怎么办?没关系,还有这个栏位的天数设计啊~ 意思就是说,当密码失效后,你还可以用这个密码在 n 天内进行登入的意思。 而如果在这个天数后还是没有变更密码,呵呵!那么您的帐号就失效了!无法登入!
      8. 帐号失效日期:这个日期跟第三个栏位一样,都是使用 1970 年以来的总日数设定。这个栏位表示: 这个帐号在此栏位规定的日期之后,将无法再使用。 这个栏位会被使用通常应该是在‘收费服务’的系统中, 你可以规定一个日期让该帐号不能再使用啦!
      9. 保留:最后一个栏位是保留的,看以后有没有新功能加入。
      举个例子来说好了,假如我的 dmtsai 这个使用者的密码栏如下所示:
      dmtsai:$1$8zdAKdfC$XDa8eSus2I7nQL7UjRsIy/:13025:5:60:7:2:13125:
      这表示什么呢?要注意的是, 130252005/08/30 ,所以, dmtsai 这个使用者他的密码相关意义是:
      * 最近一次更动密码的日期是 2005/08/30 (13025);
      * 能够修改密码的时间是 5 天以后,也就是 2005/09/04 以前 dmtsai 不能修改自己的密码; 如果使用者还是尝试要更动自己的密码,系统就会出现这样的讯息:
      You must wait longer to change your password
      passwd: Authentication token manipulation error
      * 使用者必须要在 2005/09/042005/10/29 之间的 60 天限制内去修改自己的密码,若 2005/10/29 之后还是没有变更密码时,该帐号就会宣告失效;
      * 如果使用者一直没有更改密码,那么在 2005/10/29 之前的 7 天内,系统会警告 dmtsai 应该修改密码的相关资讯;例如当 dmtsai 登入时,系统会主动提示如下的资讯:
      Warning: your password will expire in 5 days
      * 如果该帐号一直到 2005/10/29 都没有更改密码,由于还有两天的恕限时间,因此, dmtsai 还是可以在 2005/10/31 以前继续登入;
      * 如果使用者在 2005/10/29 以前变更过密码,那么那个 13025 的日期就会跟著改变,因此, 所有的限制日期也会跟著相对变动喔!^_^
      * 无论使用者如何动作,到了 13125 ,大约是 2005/12/8 左右,该帐号就失效了~
    其他字段详解

    二、用户管理命令

      用户管理:useradd  userdel  usermod

      组管理:   groupadd groupdel

      密码管理: passwd   change

    2.1 组管理

      groupsadd

      groupsdel

      groupsadd -g 

      组管理比较简单

    2.2 用户管理

    2.2.1 组的理解

      使用id查看

      主组:

        一个用户有且只有一个主组:

          1. -g 指定,则主组为指定的组。 不推荐这样来使用,不然比较乱。都是使用第二种方法,自动more创建

          2.未指定 则系统创建与用户名相同的组

      附加组

        一个用户有多个附加组或没有:

          1.创建用户时指定 -G

          2.用户已经存在,加入到附加组,usermod,passwd

    2.2.2 创建用户

      -G  指定附加组          useradd user01 -G hr,IT

      -u  指定uid            useradd user02 -u 2000

      -d  指定家目录,目录不需要提前存在 useradd user03 -d /user03

      -s  指定shell           useradd  user04 -s /sbin/nologin 。#可以 作为ftp等

    2.2.3 删除用户

      使用id查看用户是否存在

        userdel  直接删除用户,配置文件保存着

        userdel -r  彻底删除,删除家目录,邮件文件.

    2.2.4 密码管理

      passwd [username]

      root用户可以给任何人修改密码

      普通用户只能给自己修改密码,还需提供原密码

    2.2.5 用户编辑

      方法1:使用usermod 

        usermod的参数和 useradd一致。

          usermode -s  user004 /sbin/nologin  #修改shell

          usermode  -G  it          #附加组,但是会覆盖,删除了原来的组

          usermode -aG it          #添加新组it

      方法2: gpasswd修改组

        usermod 使用 -aG常常会忘记,如果使用-G会直接覆盖了,所以使用了新的方法

          gpasswd -a  user04  it

          gpasswd -d  user04 it

          gpasswd -M user04 it,hr  一次性多次添加

    三、用户提权

      默认我们创建的用户都不能执行管理员的权限,需要把他加入到wheel组中。才能使用sudo命令来执行超级管理的命令。

        [root@lh ~]# id lh
            uid=1000(lh) gid=1000(lh) groups=1000(lh),10(wheel)

    用户的操作其实就是操作passwd、group、shadown文件,除了密码修改,都可以操作这几个文件

      

     

      

        

  • 相关阅读:
    英语 年份 读法
    香农第二定理的理解
    为什么正规子群在环里的对应概念叫理想,而不叫正规子环呢?
    vue 时间组件限制选择范围
    ubuntu 设置 shell脚本双击运行
    单元测试规范
    vue-element-admin项目配置运行
    SqlServer表字段查询
    git提交部分文件
    Asp.NetCore+Elasticsearch+Kibana日志记录
  • 原文地址:https://www.cnblogs.com/louhui/p/8686480.html
Copyright © 2011-2022 走看看