2 用户管理
2.1 用户和组的基本概念和作用
2.1.1 账户实质
账户实质就是一个用户在系统上的标识,系统依据账户ID来区分每个用户的文件、进程、任务,给每个用户提供特定的工作关键(如用户的工作目录、SHELL版本以及环境配置等),使每个用户的工作都能独立不受干扰地进行。
2.1.2 用户和组
在Linux系统中,每次登录系统都必须以一个用户的身份登录,并且登录后的权限也会根据用户身份来确定。 每一个进程在执行时,也会有其用户,该用户也和进程所能控制的资源有关。Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。
- 用户账户分类
·普通用户账户:在系统上的任务是进行普通工作。 ·超级用户账户(或管理员账户):在系统上的任务是对普通用户和整个系统进行管理。
每个用户都被分配了一个唯一的用户ID号: ·超级用户:UID=0,GID=0 ·普通用户:UID>=1000 ·系统用户(伪用户,不可登录):0<UID<1000
·当用户登录时,他们被分配了一个主目录和一个运行的程序(通常是 shell)。 ·若无适当权限,用户无法读取、写入或执行彼此的文件。
组账户
·组是用户的集合 ·每个组都被分配了一个唯一的组ID号(GID) ·组和GID被保存在 /etc/group 文件中 ·每个用户都有他们自己的私有组 ·每个用户都可以被添加到其他组中来获得额外的存取权限 ·组中的所有用户都可以共享属于该组的文件
- 组账户的分类 标准组:
·标准组可以容纳多个用户 ·若使用标准组,在创建一个新的用户时就应该指定他所属于的组
私有组:
·私有组中只有用户自己 ·当在创建一个新用户时, 若没有指定他所属于的组,RHEL/CentOS就建立一个和该用户同名的私有组,且用户被分配到这个私有组中 ·优点:防止新文件归 “公共” 组所有 ·缺点:可能会鼓励创建 “任何人都可以访问” 的文件
- 用户和组的关系
·组是用户的集合。 ·一个标准组可以容纳多个用户。 ·同一个用户可以同属于多个组,这些组可以是私有组,也可以是标准组。 ·当一个用户同属于多个组时,将这些组分为:主组(初始组):用户登录系统时的组。附加组:登录后可切换的其他组。
2.1.3 存储用户信息的文件
-
/etc/passwd:文件中每行定义一个用户账号,每行分为多个字段定义不同用户账号的不同属性,各字段间用“:”分隔。
例:root:x:0:0:root:/root:/bin/bash =用户名:x:uid:gid:描述:HOME:shell (7列)
·name:这是用户登录系统时使用的用户名,在系统之是唯一的。 ·password:在此文件中的口令是X,这表示用户的口令是被/etc/shadow文件保护的。 ·uid:用户的识别号,是一个数字。每个用户的UID都是唯一的。 ·gid:用户的组的识别号,也是一个数字。每个用户账户在建立好后都会有一个主组。主组相同的账户其GID相同。 ·description:用户的个人资料,包括地址、电话等信息。 ·home:用户的主目录,通常在/home下,目录名和账户名相同。 ·shell:用户登录后启动的shell,默认是/bin/bash。
例:查看linux支持的shell类型
/etc/shells
-
/etc/shadow:保存经过加密的用户口令
例:root:$6$Bqh7RXBwbxb3o1X0$/Yuh7GE.LgPbZqf.8CUG6ag/HUUyx9u.U83K0MTW3xdYf9xFiK0GxqumIZjHaYUhIiGKOm2RV84/4MQoULds20::0:99999:7::: bin:*:16659:0:99999:7::: =用户名:口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留位 (8列)
·用户名:用户登录名 ·口令:用户的密码,$1$,MD5加密;$2$,Blowfish加密;$5$,SHA-256加密;$6$,SHA-512加密;*,用户不能用;!!,密码过期 ·最后一次修改的时间:从1970年1月1日起,到用户最后一次更改密码的天数 ·最小时间间隔:从最后一次修改时间到用户可以更改密码的天数(0,当天可以修改密码;x,修改密码x天后才能再次修改) ·最大时间间隔:从1970年1月1日起,到用户必须更改密码的天数(99999表示密码有效期无限) ·警告时间:在用户密码过期之前多少天提醒用户更新 ·不活动时间:在用户密码过期之后到禁用账户的天数 ·失效时间:从1970年1月1日起,到账户被禁用的天数
-
/etc/group
例: root:x:0: =组名:组口令:GID:组成员
组名:用户登录系统时的默认组名,它在系统中是唯一的 口令:组口令,由于安全性原因,已不使用该字段保存口令,用“x”占位 GID:是一个整数,系统内部用它来标识组 组内用户列表:属于该组的所有用户名表,列表中多个用户间用“,”分隔
-
/etc/gshadow
例: root::: =组名:组口令:组的管理员账户:组成员
组名:组名称,该字段与group文件中的组名称对应 加密的组口令:用于保存已加密的口令 组的管理员账号:管理员有权对该组添加删除账号 组内用户列表:属于该组的用户成员列表,列表中多个用户间用“,”分隔