Linux文件系统权限
一、属主、属组
在Linux文件系统中,用户如果要对文件进行操作,首先要对文件的权限进行检查,先判断用户是否是此文件的属主如果是则执行属主权限,如果不是那就查看该用户是否是该文件属组内的用户,如果是则执行属组权限,如果不是执行other权限。
二、文件和目录的读写执行
1. 文件的读、写、执行
文件能否读写取决于用户对文件是否有读写执行权限。
用户有对文件读权限则可以访问此文件,查看文件内的内容,但无法对内容进行修改
示例:
[root@
CentOS7 data]# echo hello world > a
[root@centos7 data]# cat a
hello world
[root@centos7 data]# chmod 004 a
[root@centos7 data]# ll
total 4
-------r-- 1 root root 12 Mar 14 23:20 a
[root@centos7 data]# su masuri
[masuri@centos7 data]$ ll
total 4
-------r-- 1 root root 12 Mar 14 23:20 a
[masuri@centos7 data]$ cat a
hello world
[masuri@centos7 data]$ echo hello word >a
bash: a: Permission denied
用户有对文件写权限则可以对此文件的内容进行修改,如果用户只有写权限,则无法查看内部容,但可以修改其内部的内容。
示例:
[root@centos7 data]# chmod 002 a
[root@centos7 data]# cat a
hello world
[root@centos7 data]# ls a
a
[root@centos7 data]# ll a
--------w- 1 root root 12 Mar 14 23:20 a
[root@centos7 data]# su masuri
[masuri@centos7 data]$ cat a
cat: a: Permission denied
[masuri@centos7 data]$ echo abc >> a
[masuri@centos7 data]$ exit
exit
[root@centos7 data]# cat a
hello world
abc
注意:用户有对文件的执行权限则可以将文件进行执行,此类操作非常危险。一般文件不建议有执行权限。
2.目录的读写执行
目录的读权限:
目录有读权限则表示用户可以查看目录,可以复制目录,但无法对目录内的文件进行操作,若要对目录内的文件进行操作则必须要有执行权限
示例1:只有读权限没有执行权限时
[root@centos7 data]# mkdir -m 004 test
[root@centos7 data]# echo hello world > test/a
[root@centos7 data]# su masuri
[masuri@centos7 data]$ ls test
ls: cannot access test/a: Permission denied
没有执行权限无法查看文件
a
[masuri@centos7 data]$ cp -R test test2
cp: cannot stat ‘test/a’: Permission denied
没有执行权限无法复制目录下的内容只能复制目录本身
[masuri@centos7 data]$ ll
total 0
d------r-- 2 root root 15 Mar 14 23:37 test
d------r-- 2 masuri masuri 6 Mar 14 23:49 test2
[masuri@centos7 data]$ rm test/a
rm: cannot remove ‘test/a’: Permission denied
没有写和执行无法删除文件
示例2:有读和执行权限
[root@centos7 data]# chmod 005 test
[root@centos7 data]# ll test -d
d------r-x 2 root root 15 Mar 14 23:37 test
[root@centos7 data]# su masuri
[masuri@centos7 data]$ cp -R test test3
可复制
[masuri@centos7 data]$ ls
test test2 test3
[masuri@centos7 data]$ ls test
a
[masuri@centos7 data]$ cat test/a
hello world
[masuri@centos7 data]$ rm test/a
rm: remove write-protected regular file ‘test/a’? y
rm: cannot remove ‘test/a’: Permission denied
无法删除
目录的写权限:
当目录只有写权限时,无法对目录下的文件执行任何操作。若要能实现对目录下的文件进行操作,必须要有执行权限
示例:
1.只有写权限
[root@centos7 data]# mkdir -m 002 test
[root@centos7 data]# echo helloworld > test/a
[root@centos7 data]# ll
total 0
d-------w- 2 root root 15 Mar 15 00:10 test
[root@centos7 data]# su masuri
[masuri@centos7 data]$ echo hello > test/a
bash: test/a: Permission denied
[masuri@centos7 data]$ ls test
ls: cannot open directory test: Permission denied
[masuri@centos7 data]$ ls test/a
ls: cannot access test/a: Permission denied
2.有写和执行时
[root@centos7 data]# chmod 003 test
[root@centos7 data]# ll -d test
d-------wx 2 root root 15 Mar 15 00:10 test
[root@centos7 data]# ls test
a
[root@centos7 data]# su masuri
[masuri@centos7 data]$ ls test
ls: cannot open directory test: Permission denied
没有读权限无法查看
[masuri@centos7 data]$ echo hello > test/b
好像可以写入?
[masuri@centos7 data]$ rm test/a
要想也可以删除?
rm: remove write-protected regular file ‘test/a’? y
[masuri@centos7 data]$ exit
转回root看结果。
exit
[root@centos7 data]# ls
test
[root@centos7 data]# ls test\
原来的按文件被删除
b
[root@centos7 data]# cat b
cat: b: No such file or directory
[root@centos7 data]# cat test/b
b文件内为刚才写入的数据
hello
总结:目录的执行权限非常重要,没有执行权,即使有目录的读写权限也无法对目录下的文件进行操作。
3.chmod中大写X的意义
当对目录递归施加大X时,其下的所有目录自动添加执行权限,但文件不会添加
但若文件原本有执行权限时,则会为其添加执行权限
示例:
[root@centos7 data]# mkdir testdir
[root@centos7 data]# cd testdir
[root@centos7 testdir]# touch a b
创建a b两个文件
[root@centos7 testdir]# chmod 100 a
修改权限a为可执行
[root@centos7 testdir]# chmod 000 b
修改权限b为什么都没有
[root@centos7 testdir]# mkdir -m 000 dir
创建一个dir目录并设置权限为000
[root@centos7 testdir]# ll
total 0
---x------ 1 root root 0 Mar 15 00:48 a
---------- 1 root root 0 Mar 15 00:48 b
d--------- 2 root root 6 Mar 15 00:48 dir
[root@centos7 testdir]# cd ..
[root@centos7 data]# chmod -R a+X testdir
对testdir目录递归设置大X权限
[root@centos7 data]# cd testdir/
[root@centos7 testdir]# ll
total 0
---x--x--x 1 root root 0 Mar 15 00:48 a
对比上面当文件有执行权限时全部都加了执行权限
---------- 1 root root 0 Mar 15 00:48 b
当文件没有执行权限时则不添加
d--x--x--x 2 root root 6 Mar 15 00:48 dir
三、特殊权限位
SUID: