简介
Linux操作系统是一个多用户、多任务的服务器操作系统,提供了严格的权限管理机制,主要从用户身份、文件权限两方面对资源访问进行限制。任何一个使用系统资源的用户都需要首先向系统 管理员申请一个账号,然后以这个账号的身份进入系统。本章将分别学习Linux操作系统中用户和组账号的管理、文件权限和归属的管理。
本章重点
添加、删除、修改用户账号
设置目录和文件的权限
设置目录和文件的归属
1.管理用户账号和组账号
与Windows操作系统相比,Linux操作系统中的用户账号和组账号的作用在本质上是一样的,同样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节方面存在一些差异。
1.1用户账号和组账号概述
与Windows操作系统一样,Linux操作系统的每一个用户账号也都有唯一的用户名与密码。用户在登录时输入正确的用户名和密码,就能够进入操作系统和自己的主目录。本小节将介绍Linux操作系统中用户账号和组账号的相关概念。
1.用户账号
在Linux操作系统中,根据系统管理的需要将用户账号分为不同的类型,主要包括超级用户、普通用户和程序用户,各类型拥有的权限、担任的角色也各不相同。
超级用户:root用户是Linux操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于Windows操作系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。
普通用户:普通用户账号需要由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号, 这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如bin、daemon、ftp、mail 等。
2. 组账号
基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组);若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。 例如,用户zhangsan是技术部的员工,与部门内的其他同事同属于基本组tech,后来因工作安排需 要,公司将zhangsan加入邮件管理员组mailadm,则此时用户zhangsan同时属于tech、mailadm组, tech组是其基本组账号,而mailadm组是其附加组账号。
对组账号设置的权限将适用于组内的每一个用户账号。
3. UID 和 GID 号
Linux操作系统中的每一个用户账号都有一个数字形式的身份标记,称为UID(UserIDentity,用户标识号),对于操作系统核心来说,UID是区分用户的基本依据,原则上每个用户的UID号应该是唯一的。root用户账号的UID号为固定值0,而程序用户账号的UID号默认为1~499,500-60000的UID号默认分配给普通用户使用。
与UID类似,每一个组账号也有一个数字形式的身份标记,称为GID(GroupIDentity,组标识号)。root组账号的GID号为固定值0,而程序组账号的GID号默认为1-499,500-60000的GID号默认分配给普通组使用。
1.2用户账号管理
Linux操作系统中的用户账号、密码等信息均保存在相应的配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。
1.用户账号文件
与用户账号相关的配置文件主要有两个,分别是 /etc/passwd和 /etc/shadow。前者用于保存用户名称、宿主目录、登录Shell等基本信息,后者用于保存用户的密码、账号有效期等信息。在这两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用 ":"(冒号)进行分隔。
1)passwd文件中的配置行格式
操作系统中所有用户的账号基本信息都保存在 /etc/passwd文件中,该文件是文本文件,任何用户都可以读取文件中的内容。例如,以下操作可分别查看 /etc/passwd文件开头、末尾的几行内容。
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@localhost ~]# useradd teacher
[root@localhost ~]# passwd teacher
更改用户 teacher 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# tail -1 /etc/passwd
teacher:x:1001:1001::/home/teacher:/bin/bash
在passwd文件开头的部分,包括超级用户root及各程序用户的账号信息,系统中新增加的用户账号信息将保存到passwd文件的末尾。passwd文件的每一行内容中包含了七个用 ":"(冒号)分隔的配置字段,从左到右各配置字段的含义分别如下所述。
第1字段:用户账号的名称,也是登录系统时使用的识别名称。
第2字段:经过加密的用户密码字串,或者密码占位符 "X"。
第3字段:用户账号的UID号。
第4字段:所属基本组账号的GID号。
第5字段:用户全名,可填写与用户相关的说明信息。
第6字段:宿主目录,即该用户登录后所在的默认工作目录。
第7字段:登录Shell等信息,用户完成登录后使用的Shell。
基于系统运行和管理的需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。在早期的UNIX操作系统中,用户账号的密码信息也是保存在passwd文件中的,不法用户可以获取密码字串进行暴力破解,这样一来账号安全就存在一定的隐患。因此,后来将密码转存入专门的shadow文件中,而passwd文件中仅保留密码占位符 "X"。
2)shadow文件中的配置行格式
shadow文件又被称为"影子文件",其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。默认只有root用户能够读取shadow文件中的内容,且不允许直接编辑该文件中的内容。例如,以下操作可分别查看 /etc/shadow文件开头、末尾的几行内容。
[root@localhost ~]# head -2 /etc/shadow
root:$6$TUVznlT4e5xbqyB6$BD8oie2/8h4jJEJ2TWIHxtwt0ofz010uFIfBNrTTtbYApirm6acch7kwa8bPsuiM6aRFVY83rxQQzMm3G8zXN/::0:99999:7:::
bin:*:17110:0:99999:7:::
[root@localhost ~]# tail -1 /etc/shadow
teacher:$6$.5IDDZ1w$s8EpjMwhhtkdAos6YOj8Ja69Wq4xE3C6wso2zB1yNV5fQmf6X43frBnydpWl0H5S7ZjZMm.7PA4BnNAG1lCwT0:18533:0:99999:7:::
shadow文件的每一行内容中包含了九个用 ":"(冒号)分隔的配置字段,从左到右各配置字段的含义分别如下所述。
第1字段:用户账号名称。
第2字段:使用SHA-5 12 (哈希算法中的一种)加密的密码字串信息,当为或 "!!" 时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统。
第3字段:上次修改密码的时间,表示从197◦年01月⑴日算起到最近一次修改密码时间隔的天数。
第4字段:密码的最短有效天数,自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制。
第5字段:密码的最长有效天数,自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制。
第6字段:提前多少天警告用户密码将过期,默认值为7。
第7字段:在密码过期之后多少天内禁用此用户。
第8字段:账号失效时间,此字段指定了用户作废的天数(从197◦年01月01日起计算),默认值为空,表示账号永久可用。
第9字段:保留字段,目前没有特定用途。