引言
在linux 系统中,最常见的一个就是文件权限了,什么777,755,等等,如果没有权限,就无法操作相关的文件,那么,linux系统中的权限控制是怎么样的呢?为什么有时候设置了777,还是出现没有权限的情况呢?
自主访问控制(DAC: Discretionary Access Control)
linux 777权限
在讲DAC之前,先讲一讲关于linux中文件的权限情况,通过ls -l命令可以查看到文件的详细情况,以及权限:
tioncico@tioncico-PC:~$ ls -l 总用量 1344 drwxr-xr-x 3 tioncico tioncico 4096 1月 6 10:06 CLionProjects drwxr-xr-x 3 tioncico tioncico 4096 1月 3 23:22 databases-incognito drwxr-xr-x 5 tioncico tioncico 4096 6月 11 20:55 Desktop drwxr-xr-x 4 tioncico tioncico 4096 5月 25 01:58 Documents drwxr-xr-x 4 tioncico tioncico 4096 5月 18 23:28 Downloads drwxr-xr-x 3 tioncico tioncico 4096 2月 4 10:11 Music drwx------ 6 mysql mysql 4096 6月 14 18:42 mysql drwxr-xr-x 9 tioncico tioncico 4096 6月 11 19:55 PhpstormProjects drwxr-xr-x 2 tioncico tioncico 4096 12月 23 17:32 Pictures drwxr-xr-x 6 tioncico tioncico 4096 3月 19 00:25 redis-3.2.13 drwxr-xr-x 13 tioncico tioncico 4096 6月 15 11:21 swoole-src-4.3.5 -rw-r--r-- 1 tioncico tioncico 1312699 6月 15 11:11 v4.3.5.tar.gz drwxr-xr-x 2 tioncico tioncico 4096 12月 23 17:42 Videos drwxr-xr-x 9 tioncico tioncico 4096 6月 15 17:20 work drwxr-xr-x 2 tioncico tioncico 4096 12月 23 17:32 模板
在第一列中,d代表该文件是一个目录,其他9个字符,分别代表了,如果字符为-则代表没有权限:
1:所属用户是否拥有读权限,所属用户是否拥有写权限,所属用户是否拥有执行权限
2:所属用户组是否拥有读权限,所属用户组是否拥有写权限,所属用户组是否拥有执行权限
3:其他用户是否拥有读权限,其他用户是否拥有写权限,其他用户是否拥有执行权限
只要拥有权限,就代表着能够操作该文件
例如:
当前用户想进入mysql用户,由于tioncico用户没有权限,则进入失败:
tioncico@tioncico-PC:~$ w 22:01:58 up 1 day, 3:19, 1 user, load average: 0.53, 0.70, 0.77 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT tioncico tty1 :0 五18 27:19m 19:19 19.27s /usr/bin/startdde tioncico@tioncico-PC:~$ cd mysql/ bash: cd: mysql/: 权限不够
但是,超级管理员,拥有者所有权限,可以直接进入:
理论上,超级管理员拥有者最高权限,不管该文件权限如何,超级管理员都是可以操作的
root@tioncico-PC:/home/tioncico# cd mysql/ root@tioncico-PC:/home/tioncico/mysql# cd ../ root@tioncico-PC:/home/tioncico# chmod -R 000 mysql/ root@tioncico-PC:/home/tioncico# cd mysql/ root@tioncico-PC:/home/tioncico/mysql# cd ../ root@tioncico-PC:/home/tioncico# chmod -R 700 mysql/
DAC
DAC 权限控制系统针对的是某个用户
系统将识别用户,根据该文件存储的权限情况(777),来决定该用户能不能操作这个文件,linux在大多数情况,都是使用的DAC权限控制
DAC权限控制的缺点有:
1:超级管理员拥有者最高权限,不管有没有权限,超级管理员都可以访问
2:该权限控制系统针对的是用户,无法将一组文件设置一个统一的权限开放给一组用户,DAC 只有文件拥有者,文件所属组,以及其他用户这3种区分
强制访问控制(MAC: Mandatory Access Control)
MAC是为了弥补DAC权限控制过于分散的问题而诞生的。在MAC的设计中,每一个对象都都有一些权限标识,每个用户同样也会有一些权限标识,而用户能否对该对象进行操作取决于双方的权限标识的关系,这个限制判断通常是由系统硬性限制的。比如在影视作品中我们经常能看到特工在查询机密文件时,屏幕提示需要“无法访问,需要一级安全许可”,这个例子中,文件上就有“一级安全许可”的权限标识,而用户并不具有。