Linux文件和目录权限

1 Linux根目录结构介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/		---操作系统的起始路径根路径
/bin ---普通用户和管理员都可以执行的命令字
/sbin ---只有管理员才能执行的命令关机重启
/boot ---引导主引导目录独立的分区启动菜单内核
/dev --- device设备设备文件存放目录
/etc ---配置文件存放目录
/home ---普通用户的家目录
/root --- 管理员的家目录
/media --- 光驱的挂载目录
/mnt ----临时设备挂载目录
/proc --- 里面的数据都在内存中,进程的所在目录
/tmp ---临时文件存放目录
/usr --- 软件的安装目录
/var --- 常变文件存放目录日志文件邮件文件

2 Linux目录详细内容解读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ls –l:列出当前目录可见文件详细信息
(文件类型和权限、链接数、所有者、所属组、文件大小、修改日期和时间、名称)

常见参数:
-a:显示所有文件,包括隐藏文件
- .开头的文件,是隐藏文件
-h:与-l一起使用,以可读大小显示文件大小。
-i:显示每个文件的inode号。inode是文件系统中的一个概念,用于唯一标识文件。
-S:按文件大小排序,大的在前面。默认情况下,ls命令按字母顺序排序。
-t:按时间排序,最新修改的在前面。默认情况下,ls命令按文件名排序。
-R:递归列出目录及子目录下的所有文件。该选项会深入子目录并显示其中的内容。
-d:显示目录本身,而不是其内容。

-rw-r--r--. 1 root root 203855 Aug 21 19:46 demo.tar.gz
1 2 3 4 5 6 7
1.文件权限
2.对于目录 --- 该目录的第一级子目录的个数 | 对于文件 --- 硬链接的个数
3.文件所有者 --- 文件属于谁
4.文件所属组 --- 文件属于哪个组
5.文件大小
6.时间
7.目录名/文件名

3 Linux文件与目录权限

3.1 文件权限解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
+ 文件权限的目标主要为三个类别 --- 文件拥有者、文件所属组、其他用户
- rw- r-- r-- .
1 2 3 4 5

1.文件类型
-普通文件 b块设备 l符号链接 d目录
c字符设备 s套接字 p FIFO
2.文件拥有者
3.文件所属组
4.其他用户
5.selinux安全标记 --- 保障文件的安全性

+ 文件
r -- 可读
w -- 可写
x -- 可执行 --- 可有可无
- -- 没有权限

+ 目录
r -- 可以查看目录内容
w -- 可以对目录进行编辑(创建、删除文件等等)
x -- 可以进入目录 --- 必须要有x
- -- 没有权限

3.2 文件权限修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
文字设定法:
chmod 对象 算术运算符 权限 文件
对象:
文件拥有者 --- u
文件所属组 --- g
其他用户 --- o
所有人 --- a
算数运算符:
+ --- 增加权限
- --- 减少权限
= --- 直接赋予
权限:rwx-

案例:
chmod o+wx 1
chmod o+x 1
chmod a-w 1
chmod u=rwx 1
chmod u-wx,g=-,o+w 1

数字设定法:
chmod 权限数字 文件名
r 4
w 2
x 1
- 0
- 累加

拥有者 --- x1xx
所属组 --- xx1x
其他用户 --- xxx1
- 从左往右第一个x --- 特殊权限位

chmod 561 www
chmod 0561 www
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
+ 默认情况创建的文件或者目录都存在默认权限  ---- 为了文件的安全性

默认权限 = 最高权限 - 权限掩码

默认权限
文件
普通用户 0664 管理员 0644
目录
普通用户 0775 管理员 0755

最高权限
文件 0666
目录 0777
- 如果目录欠缺x权限,则rw就无法使用

权限掩码
普通用户 --- 0002
root --- 0022

umask 查看权限掩码
umask 权限掩码 --- umask 0044 --- 临时修改

vim /etc/profile
source /etc/profile //重新加载
1
2
3
4
修改文件的所属用户
chown [用户] [文件]
修改文件的所属组
chgrp [组] [文件]

3.3 文件查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
find [目录] [选项]
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。 普通文件 f

- find / -iname "123"
- find . -type f

3.4 三种特殊权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+ 特殊权限位所在位置如果没有权限,则特殊权限位大写,如果有权限则为小写

粘滞位
文字设定法:o+t
数字设定法:1xxx
- 针对目标目录 --- 只有文件的所有者才能删除文件

sgid
文字设定法:g+s
数字设定法:2xxx
- 针对目标目录 --- 在该目录下创建文件或者目录会继承父目录的所属组和sgid权限

suid
文字设定法:u+s
数字设定法:4xxx
- 针对执行文件 --- 谁运行该文件,谁就具有该文件的拥有者权限

vim提权 ---- chmod u+s /bin/vim
find提权 ---- chmod u+s /bin/find --- find 存在的文件 -exec 要执行的命令 \; --- find /etc/passwd -exec cat /etc/shadow \;

3.5 文件属性修改

1
2
3
4
5
6
7
8
9
10
11
12
- 经常用于敏感文件的防范
lsattr 查看文件属性
chattr [+/-选项] [文件]
选项
a:让文件或目录仅供附加用途。(适用于各种日志文件)
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。(防止系统中某个关键文件被篡改)
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除。