码迷,mamicode.com
首页 > 其他好文 > 详细

[权限管理]——一般权限、特殊权限、隐藏权限

时间:2016-07-12 10:28:47      阅读:721      评论:0      收藏:0      [点我收藏+]

标签:

Linux下的文件/目录有三类权限:一般权限、特殊权限、隐藏权限

关于权限与归属的认识(三张图)

技术分享

技术分享

 技术分享

 

访问权限/一般权限:r w x

1.对目录而言rwx的意义是?

r:意味着具有读取目录结构列表的权限。即能够使用ls命令

$ ll
dr--------. 2  lyj01  lyj01 4096 7月   7 09:59 test1
$ cd test1/     ------>#只有r权限是没有办法cd进入目录的
bash: cd: test1/: 权限不够
$ ls test1/
ls: 无法访问test1/2.txt: 权限不够
ls: 无法访问test1/1.txt: 权限不够
1.txt  2.txt   ------>#有r权限我们可以看到目录下的内容

 

w:意味这具有更改目录结构列表的权限。即可以:

       新建(touch/vim)文件与目录;

       删除(rm)文件与目录(且不论该文件与目录权限是什么)
       重命名(mv)文件与目录;
       移动(cp)文件与目录;

$ ll
drwx------. 2 lyj01 lyj01 4096 7月   7 10:03 test1
$ cd test1/      
$ ls
1.txt  2.txt
$ rm 1.txt          ------>#可以删除
$ touch 3.txt       ------>#可以新建
$ mv 3.txt 1.txt     ------>#可以重命名
$ cp 1.txt /test/    ------>#可以移动
$ cd test1
$ ll
dr--------. 2 lyj01 lyj01 4096 7月   7 10:24 test2    
-r--------. 1 lyj01 lyj01    0 7月   7 10:24 test3   
------>#虽然这个目录中的文件(test3)和目录(test2)只有r权限 $
rm test2 -r rm:是否删除有写保护的目录 "test2"?y   $ rm test3 -r rm:是否删除有写保护的普通空文件 "test3"?y              
------>#但是无论test1目录下的"文件/目录权限如何",因为父目录test1有w权限,其下的文件/目录就可以执行相应操作
------>#我们得知道这意味着什么?
$ pwd
/home/lyj01
$ ll -d /home/lyj01
drwx------. 3 lyj01 lyj01 1024 7月   7 09:54 /home/lyj01
------>#对一个用户的家目录来说,这个家目录的属主属组都是属于这个用户的,且属主权限为755
$ touch 1.txt
$ sudo chown root:root 1.txt 
$ sudo chmod 700 1.txt   ------>#我们尝试着在这个家目录下创建一个属主属组为root且权限为700的文件
$ ll
-rwx------. 1 root root 0 7月   7 10:33 1.txt ------>#照这个权限设置来说,用户lyj01属于others,并没有对这个文件的任何权限
$ rm 1.txt -f   ------>但是我们可以删除它,为什么?想想这个家目录的权限是怎样?
------>#所以说用户在它用户家目录里面具有如同"root"般的地位
------>#另外必须强调的一点是,如果目录没有x权限来让你具有切换到该目录下的权限,那么w权限是没有意义的
$ ll
drw-------. 2 lyj01 lyj01 4096 7月   7 10:10 test1
$ cd test1/
bash: cd: test1/: 权限不够
$ touch test1/3.txt
touch: 无法创建"test1/3.txt": 权限不够

 

x:意味着具有能够进入该目录成为工作目录的权限。即可以使用cd命令

$ ll
dr-x------. 2 lyj01 lyj01 4096 7月   7 10:03 test1
$ cd test1/ ; ls      ------>#能够cd进入目录
1.txt  2.txt
$ rm 1.txt
rm: 无法删除"1.txt": 权限不够  ------>#但是因为没有w权限,所以进入目录以后也不能做什么
$ touch 3.txt
touch: 无法创建"3.txt": 权限不够

 

2.对文件而言rwx的意义是?
r:意味着具有读取该文件内容的权限

$ ll
-r--------. 1 lyj01 lyj01   13 7月   7 10:39 1.txt
$ cat 1.txt
hello world!

w:意味着具有编辑、新增、修改文件的权限

x:如果是脚本文件意味这可以被系统执行

