linux文件及目录权限问题(试验)
发布时间:2010-01-08 13:27:03来源:红联作者:xiadao_81
[i=s] 本帖最后由 xiadao_81 于 2010-1-8 13:28 编辑 [/i]
学linux文件及目录权限问题是很重要的一课,今天在看一个贴子:
http://www.linuxdiyf.com/bbs/viewthread.php?tid=121577&highlight=%CE%C4%BC%FE%C8%A8%CF%DE
看完后,引申并试验了下!把步骤和心得详细写了下来,若有错误,欢迎大家批评指正!共同学习!
原文:
如有个exmple.txt文件,此文件的拥有者music,组是music,位置在music/contrib/exmple.txt下,此文件的权限是-rw-rw-r--, /music目录权限drwxr-xr-x,music/contrib/目录权限是drwxrwxrwx,请问是所有用户都能删除exmple.txt文件吗?还是只有musiic用户和music组成员才能删除exmple.txt文件呢?请指教!谢谢各位
首先,我觉得这原文有些不严谨,exmple.txt到底是在(1)/home/music/contrib/下,还是在(2)/music/contrib下?还有目录归属等问题。所以说linux的权限真的很严谨!我们分两种看:
第一种:
先按(1)来看:exmple.txt文件的拥有者music,组是music,那么music就是一个用户了。如果用户music创建此文件,一般情况下是在自己的家目录下。即/home/music/contrib/exmaple.txt,而此情况下/home目录是755权限,/home/music则是600权限,/home/music/contrib是775权限,/home/music/contrib/exmaple.txt是664权限。正常默认下:自己的家目录除了自己、root或者给了权限的用户才能访问。
即:
drwxr-xr-x 7 root root 4096 01-07 13:33 home /home
drwx------ 3 music music 4096 01-07 13:33 music /home/music
drwxrwxr-x 2 music music 4096 01-07 13:48 contrib /home/music/contrib
-rw-rw-r-- 1 music music 11 01-07 13:48 exmple.txt /home/music/contrib/exmple.txt
按楼主的意思,是作了权限修改的。于是修改如下:/home/music目录权限是drwxr-xr-x(755),music/contrib/目录权限是drwxrwxrwx(777),文件权限不变,仍然是664。
即:
drwxr-xr-x 7 root root 4096 01-07 13:33 home /home
drwxr-xr-x 4 music music 4096 01-07 13:48 music /home/music
drwxrwxrwx 2 music music 4096 01-07 13:48 contrib /home/music/contrib
-rw-rw-r-- 1 music music 11 01-07 13:48 exmple.txt /home/music/contrib/exmple.txt
OK,现在我们确认权限没错后,按楼主要求进行测试:问题1:请问是所有用户都能删除exmple.txt文件吗?问题2:还是只有musiic用户和music组成员才能删除exmple.txt文件呢?
问题1:
1.测试前,我们先作一分文件的备份:
-rw-rw-r-- 1 music music 11 01-08 10:43 exmple.bak (备份)
-rw-rw-r-- 1 music music 11 01-07 13:48 exmple.txt (原文件)
2.我们换个用户us1,进入该目录。
[us1@localhost contrib]$ ll
总计 16
-rw-rw-r-- 1 music music 11 01-08 10:43 exmple.bak
-rw-rw-r-- 1 music music 11 01-07 13:48 exmple.txt
先看看可不可以读:
[us1@localhost contrib]$ cat exmple.txt
exmple.txt
OK,可以看到内容,文件内容就是exmple.txt
3.再看看可不可以编辑:
[us1@localhost contrib]$ vi exmple.txt
当我切换到插入状态时,提示:
-- 插入 -- W10: 警告: 正在修改一个只读文件
我没理它,继续写操作,增加了两行文件,而且最后:wq!保存退出,OK。
再看一下文件:
[us1@localhost contrib]$ ll
总计 16
-rw-rw-r-- 1 music music 11 01-08 10:43 exmple.bak
-rw-rw-r-- 1 us1 us1 29 01-08 10:52 exmple.txt
注意到了没有,文件exmple.txt的所有者变了,变成了us1。
4.再看一下内容保存到了没有:
[us1@localhost contrib]$ cat exmple.txt
exmple.txt
aaaaaaaa
bbbbbbbb
注意到了没有,我增加的两行保存成功了。其实上两步中文件保存、文件的所有者变了,已证明文件是添加成功的。也就是说在这种权限下,任何用户都可以无视文件是否谁所有,是否是只读,修改当然可以。很恐怖吧。
再试一下删除吧!我想应该100%可以
[us1@localhost contrib]$ rm exmple.txt
[us1@localhost contrib]$ ll
总计 8
-rw-rw-r-- 1 music music 11 01-08 10:43 exmple.bak
看到了吧,没有任何提示就删除了!按道理我这里没加参数-f 是会提示的,不知为什么没有提示?
问题2:
1.此问有两点,1是说文件所有者能否删除,那是毋庸至疑的。2是说文件所有者的组成员。于是我又新建了用户us2,并加入了music组。
2.查看us2是不是加入了music组
[root@localhost home]# usermod -G music us2
[root@localhost home]# groups us2
us2 : us2 music
[root@localhost home]# groups us1
us1 : us1
[root@localhost home]#
3.我们再重复问题1中的几步,注意,由于问题1中我们删除了原文件,我们必须用原music用户把备份的那个文件再生成一个,这样文件的所有者才不会变。当然也可以直接操作备份文件。
我是直接操作的备份文件。就不一一例举了。结果是:
文件可以查看,也可以修改,修改时不再提示文件是只读问题了。而且保存后,文件所有者也未变。
结论一:
情况:exmple.txt是在(1)/home/music/contrib/下,/home/music目录权限是drwxr-xr-x(755),/home/music/contrib/目录权限是drwxrwxrwx(777),文件exmple.txt权限是664。
结论:此情况下,任何用户(当然包括文件所有者和组成员)都可以查看文件内容、无视文件所有者权限、可以修改文件内容并保存,保存后直接更改文件所有者,可以随意删除文件无任何提示!组成员作修改时不会改变文件所有者!
第二种:
再来看(2)exmple.txt是在/music/contrib下!也就是说exmple.txt文件的拥有者music,组是music,music仍是一个用户。但是文件exmple.txt不是在/home/music/contrib下,而是直接在/music/contrib下。这种情况下,普通用户music是不能直接在/下用命令建目录创文件等,必须由root授权。或者由root建再chown -R music.music music,注意参数-R就是使其子目录及子目录下的文件所有者和组都一起改变。我就不详细记录了。大家以为呢?可以试试看:
结论二:
情况:exmple.txt是在(1)/music/contrib/下,/music目录权限是drwxr-xr-x(755),/music/contrib/目录权限是drwxrwxrwx(777),文件exmple.txt权限是664。
结论:留着大家跟贴讨论吧!