首页 > 代码库 > Linux用户和组的管理知识点

Linux用户和组的管理知识点

    Linux是一个真实的、完整的多用户多任务操作系统,多用户多任务就是可以在系统上建立多个用户,而多个用户可以在同一时间内登录同一个系统执行各自不同的任务,而互不影响。用户分为用户账户和组账户,因为其多用户多任务的特性,为了防止资源的损害,所以必须要有权限的分配。

    能够实现资源使用和完成任务的主体是应用程序进程,进程是以其发起者的身份运行的,也可以理解为进程的所有者就是发起者。当进程去访问资源的时候,安全上下文会比对进程的所有者和资源的所有者的关系:首先查看进程的所有者是不是资源的所有者,如果是,就按照属主的权限使用资源;如果不是则判断进程的所有者是否输入资源所属组,如果是,按照属组的权限使用资源;如果不是,则按照其他人的权限来使用。

    用户分为超级用户和普通用户,普通用户又分为系统用户和登录用户。系统用户是用来保证安全,让一些运行在后台的进程或者服务类运行,以非管理员的身份运行,这类用户一般不能登录到系统中。登陆用户即为能够正常使用整个系统资源的用户。

    用户以用户登录名称(字符串标识)和用户ID作为标识。用户ID也可理解为是为计算机准备的数字标识,超级用户的ID号为0,系统用户的ID号于centos5/6中为1~499,于centos7中为1~999,登录用户于centos5/6中为500~60000,于centos7中为1000~60000,注意60000以上的标识符为用户自定义标识的。名称解析即用户名和用户ID一一对应的字符串存储于解析库(/etc/passwd)中,系统利用解析库完成认证机制,验证登陆用户是否是你声称的那个人。认证库(/etc/shadow和/etc/group)采用密码认证的机制认证登录密码是否正确,保存到认证库中的密码是加密保存的,hash单项加密算法,只能对数据加密,不能对数据解密,抽取出原始数据的特征信息,类似于数据指纹。单向加密算法的特征:只要数据相同,其加密结果必然相同;无论数据多大,其加密结果定长输出;雪崩效应(如果改变一位数据,其加密结果完全改变);不可逆。注意第一条特征,如果加密结果相同,其数据必然相同,所以加密过程中要在加密数据上加上salt(随机数)。随机数有两个随机数生成工具random和urandom。random从熵池(来源于中断返回的随机数)中返回随机数,如果熵池被耗尽,则进程被阻塞;urandom先试图从熵池中返回随机数,如果熵池耗尽,则利用伪随机数生成器生产伪随机数。单向加密常用的算法有md5($1)、sha1($2)、sha224($3)、sha256($4)、sha384($5)、sha512($6)。因此认证库中存储的最终验证字符串为$6$salt$cryteped_passwd。

    用户组:将具有某些相同或相似属性的用户联系在一起以便集中授权的容器。分为管理员组,普通用户组,普通用户组又分为系统组和登陆组。组也通过组名和组ID来标识,组ID与用户ID类似,管理员组ID为0,系统组于centos5/6中ID为1~499,于centos7中ID为1~999,登陆组于centos5/6中ID为500~60000,于centos7中ID为1000~60000。组的解析库为/etc/group,认证库为/etc/group。组也需要密码保护,如果组没有设置密码保护的话,则不能随时加入。以用户为核心来对组进行分类可分为用户的主要组和用户的附加组,主要组必须要有且只能有一个,附加组对用户来讲可以有也可以没有;根据组所容纳的用户来分可分为私有组和公共组,私有组组名与用户登陆名相同,组中只有此用户,公共组包含其他多个不同用户。默认情况下,用户的主要组都是其私有组。    

    解析库/etc/passwd的字段分析:account:password:UID:GID:GECOS:directory:shell

account登录名;

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

UID用户ID;

GID此用户主要组ID;

GECOS comment注释类信息,现在一般都会用来存放用户的说明信息或全名;

directory家目录路径(绝对路径);

shell默认登陆shell的绝对路径;

    解析库/etc/group的字段分析:group_name:passwd:GID:user_list

