一,linux 安全模型
1,Authentication:认证,验证用户身份
即用户名和密码
2,Authorization:授权,不同的用户设置不同权限
3,Accouting|Audition:审计
即日志,事后追责,在 /var/log 里 输入 vim message查看
二,对账户的管理
(一)用户账户类型
普通账户: 权限受到限制的用户
超级管理员 权限最大
程序用户 不是给人用的 给程序使用的
注意:程序用户不允许登录,将风险性降到最低
(二)系统如何区分这三类用户
根据uid 号 (用户身份证号)不是根据用户名
超级管理员默认是0 (root不一定是 uid是0才是超级管理员)id 用户名 可以查看该用户的uid号
cat /etc/passwd 可以查看所有用户
切换账户 su 账户名 (切换登录不是一码事)
uid范围
centos7:
普通用户 1000到60000
程序用户 1-999
超级管理员默认是0
centos6:
超级管理员默认是0
程序用户 1-499
普通用户 500开始
(三)重要文件夹
1, /etc/passwd 存放用户信息
分为7段,每段用冒号隔开
解释:
liwu 用户名
x 密码占位符
1003 uid
1003 gid
普通用户 备注信息
/home/liwu 家目录的位置
/bin/bash 默认的 shell 类型
注意:常用的shell 为
/sbin/nologin 不让用户登录
/bin/bash
2, /etc/shadow 存放密码,以及用户密码信息
分为9段,每段用冒号隔开
(四)管理用户的常用命令
1,useradd 新建用户,并对用户进行个性化配置
① useradd原理:
使用命令 useradd 最后实在passwd文件中添加一条记录,即useradd实际上是修改了passwd 文件。同理 passwdd实际上是修改了shadow文件
②格式
useradd 选项 用户名
③常用选项
-u 指定uid
-M 不生成家目录
-s 指定shell 类型
-e 指定用户的失效时间 可使用 YYYY-MM-DD 的日期格式
-d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)
-g:指定用户的基本组名(或使用 GID 号)
-G:指定用户的附加组名(或使用 GID 号)
④useradd 实际运用
例子1 创建uid号为1111 不生成家目录 用户名为liwu
可以看到 /etc/passwd 最新的一行是新创建的用户信息
uid号是1111 /home/ 下没有liwu的家目录
例子2 创建uid号为2222 不生成家目录 指定shell为 /sbin/nologin 用户名为ky35
为什么要-s 比如新建账户是程序账户,不让登录,所以也没必要生成家目录
例子3 指定家目录
例子4 指定用户失效时间
注意这个19718 指19718天 指从1970年1月1号至今的天数
⑤,一次性新建多个用户
2,passwd 修改密码
① 通式
passwd 选项 用户名
② 选项
-l 锁定用户(不让登录)
-u 解锁用户
-S 查看用户的状态
-d 清空密码(不需要密码直接登录 正常没有密码不能登录的)
③ 免交互修改密码
④ 产生随机密码
tr -d 删除
cat /dev/random 可以生成乱码 文件
删字母和数字
命令1:
命令2:
(命令1,命令2都行)
加c 取反
3 usermod 对已有的属性进行修改
- -l 更改用户账号的登录名称(Login Name)
- -L 锁定用户账户
- -u 修改用户的 UID 号
- -U 解锁锁用户账户
- -d:修改用户的宿主目录位置。
- -e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
- -g:修改用户的基本组名(或使用 GID 号)
- -G:修改用户的附加组名(或使用 GID 号)
- -s:指定用户的登录 Shell
注意:-l 的格式
usermod -l wangwun lisi 即 把lisi 改名wangwu
新名字在前
4, userdel删除
userdel -r 连家目录一起删
(五)用户账号的初始配置文件
1,文件来源
新建用户账号时,从 /etc/skel 目录中复制而来
2,主要的用户初始配置文件
~/.bash_profile
~/.bashrc 这两个文件的作用:开机时(登录前)先运行里面的命令
~/.bash_logout 这个 文件作用: 退出前先运行里面的命令
三,对组的管理
(一)组类型 (理解为职位)
基本组 主岗位,有且唯一
附加组 兼职。可有可无
怎么看组
第一个是 基本组 后面都是附加组
组id 是gid
(二)组常用命令
1,组账号文件
/etc/group:保存组帐号基本信息
2,添加组
groupadd 组名
3,指定组id
groupadd -g 88 zhou
4,gpasswd 命令——添加、设置、删除组成员
- -a:向组内添加一个用户
- -d:从组内删除一个用户成员
- -M:定义组成员列表,以逗号分隔(批量操作将成员移动到组 )
5,删除组账号
groupdel 组名
四,4个命令看能成功登录的用户
(一)finger
命令查询用户帐号的详细信息(finger [用户名])
(二)w
查询已登录到主机的用户信息
[root@localhost ~]# w [选项] [用户名]
-h 不显示输出信息的标题
-l 用长格式输出
-s 用短格式输出,不显示登陆时间,JCPU 和 PCPU 时间
-V 显示版本信息
(三)who
相比较 w 命令,who 命令只能显示当前登陆的用户信息,但无法知晓每个用户正在执行的命令。 who 命令的基本格式如下:
[root@localhost ~]# who [选项] [file]
选项 | 含义 |
-a | 列出所有信息,相当于所有选项。 |
-b | 列出系统最近启动的时间日期。 |
-l | 列出所有可登陆的终端信息。 |
-m | 仅列出关于当前终端的信息,who -m 命令等同于 who am i 。 |
-q | 列出在本地系统上的用户和用户数的清单。 |
-r | 显示当前系统的运行级别。 |
-s | 仅显示名称、线路和时间字段信息,这是 who 命令的默认选项。 |
-u | 显示当前每个用户的用户名、登陆终端、登陆时间、线路活动和进程标识。 |
-T 或 -w | 显示 tty 终端的状态,“+”表示对任何人可写,“-”表示仅对 root 用户或所有者可写,“?”表示遇到线路故障。 |
(四)users
五,文件/目录的权限
(一)权限分类
r w x
(二)权限针对文件和目录
针对文件夹
r 可以看里面有那些文件
w 可以修改文件夹下的文件
x 最小权限,没有x,有r 或者w也没用
针对文件
r 可以看文件内容
w 可以修改文件内容
x 可以运行文件
(三)权限详细解释
1,规则
首先这三个权限rwx 有就写,没有就写-
分成三部分,分别是属主 属组 其他
2,常见问答
问:一个文件可以被删除,和本身权限有关吗
答:和文件本身权限无关,所在文件夹必须要有wx权限,就可以删除
问:当前用户复制文件,只需要什么权限
答: 只需要读 r的权限
能不能操作文件和文件夹,和你当前用户权限是有关系的
3,权限表达方式
计算机用1表示是 0表示不是
r w x
1 0 0 4
0 1 0 2
0 0 1 1
分别转2进制,可以发现r是4 w是2 x是1
777 就是属主 属组 其他 权限拉满
(四)chmod 修改权限
两种表达方式:
1,模式法
chmod 对谁(所有者,所属组,其他)操作(+ - =)权限 文件
谁:u,g,o,a
u 属主
g 属组
o 其他人
a 所有人
操作:+,-,=
+ 是加上 在原有基础上 加上权限
- 在原有基础上 减去权限
= 原有权限不看 ,就是等于号后面的权限
权限:r,w,x(普通权限对root无效)
2,数字法
3,选项
-R 递归 文件夹下所有都改
4,例题
六,管理文件/目录的归属
(一)格式
chown 属主:属组 文件或文件夹
(二)不同变化
1,属主,属组都改
chown 属主:属组 文件或文件夹
2,只改属主
chown 属主 文件或文件夹
3,只改属组
chown :属组 文件或文件夹
(三)选项
-R 递归 文件夹下所有都改
七,umask
(一)umask 含义
umask表示创建文件时的默认权限(即创建文件时不需要设置而天生的权限)
(二)umask 使用方法
linux 默认文件夹最高权限777
文件最高权限666(自动将x权限去掉 防止文件有病毒)
umask 权限的反掩码 文件夹用777去减
文件 有1忽略(x已经剪过了
(三)umask 语法
umask 0xxx
比如0022
0022中第一位0代表特殊权限位,可以不设置
文件夹的权限是777-123就是654 就是rw- r-x r--
文件 有1忽略(x已经剪过了)666- 123 就是- 022 权限就是644 rw- r-- r--
(四)修改umask
umask + 数值修改当前用户的umask
不过这样设置的umask会在用户重新登录的时候恢复原来的值,我们可以把修改的umask保存在~/.bashrc
1. #vim ~/.bashrc 2. ① 在文件末尾添加umask 044 3. ② 保存退出 4. ③ 重新登录用户则保存成功
八,特殊权限
(一)设置位s (SetUid)
1,作用:
为了让一般使用者临时具有该文案所属主/组的执行权限
例如:/usr/bin/passwd在执行它的时候需要去修改/etc/passwd和/etc/shadow等文件,这些文件除了root外,其他用户都没有写权限,但是又为了能让普通用户修改自己的密码,该怎么办呢?
答:可以临时让他们具有root的权限,而这个s权限就是用来完成这个特殊任务的。s权限只能应用在二进制的可执行文件上
2,属主语法
1. [root@localhost aa]#ll /usr/bin/passwd 2. #此处s表示当使用这个命令程序时,把当前用户当成文件的所属主 3. -rwsr-xr-x. 1 root root 27832 6月 10 2014
1. [root@localhost aa]#chmod u+s /usr/bin/vim 2. #给vim加上suid权限,代表所有用户可以使用vim打开并编辑所有文件
去除s权限,基本语法: chmod u-s /user/bin/pass
3,属组语法
chmod g+s /usr/bin/vim
4,例题
passwd 这个命令多了个s 的权限
s suid属主权限 可以打开任何文件,无视用户是谁
原理:使用命令的时候,把当前用户当做文件的主人
(二)沾滞位T(sticky bit)
1,命令
chmod
2,语法:
chmod [选项] 文件夹
3作用:
只允许文件的创建者和root用户删除文件
4,常用选项:
o+t 添加沾滞位
o-t 去掉沾滞位
举例:
公司多个部门公用一个文件夹work,为了让所有人都能访问,work文件夹赋予了777权限,用户root新建了一个文件root.txt,发现被别人删除了。我们希望root建立的文件,只有root自己可以删。
mkdir /work
touch root1.txt
chmod -R 777 /work
chmod o+t /work
发现添加粘滞位后,无法删除root1.txt文件
5,例题
多了个t(只对文件夹有用) t表示粘贴位 除了超级管理员和自己可以删,其他人不能删
(三)访问控制列表ACL
对具体的用户进行控制
1,基本命令
getfacl 命令:查看文件的ACL策略及权限
setfacl命令: 给文件针对某个用户或者某个组来增加(设置)ACL策略
-m: 修改acl策略
-x : 去掉某个用户或者某个组的权限
-b :删除所有的acl策略
-R :递归,通常用在文件夹
mask:mask定义除other和所有人(拥有者)外的最大权限