首页 > 代码库 > 用户与组

用户与组

用户和组的管理:用户账户、组账户、权限的分配


Cisco开发的AAA认证体系

Authentication 认证,核实身份是否正确

Authorization 授权,对已经核实身份的用户进行资源分配

Accounting 审计,监管资源被使用的情况

多任务、多用户的系统

    能够实现资源使用和完成任务的主体是:应用程序和进程

    安全上下文:secure context体系里面包含的所有内容


进程是以其发起者的身份来运行的,进程的发起者就是其所有者,在进程上会将发起者的信息标记在进程上;当进程试图去访问资源的时候,安全上下文会比对进程的所有者和资源的所有者的关系

    首先查看进程的所有者是不是资源的所有者,如果是,就按照属主的权限使用资源;如果不是,则判断进程的所有者是否属于资源属组,如果是,按照属组的权限使用资源。如果不是,则直接使用资源的其他人使用权限来使用资源

 

用户账户:就是计算机操作者在操作系统中的身份映射;在满足了认证条件后的身份映射

   1用户分类:

    超级用户(管理员):root

    普通用户:   

        系统用户:为了保证安全,必须让那些运行在后台的进程或者服务进程以非管理员的身份运行;这类用户一般不能或不需要登录到系统(不是root

        登录用户:能够正常使用整个系统资源的用户

 用户的标识:

        用户的登录名称:为操作者准备的简单易记的字符串标识

        用户的ID:为计算机系统(设备)准备的数字标识

                  超级用户:0

                           Centos561~499

                           Centos7:1~999

                  登录用户:

                           Centos56500~60000(六万)

                           Centos71000~60000

                  60000+的标识符为用户自定义标识

   2、名称解析:名字<------->UID

           解析库:/etc/passwd (还可以存储为关系型数据库)

             系统利用解析库完成认证机制,严重登录用户是否是你声称的那个人

           认证库:/etc/shadow 用户的认证信息库

                   /etc/group 组的认证信息库

           采用密码认证的机制

                设置密码的一般性策略:

                      1)、尽量使用随机字串作为密码

                      2)、密码的长度一般不要少于8个字

                      3)、密码中尽量包括大写字母、小写字母、数字和标点符号四类字符中的三类以上

                      4)、不定期更换,每隔一段时间就换一个密码

 

     Linux中,密码是用加密的方式来保存的,保存到认证库中的密码是经过加密保存的(加密算法)。

     hash单向加密算法(只能加密,不能解密):抽取原始数据的特征信息,组成数据指纹。

     单向加密算法的特征:

           1)、主要数据相同,其加密结果就必然相同

           2)、主要数据足够大,9其加密结果定长输出

           3)、雪崩效应(如改一个二进制改全部)

           4)、不可逆

     单向加密常用算法

        1md5message digest,消息摘要,128bit定长输出

        2sha1secure hash algorithm,安全的哈希算法,160bit定长输出(更安全)

        3sha224

        4sha256

        5sha384

        6sha512

    salt(盐):随机数(random

   /dev/random 仅仅只是熵池(存放随机数)中返回的随机数,如果熵池随机数耗尽,则进程被阻塞

   /dev/urandom 先试图熵池中返回随机数,如果熵池耗尽,则利用伪随机数生成器生产伪随机数

  最终验证字符串:算法+sal+密码

  在认证库中存放的信息,例如:$6$salt$crytped_password

 

3、用户组

 可以将具有相同或相似属性的用户联系在一起,以便集中授权的容器(只是一种逻辑联系)

        类别

              管理员组:

              普通用户组:

                    系统组

                    登录组

        组的标识方法

             组名:方便操作者使用

             组的IDGID):为系统提供组标识

                  管理员组:0

                           Centos561~499

                           Centos7:1~999

 

                  登录组:Centos56 500~6000

                          Centos71000~60000

        组的解析库/etc/group

 

组也需要认证,组也有认证库:/etc/gpasswd

   组也需要密码保护:如果组没有设置密码保护的话,则不能随时加入

