Linux安全系统的核心是用户账户。 创建用户时会分配用户ID(UID)。 UID是唯一的,但在登录系统时不是用UID,而是用登录名。在讲文件权限之之前,先了解下linux是怎样处理用户账户的。以及用户账户需要的文件和工具,这样处理文件权限问题时,就知道如何使用它们了。
1.1 /etc/passwd用户文件
/etc/passwd 是用来将用户的登录名,匹配到对应的UID上。它包含了一些与用户有关的信息。下面截取二个片断。如下图所示:
root用户账户是linux系统管理员,固定分配给它的UID是0。 上面linux系统会为各种各样的功能创建不同的用户账户,而这些账户并不是真正的用户。它们叫作系统账户,是系统上运行各种服务进程访问资源用的特殊账户。root用户UID是0,mysql用户的UID是998。如下图所示:
linux系统账户预留了500以下的UID值。有些服务甚至要用特定的UID才能正常工作。在/etc/passwd文件中冒号分隔的字段包含以下信息:
mysql:x:998:1000::/home/mysql:/bin/bash
登录用户名
例如:mysql
用户密码
x (密码字段都被设置成了x)
用户UID
998
用户的组ID (GID)
I000
用户的文本描述
mysql 用户描述为空
用户的HOME目录位置
/home/mysql
用户的默认shell
/bin/bash
1.2 /etc/shadow 用户文件
/etc/shadow文件对linux系统密码管理提供了更多的控制。只有root用户才能访问/etc/shadow文件。比起/etc/passwd安全许多,文件内容如下图所示:
比如让mysql 用户来查看该文件,是没有这个权限的。
下是copy出来的root用户账户信息:
root:$6$BSeXl2xuiNYlDwkO$X4dfd8A97XHRO9S.9KNqL/bRX4B33tIAzOu1dwiPVLDS42YqwaY8JrwYAExGPuvc42yhnMmO28VRMP.qVjYDY1::0:99999:7:::
每条记录都有9个字段,字符串以冒号分隔的字段信息如下:第一个字段:登录名。 第二个字段:加密后的密码。其它字段以后在解读。使用/etc/shadow,可以控制用户多久更改一次密码,以及什么时候禁用该用户账户(在其它字段上设置这些功能)。
二. 用户工具管理
2.1 useradd 模板介绍
在linux系统中添加新用户的工具是useradd, 可以一次性创建新用户账户及设置用户HOME目录结构。useradd命令使用系统的默认值以及命令行参数来设置用户账户。系统默认值被设置在/etc/default/useradd文件中,可以定位到/etc/default/useradd文件,修改默认值。使用useradd -D 选项查看这些默认值。如下图所示:
如果用户不指定具体的值,使用useradd添加用户时就会使用这些默认值。默认值解释如下:
GROUP=100
新用户会添加到GID为100的公共组中
HOME=/home
新用户的HOME目录将位于/home/loginname下
INACTIVE=-1
新用户密码在过期后不会被禁用
EXPIRE=
新用户未设置过期日期
SHELL=/bin/bash
新用户将bash shell作为默认shell
SKEL=/etc/skel
系统会将/etc/skel目录下的内容复制到用户的HOME目录下
CREATE_MAIL_SPOOL=yes
系统为用户账户在mail目录下创建一个用于接收邮件的文件