Linux文件属性及权限知识
- [1. 特殊文件属性命令: chattr,lsattr(这个是产看文件属性的命令)](#1. 特殊文件属性命令: chattr,lsattr(这个是产看文件属性的命令))
- [2. Linux 基本权限介绍](#2. Linux 基本权限介绍)
- [3. Linux 特殊权限](#3. Linux 特殊权限)
- [4. 普通用户提权到root权限](#4. 普通用户提权到root权限)
- [5. 如何方式普通用户和web用户提权](#5. 如何方式普通用户和web用户提权)
1. 特殊文件属性命令: chattr,lsattr(这个是产看文件属性的命令)
-
作用: 给文件或目录加锁不让改不让删除
-
语法:
chattr 选项 文件
-
选项属性
-i
个文件加锁不能删改-a
可以追加内容
-
选项动作
-
减少+
增加
-
练习: 给文件加锁-查看属性-更改文件-解锁-查看属性
bash[root@localhost ~] touch oldboy.txt [root@localhost ~] ls anaconda-ks.cfg day02_world_oldboy.sql oldboy oldboy.txt [root@localhost ~] chattr +i oldboy.txt [root@localhost ~] lsattr oldboy.txt ----i----------- oldboy.txt [root@localhost ~] rm -f oldboy.txt rm: cannot remove 'oldboy.txt': Operation not permitted [root@localhost ~] chattr -i oldboy.txt [root@localhost ~] lsattr oldboy.txt ---------------- oldboy.txt [root@localhost ~] rm -f oldboy.txt [root@localhost ~] ls anaconda-ks.cfg day02_world_oldboy.sql oldboy
-
生产应用: 想要快捷的对上锁的文件进行改动可以考虑使用脚本
bash[root@oldboyedu ~]vim /bin/test ##增加如下内容 chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/sudoers $* chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/sudoers
2. Linux 基本权限介绍
-
查看文件属性:
ls -l
-
9为权限分组:前三位用户权限,中间三位组权限,最后三位其它权限
-
权限表示方法:字符权限和数字权限
-
权限对应的字符、数字和位置
字符 作用 对应的数字权限 位置 r 可读 4 第一位 w 可写 2 第二位 x 可执行 1 第三位 - 无 0 任意位 -
如何更改权限
- 利用数字权限更改
- 语法:
chmod 换算后的数字组 文件路径
(-R递归修改) - 计算换算后的数字:将9位权限每隔三位看成一组, 每组数字按照上边的表格换成数字相加, 最后得到一个三位数
- 换算例子
- drwxrwxr-- 774
- -rw-r--r-x 645
- drwx--xr-x 715
- dr-xrwx--x 571
- d--xr-xrwx 157
- 语法:
- 利用字符更改
- 动作说明:
-
减少,+
增加 - 9位权限分组的表示符: 前三位
u
中三位g
后三位o
所有位a
- 语法:
chmod 位符号+动作符号+权限符号 操作文件
- 例子:
chmod u+rwx oldboy.txt
- 动作说明:
- 利用数字权限更改
3. Linux 特殊权限
- suid
- 权限内容: suid是针对命令来讲, 当设置之后任意用户都会有对该文件执行文件所有者的操作
- 设置方法:
chmod u+s 目录/文件
- 设置suid之后
ls -l
之后的状态:-rwsr-xr-x
或-rwSr--r--
(大S表示所有者也没有执行权限) - 常见的例子:
passwd
命令就被设置了suid,ping
命令也设置了suid
- sgid: 字符是s,在中三位
- 粘滞位: 字符是t,在后三位
4. 普通用户提权到root权限
- 方法一: test用户通过设置了suid的vim命令提权到root实践
- 必须root用户下操作
chmod u+s /bin/vim
- 必须test用户下操作
vim /etc/sudoers
增加如下内容test ALL=(ALL) NOPASSWD:ALL
- 切到root
sudo su -
- 必须root用户下操作
- 方法二
- 必须root用户下操作
chmod u+s /bin/vim
vim /etc/passwd
将test用户的行的UID改为0- 重新登录test就是root
- 必须root用户下操作
- 方法三: 将test用户修改为属于wheel组
-
确定test的组id为20008
bash[test@oldboyedu ~]$ grep -w test /etc/passwd test:x:20008:20008::/home/test:/bin/bash
-
确定wheel组id为10
bash[test@oldboyedu ~]$ grep wheel /etc/group wheel:x:10:
-
修改组id为10
bash[test@oldboyedu ~]$ vim /etc/passwd test:x:20008:10::/home/test:/bin/bash
-
登录sudo
sudo su - ###需要test密码
-
5. 如何方式普通用户和web用户提权
- 禁止给命令设置suid
- 管理员不要去使用suid功能, 同时把无用的suid功能取消
- 应用软件PHP(/etc/php.ini配置)禁止开启读取系统文件等的函数
- 磁盘的挂载禁止suid
- 给关键文件加锁:
/etc/passwd
/etc/group
/etc/shadow
/etc/gshadow
/etc/sudoers
chmod 440 /etc/sudoers
- 看好/etc目录权限,防止文件被替换
- 文件权限统一
644
目录权限统一755
, 文件和目录对应的用户和组尽量都是root(不要设置成777) - web应用禁止上传特殊文件到系统目录
- 判断扩展名
- 上传后进行动静分离
- ssh监听内网, 禁止root远程连接, 通过vpn拨号跳板机连接
- 防火墙把ssh访问权限限制到内网或者办公网IP段