注意:对于文件而言,其r、m、x权限都针对的是该“文件的内容”而言的,而对于“文件名”本身的操作(例如删除、重命名等)权限是没有意义的。这个结合上面权限对于目录而言的意义就很好理解了

 

特殊权限:SUID、SGID、SBTI

1.SUID/SGID

#看一下这三个文件的权限
# ls -l /usr/bin/passwd /etc/shadow /etc/passwd -rw-r--r-- 1 root root 1470 Jun 22 19:33 /etc/passwd ---------- 1 root root 902 Jun 22 19:33 /etc/shadow -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd

我们知道,/etc/passwd和/etc/shadow存放着用户的账户和密码信息。从它们俩的权限上看,普通用户(others)并不具有对它们修改的权限。

但实际上,普通用户登录的状态下,它是可以通过/usr/bin/passwd这个命令来修改自己的密码的。这是为什么呢?

我们可以看到/usr/bin/passwd文件的root权限设置为rws,即具有SUID权限。普通用户就可以通过执行passwd命令,临时的拥有root权限,去修改/etc/passwd文件了

所以总结来说:

       若普通用户对于该文件有执行权限(x)的前提下;

       SUID就是:让普通用户拥有可以执行“只有root权限才能执行”的特殊权限,SGID同理指”组“;

       SUID仅能用在二进制程序(binary program)上,对目录无效。

查询整个系统的SUID/SGID文件?

# find /  -perm  +6000

 

2.SBTI(Sticky Bit)粘滞位权限

# mkdir /test
# chmod 1777 /test/   ------>#使该目录对所有用户可读写,并增加SBTI权限
# ll -d /test/
drwxrwxrwt 2 root root 4096 Jul 11 23:49 /test/

假设该/test目录是对所有用户开放共有的目录,且所有用户都拥有读写权限,

若A用户在/test中创建了一个文件,B用户哪天不爽它还有权限去删掉这个文件,这肯定是不好的。

但是设置了sticky bit权限以后是不会出现这样的问题的

# su lyj             ------>#切换普通用户lyj
$ touch lyj1.txt     ------>#创建一个文件
$ ll lyj1.txt
-rw-rw-r-- 1 lyj lyj 0 Jul 11 23:52 lyj1.txt
# su lyj2           ------>#切换普通用户lyj2
$ ls
lyj1.txt
$ rm lyj1.txt -f     ------>#lyj2有权删掉这个lyj创建的文件吗?
rm: cannot remove `lyj1.txt: Operation not permitted #显然不能
$ touch lyj2.txt
$ rm lyj2.txt -f   ------>#它只能删除自己创建的

所以总结来说:

       若普通用户对于该目录有w、x权限的前提下;

       SBTI意味着,当该普通用户在该目录下创建了文件/目录,那么只有它自己和root用户可以删除/重命名/移动它,其他用户没有权力这么做

       SBTI只针对目录有效

 

隐藏权限:attrt

i:可以让文件不能被删除、重命名;不能写入、添加数据;不能创建硬链接;注意只有root用户有权设置此权限

# touch attrtest
# chattr +i attrtest     ------>#给文件添加隐藏权限i
# lsattr attrtest        ------>#查看文件的隐藏权限
----i--------e- attrtest
# whoami
root
# rm attrtest -f
rm: 无法删除"attrtest": 不允许的操作   ------>#哪怕root用户都不能删除 
# echo "hello" > attrtest           ------>#不能写入/修改
-bash: attrtest: 权限不够
# mv attrtest attrtest2             ------>#不能重命名
mv: 无法将"attrtest" 移动至"attrtest2": 不允许的操作
# ln attrtest 2                     ------>#不能创建硬链接
ln: 创建硬链接"2" => "attrtest": 不允许的操作
# ln -s attrtest 1.txt   
# cat attrtest                      ------>查看和创建软链接倒是可以

 

a:让这个文件只能增加数据,不能删除、修改数据;注意只有root用户有权设置此权限

# chattr +a  attrtest 
# lsattr attrtest 
-----a-------e- attrtest
# echo "hello" > attrtest 
-bash: attrtest: 不允许的操作
# echo "hello" >>attrtest      ------>#注意体会 > 和 >> 的不同
# cat attrtest 
hello
# rm attrtest -f
rm: 无法删除"attrtest": 不允许的操作

 

[权限管理]——一般权限、特殊权限、隐藏权限

标签:

原文地址:http://www.cnblogs.com/snsdzjlz320/p/5661566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!