以用户为核心来对组进行分类。

   用户的主要组(基本组):primary group 对于这样的组来讲,必须要有,而且只有一个

   用户的附加组(附属组,额外组):addition group 这样的组对于用户来说,可以没有,也可以有多个

根据组所容纳的用户来说:

    私有组:组名与用户登录名相同,并且组中只有此用户

    共有组:组中可以包含其他多个不同用户

 注意:默认情况下,用户的主要组都是其私有组

 

  4、用户和组的管理:主要使用命令来完成

组管理相关的命令:

   1groupadd

   2groupdel

   3groupmod(修改)

用户管理相关的命令:

   1useradd

   2userdel

   3usermod

认证管理相关的命令:

  1passwd

  2gpasswd

  3chage

其他相关管理命令:chshfingersuid

 

1)、/etc/passwd

       例如:name:password:UID:GID:GECOS:directory:shell

                 name: 登录名

                 password:密码字段,现做在使用了shadow机制的系统中,通常使用“x”作为占位符;

                 UID:用户的ID

                 GID:此用户主要组的ID

                 GECOScomment,注释类的信息,现在一般都会用来存放用户的说明信息或全名;(只有注释字段可以留空)

                 directory: 用户家目录的绝对路径

                 shell:用户的默认登录shell的绝对路径

2)、/etc/group

     例如:group_name:password:GID:user_list

           password:组密码占位名,默认为空

           GID: 组的ID

           user_list: 以该组为附加组的用户的列表

3)、/etc/shadow

     例如:Login name:entrypted passsword:data of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserve filed

     login name:用户的登录名

     entrypted passsword:加密的密码

     格式:$算法$salt$真正意义的加密密码

     如果该位置为!,则表明用户密码被禁用

     如果该位置为*,则表明该用户为系统用户,不能登录

     如果该字段为空,则表明该用户可以无需输入密码即可登录系统,不推荐使用

     data of last password change:相对时间概念,相对于197011日到最后一次修改密码那天的天数

     minimum password age: 在多长时间内无法修改密码,默认值为0,意即:随时可以修改密码,如果是非0的其他数字,意思是在这么长的时间里不能改密码

     maximum password age:在多长时间之后密码过期,默认为99999,意思是永久有效

     password warning period:密码过期之前的友善提醒天数,默认为7

     password inactivity period:密码过期之后的宽限期,默认为-1,意思是永久宽限期

     account expiration date: 一个用户账户密码过期的日期,这是一个绝对的过期期限,例如:设置方式为xxxx/xx/xx

     reserved filed:保留字段,以备以后使用

 

4)、/etc/gpasswd:  

  例如:group name:encrypted password:administrators:members

 

组管理命令:

   groupadd:新建组账户,添加组

  groupadd [-g gid [-o]] [-r] [-f] groupname

       -g gid:在创建组账户的时候,指定组账户的GID;如果不使用该选项指定,系统会选择在组解析文件中出现在的不大于60000的最大GID1创建新组

       -r:创建系统组;意思就是创建一个GID1~9991~499)之间的组

  groupmod:修改组的相关属性信息

     group [选项] GROUPNAME

       -g gid: 修改组账户的ID

       -n NEW_GROUPNAME: 修改组名

  groupdel:删除账户

       groupdel [选项] GROUPNAME

    注意:如果某个组是某个用户的主要组或私有组,则该组无法删除

 

5、用户管理的命令:

 1)、useradd: 添加用户账户(注意同时添加了组)

       useradd [选项] 登录名

     /etc/default/useradd

     /etc/login.defs

     /etc/skel

以上三个文件和目录能够关注管理员在未指定任何选项时,也能创建用户,并为用户赋予默认的属性

选项:

-c, --comment COMMENT:在创建用户时,为用户添加注释信息,一般为全名

    -d, --home /PATH/TO/HOME_DIR: 在创建用户的时候为用户指定家目录的绝对路径,被指定的命令应该是事先不存在的目录

-g, --gid GROUPNAME: 在创建用户时,为用户指定主组

