前言
- Linux作为一个多任务,多用户的服务器操作系统,Linux提供了严格的权限管理机制,主要从用户身份,文件权限两方面对资源访问进行控制。
一:用户账号和组账号概述
- Linux系统中的用户账号和组账号的作用在本质上和Windows是一样的,都是基于用户身份来控制对资源的访问。但是在个别细节和表现形式方面还是有些许差异的。
1.1:用户账号概述
- Linux系统中,根据系统管理的需要,将用户账号分为不同的类型,其拥有的权限,担任的角色也各不相同。
用户账号 | 功能 |
---|---|
超级用户 | root用户是Linux系统中默认的超级用户账号,对本级拥有最高的权限,类似于Windows系统中的administrator用户。 |
普通用户 | 普通用户账号需要有root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。 |
程序用户 | 在安装Linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。例如:bin,daemon,ftp,mail等。 |
匿名用户 | Windows中的匿名用户时guest,Linux系统中匿名用户是nobody。 |
1.2:组账号概述
- 对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在”/etc/passwd“文件中第四个字段记录的即为该用户的基本组GID号。而对于该用户还属于那些附加组,需要在对应组账号文件中才被体现。
账号 | 描述 |
---|---|
私有组(基本组) | 随着用户的建立而建立,与用户同名 |
共有组(附加组) | 直接创建空组,可以自由添加已有用户。给组设置权限后,该组中的所有用户都具备此权限。 |
1.3:UID号和GID号
- Linux系统中的每一个用户账号和组账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号)和GID(Group IDentify,组标识号)。对于系统核心来说,UID是作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。
用户 | UID号 |
---|---|
root用户 | 固定值UID=0 |
程序用户 | UID 1—999 |
普通用户 | UID 1000–6万 |
1.4:用户账号文件
-
Linux系统中的用户账号,密码等信息均保存在相对应的 配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。
-
与用户账号相关的配置文件主要有两个,分别是/etc/passwd, /etc/shadow、前者用于保存用户名称,宿主目录,登录Shell等基本信息,后者用于保存用户的密码,账号有效期等信息。
-
在这两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用冒号“:”进行分隔。
1.4.1:用户账号文件/etc/passwd
-
系统中所有用户的账号信息都保存在“/etc/passwd”文件中,该文件是文本文件,任何用户都可以读取文件中的内容。
-
系统中新增加的用户账号信息会保存到passwd文件的末尾。
-
基于系统运行和管理的需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户账号的密码信息也是保存在passwd文件中的,但是可以被不法用户暴力破解,因此后来将信息转存入专门的shadow文件中,而passwd文件中仅保留密码占位符“x”。
例如:查看passwd文件头两行内容(每一行对应一个用户的账号记录)
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
- passwd文件的每一行内容中,包含了七个用冒号“:”分隔的配置字段,我们需要了解其含义。
字段 | 解释 |
---|---|