一、Linux安全 3A认证
-
A认证(Authentication):验证用户的身份与可使用的[网络服务];
-
A授权(Authorization):依据认证结果开放网络服务给用户;
-
A计帐(Accounting):记录用户对各种网络服务的用量,并提供给计费系统。整个系统在网络管理与安全问题中十分有效。
二、用户的种类
Linux中每个用户是通过 User Id (UID)来唯一标识的 新建用户 1-60000 自动分配 0-65535 端口号
1.超级管理员:拥有最高权限的账户(默认root),可以正常使用。(root, 0)
2.普通用户:权限受限的用户,可以正常使用。(500+ CentOS6以前, 1000+ CentOS7以后 不指定 顺序)
3.程序用户:不可以正常登录,只给程序使用,人不可以使用。(1-499 CentOS 6以前, 1-999 CentOS 7以后)
查看用户的基本信息
格式:id 用户名
上面看到了四个内容uid,gid,用户所在组,附加组(有则显示,无则不显示)
三、组账号
基于某种特定联系将多个用户集合在一起,构成一个用户组,用于表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组。若该用户同时还包括在其他的组中,这个组称为该用户的附加组。
1、基本组(私有组)
- 建立账户时,若没有指定账户所属的组,系统会建立一个和用户名相同的组,这个组就是私有组,这个组默认只容纳了一个用户。
- 在用户所属组中的第一个组称为基本组,基本组在 /etc/passwd 文件中指定
基本组:有且唯一
附加组:可有可无,可以有多个
默认新建用户时自动添加同名的组
2、附加组(公共组)
附加组:除了第一个组外的其他组为附加组或公共组,附加组在 /etc/group 文件中指定
四、ID
1、UID
系统用来识别用户的唯一身份标识
UID(User IDentity,用户标识号):Linux 操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID(UserIDentity,用户标识号),对于操作系统核心来说,UID 是区分用户的基本依据,原则上每个用户的 UID 号应该是唯一的。root 用户账号的 UID 号为固定值 0,而程序用户账号的 UID号默认为1~499,500~60000 的 UID 号默认分配给普通用户使用。
centos7登录用户是从1000起到60000
centos6 500~60000
1-999 预留给系统,叫系统用户,某个程序比如数据库
给人使用的账户是从1000开始
UID范围定义文件
[root@localhost ~]#vim /etc/login.defs #uid 的范围定义在此文件中
2、GID
系统用来识别组的唯一身份标识
GID(Group IDentify,组标识号):与 UID 类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root 组账号的 GID 号为固定值 0,而程序组账号的 GID 号默认为 1~499,500~60000 的 GID 号默认分配给普通组使用。
五、用户账号文件位置及详细解释
与用户账号相关的配置文件主要有两个,分别是/etc/passwd、/etc/shadow。前者用于保存用户名称、宿主目录、登录shell等基本信息,后者用于保存用户的密码、账号有效期等信息。两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用冒号“:”进行分隔。
1、passwd文件中的配置行格式
系统中所有用户的账号基本信息都保存在/etc/passwd文件中,该文件是文本文件,任何用户都可以读取文件中内容。
在passwd 文件开头的部分,包括超级用户root及各程序用户的账号信息,系统中新增加的用户账号信息将保存到passwd文件的末尾。passwd文件的每一行美容中,包含了七个用冒号“:”分隔的配置字段。
- 第1字段:用户账号的名称。也是登录系统时使用的识别名称。
- 第2字段:经过加密的用户密码字串,或者密码占位符“x”。
- 第3字段:用户账号的UID号。
- 第4字段:所属基本组账号的GID号。
- 第5字段:用户全名。
- 第6字段:宿主目录,即该用户登录后所在的默认工作目录。
- 第7字段:登录shell等信息。
2、shadow 文件中的配置行格式
shadow文件被称为“影子文件”,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制。默认只有root用户能够读取文件中的内容,而不允许直接编辑该文件中的内容。
shadow文件的每一行内容中,包含了九个用冒号“:”分隔的配置字段。
- 第1字段:用户账号名称。
- 第2字段:使用MD5加密的密码字串信息,当为“*”或“!!”时表示此用户不能登录到系统。若该字段内容为空,则该用户无需密码即可登录系统。
- 第3字段:上次修改密码的时间。
- 第4字段:密码的最短有效天数。默认为0,表示不进行限制。
- 第5字段:密码的最长有效天数。默认为99999,表示不进行限制。
- 第6字段:提前多少天警告用户口令将过期,默认为7。
- 第7字段:在密码过期之后多少天内禁用此用户。
- 第8字段:账号失效时间,默认为空号,表示账号永久可用。
- 第9字段:保留字段,目前没有特定用途。
六、添加、删除、修改用户账号命令汇总
1.useradd命令 添加用户账号
格式:useradd (选项) 用户名
| useradd 指令 | 指令作用 |
|---|---|
| -u | 指定用户的UID号,要求该UID号未被其他用户使用 |
| -d | 指定用户的宿主目录位置 |
| -e | 指定用户的账号失效时间 |
| -g | 指定用户的基本组名(或使用GID号) |
| -G | 指定用户的附加组名(或使用GID号) |
| -M | 不建立宿主目录,即使/etc/login.defs系统配置中已设定建立宿主目录 |
| -s | 指定用户的登录shell |
2.passwd命令 修改用户账号属性
| passwd指令 | 指令含义 |
|---|---|
| -d | 清空指定用户的密码,仅仅使用用户名即可登录系统 |
| -l | 锁定用户账号 |
| -S | 查看用户账号的状态 |
| -u | 解锁用户账号 |
3.usermod命令 修改用户账号属性
| usermod指令 | 指令含义 |
|---|---|
| -u | 修改用户的UID号 |
| -d | 修改用户的宿主目录位置 |
| -e | 修改用户的账户失效时间 |
| -g | 修改用户的基本组名(或使用GID号) |
| -G | 指定用户的附加组名(或使用GID号) |
| -s | 指定用户的登录shell |
| -l | 更改用户账户的登录名称 |
| -L | 锁定用户账户 |
| -U | 解锁用户账户 |
4.userdel命令 删除用户账户
-r 同时删除宿主目录
七、组管理
1.groupadd命令 添加组账号
-g 指定GID
2.gpasswd命令 添加,设置,删除组成员
格式:gpasswd 选项 组成员 -a 添加用户
-d 删除用户
-M:定义组成员列表,以逗号分隔
3.groupdel 删除组账号
4.groups命令 查询用户账号所属组
5.id 查询用户账号的身份识别
6.finger 查询用户账户的登录属性
7.w命令 查询当前主机的用户登录情况
-h 不显示输出信息的标题
-l 用长格式输出
-s 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
-V 显示版本信息
| 标题 | 含义 |
|---|---|
| USER | 登录到系统的用户。 |
| TTY | 登录终端。 |
| FROM | 表示用户从哪里登陆进来,一般显示远程登陆主机的 IP 地址或者主机名。 |
| LOGIN@ | 用户登陆的日期和时间。 |
| IDLE | 表示某个程序上次从终端开始执行到现在所持续的时间。 |
| JCPU | 和该终端连接的所有进程占用的 CPU 运算时间。这个时间里并不包括过去的后台作业时间,但是包括当前正在运行的后台作业所占用的时间。 |
| PCPU | 当前进程所占用的 CPU 运算时间。 |
| WHAT | 当前用户正在执行的进程名称和选项,换句话说,就是表示用户当前执行的是什么命令。 |
8.who命令 查询当前登陆的用户信息
| 选项 | 含义 |
|---|---|
| -a | 列出所有信息,相当于所有选项。 |
| -b | 列出系统最近启动的时间日期。 |
| -l | 列出所有可登陆的终端信息。 |
| -m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i。 |
| -q | 列出在本地系统上的用户和用户数的清单。 |
| -r | 显示当前系统的运行级别。 |
| -s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
| -u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
| -T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
finger/w/who三个查询指令的差别。
finger是查询指定用户的详细信息,不管对方是否登录,但也不能同时查询多个用户。 w与who指令是查询当前已登录到主机的所有用户信息,但who指令不能查看who指令正在执行什么命令。
七、文件/目录的权限和归属
程序访问文件时的权限,取决于此程序的发起者
- 进程的发起者,同文件的属主:则应用文件属主权限
- 进程的发起者,属于文件属组;则应用文件属组权限
- 应用文件“其它”权限
访问人群分为了三类
- 所属主(u)
- 所属组(g)
- 其他人 (o)
权限分为三种
- 读(r,4)
- 写(w,2)
- 执行(x,1程序,脚本)
对文件的权限
- r 可使用文件查看类工具,比如:cat,可以获取其内容
- w 可修改其内容
- x 可以把此文件提请内核启动为一个进程,即可以执行(运行)此文件(此文件的内容必须是可执行)
对目录的权限
- r 可以使用ls查看此目录中文件列表
- w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
- x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最小权限
1、chomd命令
chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令。
chmod根据mode更改每个给定文件的文件模式位,mode可以是要进行更改的符号表示,也可以是表示新模式位的位模式的八进制数。
符号模式的格式为[ugoa…][±=][perms…][…],其中perms为集合rwxXst中的零个或多个字母,或集合ugo中的单个字母。可以给出多个符号模式,用逗号分隔。字母ugoa的组合控制哪些用户对文件的访问将被更改:
拥有该文件的用户(u)、文件组中的其他用户(g)、不在文件组中的其他用户(o)或所有用户(A)。如果这些都没有给出,效果就好像给出了a,但umask中设置的位不受影响。chmod从不更改符号链接的权限;chmod系统调用无法更改其权限。
| 权限符号 | 名字 | 说明 |
|---|---|---|
| r | 读 | 设置为可读权限 |
| w | 写 | 设置为可写权限 |
| x | 执行权限 | 设置为可执行权限 |
| X | 特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
| s | setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
| t | 粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
格式:
chmod 权限 文件
chmod 参数 权限 文件
选项说明:
| 参数 | 参数说明 |
|---|---|
| -c | 若该文件权限确实已经更改,才显示其更改动作 |
| -f | 若该文件权限无法被更改也不要显示错误讯息 |
| -v | 显示权限变更的详细资料 |
| -R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) |
| –help | 显示辅助说明 |
| --version | 显示版本 |
操作符说明
| Operator | 说明 |
|---|---|
| + | 为指定的用户类型增加权限 |
| - | 去除指定用户类型的权限 |
| = | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
用户符号
| who | 用户类型 | 说明 |
|---|---|---|
| u | user | 文件所有者 |
| g | group | 文件所有者所在组 |
| o | others | 所有其他用户 |
| a | all | 所用用户, 相当于 ugo |
2、chown命令
Linux chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令,chown 需要超级用户 root 的权限才能执行此命令。
chown更改每个给定文件的用户和/或组所有权。如果只提供了所有者(用户名或数字用户ID),则该用户将成为每个给定文件的所有者,并且不会更改文件组。如果所有者后跟冒号和组名(或数字组ID),且两者之间没有空格,则文件的组所有权也会更改。如果用户名后面有冒号,但没有组名,则该用户将成为文件的所有者,并且文件组将更改为该用户的登录组。如果给出了冒号和组,但省略了所有者,则只更改文件组;在这种情况下,chown执行与chgrp相同的功能。如果只给出一个冒号,或者如果整个操作数为空,则所有者或组已更改。
格式: chown [参数] user[:group] 文件
3、umask指令
umask 的值可以用来保留在创建文件权限
实现方式:
新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
新建目录的默认权限: 777-umask
非特权用户umask默认是 002
root的umask 默认是 022
八、总结
-
1)在给文件或目录设置特殊权限时,其文件对应位上必须拥有可执行权限,否则设置特殊权限无效。如果对应位上没有可执行权限,设置了特殊权限会在对应位上显示大写的字母,表示其特殊权限无效。
-
2)SUID只能作用于可执行的二进制文件,对目录无效。SGID可作用于可执行二进制文件和目录。Sticky只能作用于目录,对文件无效。
-
3)都是用chmod 进行授权。对于SUID和SGID都是+/-s,对于Sticky是+/-t;其中SUDI对应user位,SGID对应group位,Sticky对应other位。数字表示法,4表示SUID,2表示SGID,1表示Sticky。