group_name组名;

passwd组密码(默认为空);

GID数字化的组的标识;

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


    认证库/etc/shadow的字段分析:

        postfix:!!:17230::::::

            第一个叹号,密码被锁定,第二个叹号,没有密码

        login name:用户名登录名;

        encrypted password:加密了的密码

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

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

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

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

        date of last password change:

            相对时间概念,相对于1970年1月1日到最后一次修改密码的那天的天数;

        minimum password age:

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

        maximum password age:

            在多长时间之后密码过期,默认为99999,意思永久有效;

        password warning period:

            密码过期之前的友善提醒天数;默认值7天;

        password inactivity period:

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

        account expiration date:

            一个用户账户密码过期的日期,这是一个绝对的过期期限,xxxx/xx/xx

        reserved field:

            保留字段,以备以后使用;

一些关于用户和组的命令:

    组管理相关的命令:

      groupadd   groupdel   groupmod   

    用户管理相关的命令:

      useradd   userdel   usermod

    认证管理相关的命令:

      passwd   gpasswd   chage

    其他的相关管理命令:

      chsh   finger   su   id

组管理命令:

    groupadd新建组账户

        -g GID 在创建组账户的时候,制定组账户的GID,如果不使用该选项制定,系统

        会选择在组解析文件中,出现的不大于60000的最大GID+1

        -r创建系统组:意思就是创建一个GID在1~999之间的组

    groupmod修改组的相关信息

        -g GID修改组账户的ID

        -n NEWNAME修改组名

    groupdel删除组账户

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

    useradd新建用户账户:useradd [选项] 登录    

        当管理员在未制定任何选项时,这三个文件                                                     (/etc/default/useradd、/etc/login.defs、/etc/skel)也能创建用户,并为用户赋予默            认的属性。

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

        -d,在创建用户时,为用户指定用户家目录的路径,被指定的目录应该是事先

        不存在的目录,否则用户的家不能被正常创建

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

        -G在创建用户时,为用户添加多个附加组

        -M在创建用户时,不会创建用户的家目录

        -m强制性为用户创建家目录

        -r创建一个系统用户

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

        -s--shell在创建用户时,指明用户登陆的shell

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

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


    usermod:修改用户账户信息

      usermod [选项] 登录名

        -c, --commentCOMMENT修改用户注释信息

        -g, --gid GROUP修改用户主要组

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

           -a,--append将用户添加到附加组,只能和-G一起用

        -d, --homeHOME_DIR修改用户的家目录(只是把家目录挪过去,文件不搬家)

           -m, --move-home这个选项只有和 -d (或 --home) 选项组合使用时才有效

               ,,将旧的家目录中的数据移动至新家之中

        -l更改用户账户登录名

        -s修改用户账户的登陆shell

        -u修改用户UID

        -L锁定用户密码

        -U解锁用户密码

      userdel删除用户账户

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


用户认证相关命令:

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

        -l锁定密码lock

        -u解锁密码unlock

         注意:相比较usermod -L|-U而言,其优先级更高,

       -d--delete,删除用户密码将/etc/shadow第二字段(加密后的密码)清空   

        -S,--status查看用户的密码状态

          --stdin,借助于管道将输入数据流当作标准输入信息送给passwd命令。

组认证相关命令

      gpasswd

        -a--adduser向名为group的组中添加用户user

        -d--delete


其他命令

      su

    su USERNAME

      半切换,在切换用户时,不会重新读取用户的配置文件,因此用户并没有登陆行

为,所以,工作环境不初始化。

    su - USERNAME=su -l USERNAME

      登陆式切换,完全切换,切换用户时,会重新读取目标用户配置文件,并且初始

化工作环境。


    -c并不切换用户身份,而是以目标身份执行一个命令


  newgrp GROUPNAME,临时更改当前登录用户的主要组;使用exit返回


  id:

    -g只显示用户的有效GID

    -u只显示用户的有效UID

    -G显示用户所有组ID

    -n以名称代替ID显示

Linux用户和组的管理知识点