[原创]文件特殊权限的解释。

发表于:2007-06-09来源:作者:点击数: 标签:
-rwsr-xr-x=4755 文件执行的时候,会以owner的身份来执行,就是setuid。 例如:-rwxr-xr-t1rootwheel07918:24test 这个test是允许同组或其他人运行的,但是他运行的时候去可以控制那些root属性的文件或设备。 再来一个特殊点点的东西。关于目录 安全 性的。

-rwsr-xr-x = 4755 文件执行的时候,会以owner的身份来执行,就是setuid 。
例如:-rwxr-xr-t  1 root      wheel         0  7  9 18:24 test

这个test 是允许同组或其他人运行的,但是他运行的时候去可以控制那些root 属性的文件或设备。

再来一个特殊点点的东西。关于目录安全性的。

#ls -la /tmp
drwxrwxrwt  12 root      wheel      1536  7  9 18:24 .
drwxr-xr-x  17 root      wheel       512  6 16 16:44 ..
-rwxr-xr-t   1 root      wheel         0  7  9 18:24 test

大家留意一下
drwxrwxrw[color=red:fdd76755d3]t[/color:fdd76755d3]  12 root      wheel      1536  7  9 18:24 .

大家留意这个[color=red:fdd76755d3]t[/color:fdd76755d3],非同小可。他表示drwxrwxrwt = 1777 任何人都可以在此目录拥有写权限,[color=red:fdd76755d3]但是不能删除别人拥有的文件。[/color:fdd76755d3]

简单来说就是你用一个普通用户去删除mysql.sock看看提示!

好了,这个要求班主任加精,并且是原创的。    

[其实我不喜欢灌水]

 powerplane 回复于:2003-07-09 19:02:17
精,我不知道有t这回事。
[quote:e2bc49e6d2="ihweb"][其实我不喜欢灌水][/quote:e2bc49e6d2]
我相信,灌水是一种强迫症,无论是不是喜欢。

 i2era 回复于:2003-07-09 19:05:09
