运维学习之用户和组的管理:

   linux是一个多用户多任务的分时操作票系统,所有一个要使用系统资源的用户都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也能帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和用户口令。用户在登录时键入正确用户名和口令后,才能进入系统和自己的主目录。

实现用户账号的管理,要完成的工作主要有如下几个方面:

   1)用户账户管理

   2)组账户管理

   3)权限的分配

 现在大多数企业采用的Cisco公司开发的AAA认证体系:

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

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

    Accounting:审计,监督资源被使用的情况;

   在这个多用户、多任务的系统中,应用程序进程是能够实现资源使用和完成任务的主题。

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

   首先查看进程的所有者是不是资源的所有者,如果是,就按照属组的权限使用;

   如果不是,则判断进程的所有者是否属于资源所属组,如果是,按照属组的权限使用资源;如果不是,则直接使用资源的其他人访问权限来使用资源;

 

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

   其中用户分为2类:

        超级用户(管理员):root

        普通用户:

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

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


    用户的标识:

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

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

               超级用户ID:0

               系统用户ID:                         

                        CentOS5、6:1~499

                        CentOS7:1~999

               登录用户:

                        CentOS5、6:500~60000

                        CentOS7:1000~60000

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


    名称解析:

            名字<-->UID

     解析库:/etc/passwd(解析库文件)

     系统利用解析库完成认证机制:

                        验证登录用户是否是你声称的那个人

     认证库:

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

           组的认证信息库:/etc/group

   采用密码认证的机制:

     设置密码的一般性策略:

        1.尽量使用随机字串作为密码;

        2.密码的长度一般不要少8字符

        3.密码中至少包括大写字母、小写字母、数字和标点符号四类字符中的三类;

        4.不定期更换,每隔一段不规律的时间更换一个密码;42天之内更改密码。

   

   在linux中,保存到认证库中的密码信息是经过加密保存的:

   hash(哈希)单向加密算法:抽取原始数据的特征信息,数据指纹;

       单向加密算法的特征:

       1.只要数据相同,其加密结果就必然相同;

       2.无论数据多大,其加密效果定长输出;

       3.雪崩效应:

       4.不可逆

   单向加密常用的算法:

        1.md5:message diges,消息摘要,128bit定长输出

        2.sha1:Secuer Hash Alogrithm ,安全的哈希算法,160bit定长输出;

        3.sha224

        4.sha256

        5.sha384

        6.sha512

     salt:加随机数

     抽取随机数:

             ls  /dev/*random

             /etc/random  :仅仅只是从熵池中返回随机数,一旦熵池随机数耗尽,则进程被堵塞

             /etc/unrandom:先试图从熵池中返回随机数,如果熵池耗尽,它就会利用伪随机数生成器生产伪随机数;

     注意: 熵池中的数据有可能被取空。

   echo "qhdlink" | md5sum  :  为qhdlink这个数据流加密


最终认证字符串:算法+salt+密码

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


  用户组:将具有某些相同或相似属性的用户联系在一起以便集中授权的容器:

  用户的组类别:

         管理员组:

         普通用户组:

              1)系统组:

              2)登陆组:

    组的标识方法:

        组名:

            方便操作者使用的;

        组的ID(GID) :

              为系统提供组标识;

                 管理员组:0

                 系统组:

                     CentOS5~6:1-499

                     CentOS7:1-999

                  登陆组:

                     CentOS5、6:500-60000

                     CentOS7:1000-60000

     组的解析库:

             /etc/group

     组也需要认证,组也有认证库:

             /etc/grasswd

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

   

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

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

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

    根据组容纳的用户进行分类:

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

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

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


下面是我们在进行用户和组的管理时主要使用命令:

   组管理相关的命令:

      groupadd  groupdel  groupmod gpasswd

   用户管理相关的命令L:

      useradd  userdel  usermod

   与认证相关的命令:

      passwd 、gpasswd 、chage、

   其他的相关的管理命令:

       chsh  finger su id 


用户账号的管理主要涉及到用户账号的添加、删除和修改。

  1.创建新用户的命令是useradd,其语法如下:

  useradd 选项 用户名

  其中各选项含义如下:

     -c comment 指定一段注释性描述。

     -d  目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,能创建主目录。

     -g  用户组 指定用户所属的用户组。

     -G  用户组,用户组 指定用户所属的附加组。

     -s  Shell文件 指定用户的登录Shell。

     -u  用户号 指定用户的用户号,如果同时有-o选项,则能重复使用其他用户的标识号。

     -p  这个命令是需求提供md5码的加密口令,普通数字是不行的。


   

      2.删除账号的命令是userdel,其语法如下:

           userdel 选项 用户名

           -r : 把用户的主目录一起删除

      

       3.修改已有账号信息的命令是usermod,其语法如下:

     -c 修改用户帐号的备注文字。 

     -d 修改用户登入时的目录。 

     -e 修改帐号的有效期限。 

     -f 修改在密码过期后多少天即关闭该帐号。 

     -g  修改用户所属的群组。 

     -G  修改用户所属的附加群组。 

     -l  修改用户帐号名称。 

     -L  锁定用户密码,使密码无效。 

     -<shell>  修改用户登入后所使用的shell。 

     -u<uid>  修改用户ID。 

     -U  解除密码锁定。

  

   4.产看账号的属性

      id  user1 :显示user1的UID和GID


   5,指定和修改用户的密码命令是passwd,其用法如下:

      passwd 选项 用户名

     -l 锁定密码,即禁用账号。

     -u 密码解锁。

     -d 删除用户的密码。

     -f 强迫用户下次登录时修改密码。

  

   用户组的管理:

    1.添加用户组的命令是groupadd,其语法如下:

      groupadd 选项 用户

      -g GID 指定新用户组的组标识号(GID)。

      -o 一般和-g选项同时使用,表示新用户组的GID能和系统已有用户组的GID相同。

   2.删除已有的用户组用groupdel命令。

         groupdel 用户组

   3.修改用户组的命令是groupmod命令:

      groupmod 选项  用户组

      -g GID 为用户组指定新的组标识号。

      -o 和-g选项同时使用,用户组的新GID能和系统已有用户组的GID相同。

      -n 新用户组 将用户组的名字改为新名字