-G--groups GROUP1[,GROUP2],GROUP3...[GROUP]]];在创建用户时,为用户添加附加组

-m--create-home:在创建用户时,强制性为用户创建家目录

-M:在创建用户时,不会创建用户的家目录,即使在/etc/login.defsCREATE_HOME的值为yes也不创建

-r--system:创建系统用户

-u--uid UID:在创建用户的时候,为用户指定UID,这个UID可以超过6000的限制

-s--shell /PATH/TO/SHELL:在创建用户时,为用户指定默认shell,使用绝对路径

-D--defaults:显示或修改用户的默认属性值

-s--shell /PATH/TO/SHELL:修改/etc/default/useradd文件中SHELL的默认值

 

 2)、usermod修改用户账户信息

       usermod [选项] 登录名

  选项:

     -c--comment COMMENT:修改用户的注释信息

 -g, --gid GROUPNAME: 修改用户的主要组

     -G--groups GROUP1[,GROUP2],GROUP3...[GROUP]]];修改用户的附加组为列表中的组

         -a---append:与-G选项同时使用,给用户添加新的附加组

     -d---home /PATH/TO/HOME_DIR:修改用的家目录

         -m--move-home:与-d选项同时使用,将旧的家目录中的数据移动至新家之中

     -l--login NEW_LOGIN:更改用户账户的登录名

     -s--shell /PATH/TO/SHELL:修改用户账户的登录shell

     -u--uid UID:修改用户的UID

     -L--lock:锁定用户密码

     -U--unlock: 解锁用户密码

 3)、userdel: 删除用户账户

       userdel [选项] 登录名

    选项:

      -r:删除用户的同时,清除用户的家目录

 

 

6、跟用户认证相关命令:

 1)、passwd: 设置和查看用户的密码信息:

    例如:passswd  [-k] [-l] [-u[-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-s] [--stdin] [username]

       1、如果省略用户名,意味着更改当前登录用户的密码

       2、如果注定用户名,更改注定用户的密码,只能root使用

 选项:

-l--lock:锁定用户密码

-u--unlock:解锁用户密码

   相比较使用usermod -L|-U而言,其优先级更高

   如果使用usermod -L锁定用户密码,,可以使用passwd -u解锁;

   而使用passwd -l锁定的用户密码,无法使用usermod -U解锁

-d--delete:删除用户密码,将/etc/shadow文件中第二个字段清空

-s--status: 查看用户的密码状态

    --stdin:借助于管道将输入数据流当做标准输入信息送给passwd指令

      例如:echo PASSWORD | passwd --stdin USERNAME

 

 7、组认证相关命令gpasswd

gpasswd  [选项] groupname

   选项: -aadduser  向名为group的组中添加用户user

          -ddeleteuser  从名为group的组中移除用户user

 

 

 8、其他命令

 suswitch user,切换用户身份

     su USERNAME:部分切换,半切换,不会重新读取目录用户的配置文件,因此,用户并没有登录行为,所以,工作环境不初始化

     su - USERNAME:登录式切换,完全切换,在切换用户的时候,重新读取目标用户的配置文件并且初始化工作环境,相当于su -l USERNAME

     -c COMMAND:并不会切换用户身份,而是以目标用户的身份执行某命令

 使用su命令的时候,从root切换到其他的普通用户,无需密码,但普通用户进行切换时,必须给出目标用户的密码

进行用户切换之后,不需要连续切换,而是用exit命令返回之前的用户

 newgroup GROUPNAME:临时更改当前用户的主要组,使用exit返回之前的状态

 

9id显示真实和有效的用户和组的ID

   真实的ID:在/etc/passwd定义的用户的UIDGID

   有效的ID:当前生效的用户的UIDGID

  id [OPTION]...[USER]

-g:只显示用户的有效GID

-u:只显示用户的有效UID

-G:显示用户所有组的ID

-n:以名称来代替ID进行显示

 

Cash: 修改用户的默认shell,相对于usermod -s

    例如: -s SHELL

了解:

Finger

Chfn

Pwck

grpck


用户与组