目录
【学习目标】
• 理解用户账户分类、用户账户密码文件及组群文件。
• 掌握Ubuntu的超级用户权限与管理员。
• 掌握用户账户管理及组群维护与管理。
• 理解su和sudo命令的使用方法。
• 掌握文件和目录的权限以及详解文件和目录的属性信息。
• 掌握使用数字表示法与文字表示法修改文件和目录的权限的方法。
• 掌握文件访问控制列表的配置方法。
3.1 项目描述
Ubuntu Linux是一个多用户、多任务的操作系统,可以让多个用户同时使用系统。
为了保证用户之间的独立性,允许用户保护自己的资源不被非法访问,用户之间可以共享信息和文件,也允许用户分组工作,对不同的用户分配不同的权限,使每个用户都能各自不受干扰地独立工作,因此,作为系统的管理员,掌握系统配置、用户权限设置与管理、文件和目录的权限设置是至关重要的。
本章主要讲解了用户账户、组群管理、su和sudo命令的使用以及文件和目录权限管理。
3.2 必备知识
3.2.1 Linux用户账户管理
为了实现安全控制,每次登录Linux操作系统时都要选择一个用户并输入密码,每个用户在系统中有不同的权限,其所能管理的文件、执行的操作也不同。下面来介绍用户账户分类、用户账户密码文件以及用户账户管理等相关内容。
1.用户账户分类
(1)超级用户(root)管理员账户,具有一切权限,对普通用户和整个系统进行管理,超级用户具有绝对的控制权。ID:0
(2)系统用户 正常工作所必需的内建用户,为了满足响应的系统进程对文件的属主的要求建立的。ID1~999
(3)普通用户 只能进行普通工作,只能访问或者修改拥有权限的文件或目录。ID1000~65535
用户默认配置信息目录 /etc/login.defs
vim /etc/login.defs
用户基本信息 /etc/passwd
vim /etc/passwd
用户密码等安全信息 /etc/shadow
2.用户账户密码文件
可以实现对用户的管理,每个用户在文件中对应一行,记录该用户的相关信息。
(1)用户账户管理文件 /etc/passwd
cat -n /etc/passwd
创建的用户账户及相关信息(除密码外)均放在/etc/passwd配置文件中。
账户名称:密码:UID:GID:用户信息:主目录:命令解释器(登录shell)
passwd文件中各字段的功能说明详见P82,表3-1
字段 | 功能说明 |
---|---|
账户名称 | 用户账户名称;用户登录时所使用的用户名 |
密码 | 用户口令,这里的密码会显示为特定的字符“X”,真正的密码被保存在 shadow 文件中 |
UID | 用户的标识,是一个数值,Linux操作系统内部使用它来区分不同的用户 |
GID | 用户所在的主组的标识,是一个数值,Linux 操作系统内部使用它来区分不同的组,相同的有相同的 GID |
用户信息 | 可以记录用户的个人信息,如用户姓名、电话等 |
主目录 | 用户的宿主目录,用户成功登录后的默认目录 |
命令解释器 | 用户所使用的 Shell类型,默认为/bin/bash |
(2)用户密码文件 /etc/shadow
在/etc/passwd文件中,有一个字段用来存放经过加密后的密码。
x字段
下面先来查看/etc/passwd文件的权限,执行命令如下。
ls -l /etcpasswd
可以看到任何用户对它都有读的权限,虽然密码已经经过加密,但是仍不能避免“别有用心”的人轻易地获取加密后的密码并进行解密。
为了增强系统的安全性,Linux 操作系统对密码提供了更多的保护,即把加密后的密码重定向到另一个文件/etc/shadow 中,只有 root 用户能够读取/etc/shadow文件的内容,这样密码就安全多了。
查看/etc/shadow文件的权限,执行命令如下。
ls -l /etc/shadow
可以看到/etc/shadow和/etc/passwd文件的内容类似,前者中的每一行都和后者中的每一行对应,每个用户的信息在/etc/shadow文件中占用一行,并用“:”分隔为9个字段。
其格式如下。
账户名称:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志字段
shadow文件中各字段的功能说明详见P83,表3-2
字段 | 功能说明 |
---|---|
账户名称 | 用户账户名称,用户登录时所使用的用户名,即/etc/passwd文件中相对应的用户名 |
密码 | 加密后的用户口令,*表示用户被禁止登录,!表示用户被锁定,!!表示没有设置密码 |
最后一次修改时间 | 用户最后一次修改密码的时间(从 1970年1月1日起计的天数) |
最小时间间隔 | 两次修改密码允许的最小天数,即最短口令存活期 |
最大时间间隔 | 密码保持有效的最多天数,即最长口令存活期 |
警告时间 | 从系统提前警告到密码正式失效的天数 |
不活动时间 | 口令过期多少天后账户被禁用 |
失效时间 | 表示用户被禁止登录的时间 |
标志字段 | 保留域,用于功能扩展,未使用 |
用户的管理是系统至关重要的环节,Linux操作系统中用户开机时要求必须提供用户名和密码,因此设置的用户名和密码必须牢记,密码的长度要求至少是6位。
因为可以手动修改/etc/passwd文件,更容易出现问题,因此建议用户在使用的时候,用命令或者图形用户界面设置用户名和密码,不要直接更改/etc/passwd 文件的内容。
建议:用命令或者图形界面设置用户名和密码,不要直接更改/etc/passwd文件的内容。
3.2.2 Ubuntu超级用户权限与管理员
Linux操作系统中具有最高权限的 root账户可以对系统做任何事情,这对系统安全来说可能是一种严重威胁。
Ubuntu Linux是一个多用户、多任务的操作系统,任何一个用户要获得系统的使用授权,都必须要拥有一个用户账户。
1.Linux的超级用户权限解决方案
多数Linux发行版安装完毕都会要求设置两个用户账户的密码,一个是root账户,另一个是用于登录系统的普通账户,并且允许root账户直接登录到系统,这样 root 账户的任何误操作都有可能带来灾难性的后果。
然而,许多系统配置和管理操作需要 root 权限,如安装软件、添加或删除用户和组、添加或删除硬件和设备、启动或禁止网络服务、执行某些系统调用、关闭和重启系统等,为此Linux提供了特殊机制,让普通用户临时具备root权限。
普通用户临时具备root权限:
(1)su: 将自己提升为root权限(临时)
(2)sudo: 临时以root身份运行程序,需要输入密码,执行完毕后自动返回到普通用户,时间间隔为5min,超时之后需要重新输入密码
2.Ubuntu管理员
默认禁止root账户,系统安装时创建的第一个用户自动成为Ubuntu管理员。
Ubuntu 将普通用户进一步分为两种类型:标准用户和管理员。
Ubuntu 管理员是指具有管理权限的普通用户,有权删除用户、安装软件和驱动程序、修改日期和时间,或者进行一些可能导致计算机不稳定的操作。
标准用户不能进行这些操作,只能修改自己的个人设置。
Ubuntu管理员主要执行系统配置管理任务,但不能等同于Windows系统管理员,其权限比标准用户高,比超级用户低很多。
在工作中,当需要超级用户权限时,管理员可以通过sudo命令获得 root用户的所有权限。
管理员可通过sudo命令获得root用户所有权限。
3.2.3 组群管理
Linux操作系统中包含私有组、系统组、标准组。
(1)私有组:建立用户账户时,若没有指定其所属的组,则系统会建立一个组名和用户名相同的组,这个组就是私有组,它只容纳了一个用户。
user01
(2)系统组:这是Linux操作系统正常运行所必需的组,安装Linux操作系统或添加新的软件包时会自动建立系统。系统自动生成的组。
(3)标准组:可以容纳多个用户,组中的用户都具有组所拥有的权限。
一个用户可以属于多个组,用户所属的组又有基本组(也称主组)和附加组之分。
可以给用户组设置权限(组内所有的用户都具有了该权限)
用户所属组中的第一个组称为基本组,基本组在/etc/passwd文件中指定;其他组为附加组,附加组在letc/group文件中指定。属于多个组的用户所拥有的权限是它所在的组的权限之和。
相对于用户信息,用户组的信息要少一些。
与用户一样,用户分组也是由一个唯一的身份来标识的,该标识叫作用户组ID ( Group ID, GID),在Linux操作系统中,关于组群账户的信息存放在/etc/group文件中,而关于组群管理的信息,如组群密码、组群管理员等,则存放在/etc/gshadow文件中。
1.组群/etc/group文件
用于存放用户的组群账户信息,任何用户都可以读取该文件内容,每个组群账户在group文件中占一行,并用“:”分隔为4个字段。
其格式如下:
组群名称:组群密码(一般为空,用x占位):GID:组群成员
group 文件中各字段的功能说明如表 3.3 所示。
字段 | 功能说明 |
---|---|
组群名称 | 组群的名称 |
组群密码 | 通常不需要设定,一般很少用组群登录,其密码也被记录在/etc/gshadow中 |
GID | 组群的ID |
组群成员 | 组群所包含的用户,用户之间用",,分隔,如果没有成员,则默认为空 |
group文件中显示的用户的组只有用户的附加组,用户的主组在这里是看不到的,它的主组在/etc/passwd文件中显示。
一般情况下,管理员不必手动修改这个文件,系统提供了一些命令来完成组的管理。
查看/etc/group 文件的内容,相关命令如下。
useradd -p 123456 user02 #创建用户user02,设置密码为123456
cat /etc/passwd #查看最后一行,user02用户创建成功
useradd -p 123456 user03 #创建用户user03,设置密码为123456
cat /etc/passwd #查看最后一行,user03用户创建成功
usermod -G root user01 #将user01用户加入到root用户组
cat /etc/group #查看第一行
usermod -G bin user02
usermod -G bin user03
cat -n /etc/group #查看第3行
id user01 #查看user01用户的相关信息
id user02
从以上配置可以看出,root 组的ID为0,包含用户 user01 组成员; bin 组的ID 为2,包含用户user02和user03组成员,各成员之间用",”分隔。
在/etc/group文件中,用户的主组群并不把该用户作为成员列出,只有用户的附属组群才会把该用户作为成员列出。
例如,用户bin的主组群是bin,但/etc/group文件的组群的成员列表中并没有用户bin,只有用户user02和user03。
2.组群/etc/gshadow文件
/etc/gshadow文件用于存放组群的加密口令、组管理员等信息。
该文件只有root用户可以读取,每个组群账户在gshadow文件中占一行,并用":”分隔为4个字段。
其格式如下。
组群名称:加密后的组群密码:组群的管理员:组群成员
gshadow文件中的各字段说明 p85 表3-4
字段 | 功能说明 |
---|---|
组群名称 | 组群的名称 |
加密后的组群密码 | 通常不需要设定,没有时用“!”占位 |
组群的管理员 | 组群的管理员,默认为空 |
组群成员 | 组群所包含的用户,用户之间用“,”分隔,如果没有成员,则默认为空 |
查看/etc/gshadow文件的内容,相关命令如下。
cat -n /etc/gshadow
3.2.4 文件和目录权限管理
1.理解文件和目录的权限
文件是操作系统用来存储信息的基本结构,是一组信息的集合,文件通过文件名来唯一标识。
在Linux操作系统中,文件名称最长允许有255个字符,可用a~z、A~Z、0~9、特殊字符等来表示。
与其他操作系统相比,Linux操作系统最大的不同就是没有“扩展名”的概念,也就是说,文件的名称和该文件的类型并没有直接联系。
例如,file01.txt 有可能是一个运行文件,而 file01.exe 有可能是一个文本文件,甚至可以不使用扩展名。
另外,Linux 操作系统文件名区分字母大小写,如file01.txt、File01.txt、 FILE01.TXT