t     The sticky bit is set (mode 1000), and is search-
    able or executable.  (See chmod(1) or sticky(.)

唉,难得猴子不关税了,就给他个精华鼓励一下吧

 ihweb 回复于:2003-07-09 19:06:36
[quote:548f0cacd5="i2era"]t     The sticky bit is set (mode 1000), and is search-
    able or executable.  (See chmod(1) or sticky(.)

唉,难得猴子不关税了,就给他个精华鼓励一下吧[/quote:548f0cacd5]     

我决定为BSD潭贡献!!!!当然………………包括人气………………   

 i2era 回复于:2003-07-09 19:07:47
上msn,有事

 22sun.com 回复于:2003-07-09 19:08:54
t ?? 那怎么给一个目录加上 t 属性。

俺是吃狗肉专家。如果有人想吃。请与俺联系!!


联系电话是:110 and 119

不吃狗别打啊~~~~!小心!!!!!!

 i2era 回复于:2003-07-09 19:10:54
[quote:8532df9c2f="22sun.com"]t ?? 那怎么给一个目录加上 t 属性。

俺是吃狗肉专家。如果有人想吃。请与俺联系!!


联系电话是:110 and 119

不吃狗别打啊~~~~!小心!!!!!![/quote:8532df9c2f]     
#chmod 1777 test_dir
man ls

 22sun.com 回复于:2003-07-09 19:19:38
[quote:6f950cab48="i2era"]    
#chmod 1777 test_dir
man ls[/quote:6f950cab48]     

好,一会狗肉就送到芳村了!

=着不要乱跑。

 bb8848 回复于:2003-07-09 19:25:49
收下了

 jiamars 回复于:2003-07-10 00:05:28
很不错,天天在这里长知识,呵呵

 carrison 回复于:2003-07-10 08:40:47
???偶在solaris5.7上测试,普通用户a删除普通用户b有t位的目录,照删不误,soalris上不一样?
另:SEE ALSO
     ls(1), chmod(2),  attributes(5),  environ(5),  largefile(5),
     getfacl(1), setfacl(1)
这chmod(2)等是什么意思,怎么看?

 carrison 回复于:2003-07-10 08:53:02
chmod(2)等明白了一点(http://freebsd.sinica.edu.tw/docs/handbook-2.1.0/handbook20.html),可是照着去做,也不怎么灵光,举个例子:
$ whatis write
write           write (1)       - write to another user
write           write (2)       - write on a file
write           write (9e)      - write data to a device
$ man 9e write
No manual entry for 9e.
Reformatting page.  Wait... done
... ...
$ man 2 write
No manual entry for 2.
Reformatting page.  Wait... done
... ...
怎么老是No manual entry for x.   ???!!!
用法不对?

 阿挺 回复于:2003-07-10 09:27:18
猴子。。
封你做偶像。。
:)

 ihweb 回复于:2003-07-10 09:48:35
[quote:ee3a36839a="carrison"]???偶在solaris5.7上测试,普通用户a删除普通用户b有t位的目录,照删不误,soalris上不一样?
另:SEE ALSO
     ls(1), chmod(2),  attributes(5),  environ(5),  largefile(5),
     getfacl(1), setfacl(1)..........[/quote:ee3a36839a]     


Solaris 不太会,我等会去做做看。 ops:

 meteor06 回复于:2003-07-10 10:07:51
帖子内容精辟 ;) 好

 ihweb 回复于:2003-07-10 10:26:00
[quote:93d5d8f74b="carrison"]???偶在solaris5.7上测试,普通用户a删除普通用户b有t位的目录,照删不误,soalris上不一样?
另:SEE ALSO
     ls(1), chmod(2),  attributes(5),  environ(5),  largefile(5),
     getfacl(1), setfacl(1)..........[/quote:93d5d8f74b]     


刚做了实验,Solaris 果然能删除的喔。奇怪的很,我找找答案。 ops:  ops:

 蔻蔻 回复于:2003-07-10 10:41:47
精华,支持帅GG~~TT

 ihweb 回复于:2003-07-10 11:11:02
[quote:4241f4909c="蔻蔻"]精华,支持帅GG~~TT[/quote:4241f4909c]     


       谢谢。如果大家都支持的话,我就少灌水,多发精华和原创造的!!


真的谢谢,动力很到喔。     

 qjlemon 回复于:2003-07-10 11:25:34
ihweb大家应该也满喜欢你灌水的  可能班长除外
鲜花配绿叶,还有。。。。水

 kinux 回复于:2003-07-10 11:45:58
看看Solaris 8???

 IPphone 回复于:2003-07-10 13:14:16
好东西阿!!我就对这些个文件属性一直有点懵~

 PKkingSon 回复于:2003-07-10 21:36:01
solaris和HP-UX都可以删除的,不用再试了,
粘附位是UNIX历史上的一个遗留产物,等下我给大家贴下关于粘附位的介绍。

 PKkingSon 回复于:2003-07-11 07:41:13
具有八进制值1000的位叫粘附位,是unix已经发展得不再需要的事物而又不能摆脱其追随的例子.像unix在其上度过它的孩童期的PDP-11/70这样的小内存系统,需要一些程序持续地驻留在内存或交换设备上这个时候粘附位就十分重要了.在今天由于有了25美圆的内存模块和快速磁盘驱动器,在可执行程序上的粘附位已经过时了,现代的内核已经悄然地忽略了它.
如果在目录上设置了这个位,那么大多数版本的unix不允许删除或重新命名该目录中的文件,除非你是该目录的属主,该文件的属主或超级用户.在这个目录上拥有写入权限是不够的.这相约定是让像/tmp之类的目录变得多少有些隐私性和安全性的一种尝试.
Solaris和HP-UX在处理粘附位目录的时候并不那么严格.如果对该目录有写入权限,即使不是属主,也能删除其中的文件.这实际上有许多意义,虽然对实际应用几乎没有什么影响

 ihweb 回复于:2003-07-11 07:46:29
[quote:f5ba4e7acb="PKkingSon"]具有八进制值1000的位叫粘附位,是unix已经发展得不再需要的事物而又不能摆脱其追随的例子.像unix在其上度过它的孩童期的PDP-11/70这样的小内存系统,需要一些程序持续地驻留在内存或交换设备上这个时候粘附位就十分重..........[/quote:f5ba4e7acb]     


不知道这样改是好还是坏。

 mmmmn 回复于:2003-07-11 08:42:18
晕倒,这个也加精?最基础的unix知识啊。。。。
就PKkingSon 的回答还有些水平啊,这个玩意现在已经不怎么使用了
还有在目录上设置这个不叫stick bit了吧,应该就是setgid了。。。
现在使用的也不广泛了

 hmkart 回复于:2003-07-11 10:21:56
Solaris下,无效,
目录不可以DEL
但进入目录后,rm其中的文件
还是可以的

 PKkingSon 回复于:2003-07-11 10:27:33
[quote:177acd13d0="mmmmn"]晕倒,这个也加精?最基础的unix知识啊。。。。
就PKkingSon 的回答还有些水平啊,这个玩意现在已经不怎么使用了
还有在目录上设置这个不叫stick bit了吧,应该就是setgid了。。。
现在使用的也不广泛了[/quote:177acd13d0]     
高帽子不要给我,嘿嘿。应该送给Evi Nemeth   Garth Snyder   Scoot Seebass  Trent R.Hein他们。(《UNIX系统管理手册技术手册第三版》)

 PKkingSon 回复于:2003-07-11 10:31:38
忽然发现有猴子有MM葱白哦。

 PKkingSon 回复于:2003-07-11 10:43:41
BTW,setuid和setgid的位值是04000和02000。
继续帖点。
这些位允许程序访问运它们的用户本来无权访问的文件和进程。
当某个目录上设置setgid位时,在这个目录中新创建的文件具有该目录的属组权而不是创建该文件的用户的默认属组。这项约定使得在几个用户之间(只要这些用户都属于同一个组)共享一个目录中的文件变得更简单。在使用这些特性之前,请检查自己的系统,因为并不是所有版本的unix都支持这个特性,当然BSD,REDHAT,HP-UX,SOLARIS都是支持的。对setgid位的这种解释跟它在可执行文件上设置时的含义没有什么关系,但不要混淆了这两种意义。
一些系统允许在非可执行的纯文本文件上设置setgid位,以在该文件被打开时请求特殊的锁定。

 PKkingSon 回复于:2003-07-11 11:07:24
文件的属性工16位,9个位控制谁能读取执行和写入,这些位和另外影响到可执行程序运行的3个位一起构成了文件的”模式“(mode),其余的4个位表示文件类型信息。
9个位的作用就不必细说了,执行位比较特殊,对应了2种文件,可执行的程序和script脚本,二进制的cpu可以直接运行,脚本需要由shell或另外的程序解释,按照约定,脚本的第一行一般用下面这种方式来指定解释器:
# !/path/to/prog
没有设定解释器的script一般会被系统假定为sh脚本。
对目录来说,执行位(有时也叫”搜索“(search)位或”扫描“(scan)位)允许进入或通过该目录,但不一定允许列出它的内容。读取和执行位结合起来,才允许目录列表。写入和执行位组合允许在目录中创建删除和重新命名文件。

在一般的unix系统中,使用ls -l来查看所有的文件权限信息。
ls -l /bin/sh
lrwxrwxrwx   1 root     root            4 Nov  8  2002 /bin/sh -> bash*
第一个位是描述文件类型和模式,大概有下面几类
============================================
类型                  符号                  用......创建                  用....删除
============================================
普通文件              -                       编辑器,cp等                rm
目录                    d                       mkdir                    rmdir,rm -r
字符设备文件       c                       mknod                         rm
块设备文件          b                       mknod                         rm
UNIX域套接口      s                       socket(2)                     rm
命名管道              p                       mknod                         rm
符号连接              l                        ln -s                             rm
============================================

FreeBSD的附加标记
Fbsd和其他基于4.4BSD的系统定义了多种可以设置文件上的附加标记。他们通常用来援引额外的文件系统语义。例如sappnd标记使得文件只能够追加内容,(这对于日志文件非常有用,对吧:)),schg标记使得文件不可改变也不可删除,使用ls -lo可以看到文件相关联的标志。
可以使用chflags(1)来了解可以使用的标志列表和如何修改这些标志。

 mmmmn 回复于:2003-07-11 11:28:38
没有设定解释器的script一般会被系统假定为sh脚本。 

这句话是不对的,对script的执行所使用的脚本是有一定的搜寻顺序的,具体的顺序我忘了,但不是假定为sh脚本

 ★可乐∮ 回复于:2003-07-11 14:00:34
建议看看《Linux shell编程》这本书!
上面有关于权限的详细讲解!
电子版在到处都是!

原文转自:http://www.ltesting.net