首页 > 代码库 > linux 用户组管理

linux 用户组管理

                                用户和组的管理

用户和组的管理方法分为用户账户 组账户 权限的分配


      Cisco开发的AAA认证体系

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

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

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

 

多用户,多任务的系统:

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

 

安全上下文:secure context

 

  进程是以其发起者的身份运行的:可以理解为,进程的所有者就是进程;会将发起者的信息标记在进程上;

当进程试图去访问资源的时候,安全上下文会比对进程的所有者和资源的所有者的关系;

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

如果不是,则直接使用资源的其他人访问权限来使用资源;

 

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

  用户分类:

      超级用户(管理员):root

      普通用户:

          系统用户:

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

          登陆用户:

      能够正常使用整个系统资源的用户;

      

  用户的标识:

用户登陆名称:

  为操作者准备的简单易记的字符串标识;16bit-->32bit

用户的ID

  为计算机系统准备的数字标识:15

    超级用户:0

    系统用户:

        Centos561~499

        Centos71~999

   登陆用户:

       Centos56500~60000

       Centos7:1000~60000

       60000以上的标识符为用户自定义标识;

 

名称解析:

    名字 <--> ID

解析库:/etc/passwd

 

系统利用解析库完成认证机制:验证登陆用户是否是你声称的那个人;

 

认证库:

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

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

 

采用密码认证的机制:

    设置密码的一般性策略:

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

      2.密码长度一般不要少于8个字符;

          3.密码中尽量包括大写字母,小写字母,数字和标点符号四类字符中的三类;

          100^8

          4.不定期更换,每隔一段时间更换一个密码;

 

linux里面,保存到认证库中的认证信息是经过加密保存的;明文通过加密程序与加密算法变为密文;

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

        单向加密算法的特征:

         1.只要数据相同其加密经过就必然相同;

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

         3.雪崩效应

         4.不可逆

  单向加密常用的算法:

1.Md5:message digest,消息摘要,128bit的定长输出;

2.Sha1secure hash algorithm:安全的哈希算法,160bit定长输出;

3.Sha224

4.Sha256

5.Sha384

6.Sha512

 

Salt:随机数

  /dev/random:仅仅是从熵池(搜集随机数的设备)中返回随机数;如果熵池随机数耗尽,则进程被阻塞;

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

最终认证字符串就变成了:算法+salt+密码

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

 

用户组:

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

   组类别:

     管理员组:

     普通用户组:

             系统组:

             登陆组:

 

组的标识方法:

   组名:

方便操作者使用的;

   组的IDGID):

为系统提供组标识;

  组管理员:0

  系统组:

     Centos561~499

     Centos71~999

  登陆组:

     Centos565~60000

     Centos71000~60000

解析库:/etc/group

 

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

组也需要密码保护:

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

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

  用户的主要组(基本组):Primary

  Group,对于用户来讲,这样的组必须要有而且只能有一个;

  用户的附加组:Addition Group,对于用户来讲这样的组可以没有也可以有多个

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

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

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

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

 

用户和组的管理工作:

主要使用命令来完成:

   组管理相关的命令:

      Groupadd,groupdel,groupmod,

   用户管理相关的命令:

  Useradd,userdel,usermod

 

   认证相关的命令:

     Passwd,gpasswd,chage

   其他的相关管理命令:

     Chsh,finger,su,id

 

 

两个解析库:/etc/passwd,/etc/group

 

/etc/passwd:

Name:passwdUIDGID:GECOS:directory:shell

Name:登陆名;

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

UID:用户的ID

GID:此用户主要组的ID

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

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

Shell:用户的默认登陆shell的绝对路径;

 

/etc/group:

Group_name:passwd:GID:user_list

 

Group_name:组名

Passwd:组密码占位符,默认为空

GID:组的ID

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

 

两个认证库:/etc/shadow,/etc/gshadow

 

/etc/shadow

Login nameEncrypted passwordDate of last password change: Minimum password age:Maximum password age: Password warning periodPassword inactivity periodAccount expiration dateReserved field

 

 

Login name:用户的登陆名

 Encrypted password:加密了的密码

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

  如果该位置为!:则表示用户的密码被禁用;

  如果该位置为*,则表示该用户为系统用户,不能登陆;

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

 

 Date 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

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

Reserved field

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

 

/etc/gshadow

 

Group nameEncrypted passwordadministratorn

Encrypted password

 

组管理命令:

Groupadd:新建组账户,添加组;

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

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

Groupmod:修改组的相关属性信息;

   Groupmod [选项] GROUP

   -g gid:修改组账户的id

   -n NEW_GROUPNAME:修改组名;

Groupdel:删除组账户;

   Groupdel [选项] GROUPNAME

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

 

用户管理的命令:

1.useradd

 useradd [选项] 登录名

  /etc/default/useradd

  /etc/login.defs

  /etc/skel

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

 

选项:

 -c:--commentCOMMENT:在创建用户时为用户创建注释信息,一般为全名;

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

 -g, --gidGROUP

           用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组;在创建用户时,为用户指定主组;

 -G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]

        在创建用户时,为用户添加附加组;

 -m, --create-home

      如果不存在,则创建用户主目录。骨架目录中的文件和目录(可以使用 -k

      选项指定),将会复制到主目录。在创建用户时,强制性为用户创建家目录;

 -M, --no-create-home

      在创建目录时,绝对不会创建用户的家目录,即使在/etc/login.defsCREATE_HOME的值为yes也不能创建;

-r, --system

      创建一个系统账户。

 -u, --uidUID

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

 

 -s, --shell /PATH/TO/SHELL  

在创建用户的时候,为用户指定默认shell,使用绝对路径;

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

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

 

Usermod:修改用户账户信息

      usermod [选项] 登录名

选项:

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

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

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

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

 -d, --home /PATH/TO/HOME_DIR:为用户修改家目录;

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

 -l, --login NEW_LOGIN:更改用户的登陆名;

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

 -u, --uidUID:修改用户的UID

 -L, --lock:锁定用户的密码。

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

 

Userdel:删除用户账户;

   userdel [选项] 登录名

   选项: -r, --remove,删除用户同时,删除用户的家目录;

 

用户认证相关目录:

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

passwd  [-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 -l解锁,而使用passwd

 -l锁定的密码无法用usermod -U解锁;

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

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

  EchoPASSWORD|passwd --stdin USERNAME

组认证相关命令:

Gpasswd

gpasswd [选项] groupname

选项:

-a, --adduser

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

    -d, --deleteuser

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

 

其他命令:

 

Suswitch user,切换用户身份

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

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

 

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

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

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

 

Newgrp GROUPNAME:临时更改当前登陆用户的主要组;使用exit返回

 

Id:显示真实的id和有效的用户组的id

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

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

id [OPTION]... [USERNAME]

   -u, --user

               显示 用户的有效 UID

 

 

  -g, --group

               显示 用户的有效 GID

  -G, --groups

               显示用户所有组ID

  -n, --name

              以名称来替代ID进行显示


本文出自 “fuboyuan” 博客,谢绝转载!

linux 用户组管理