你认识“属性”吗?

网络与通信

在网站建设当中,有很多朋友都曾经接触过“页面属性”这个词。例如架设论坛,尤其是CGI的LB论坛,我们就需要在服务器上对文件的属性进行设置。其实属性设置是UNIX系列操作系统为了增强安全性的一种功能。如果你的服务器是WIN2000,或者WinNT操作系统,就不需要考虑属性是什么了。如果你的服务器是UNIX或者LINUX系统的,那么这些就很关键了。有些朋友就经常写信来询问什么是属性,笔者查找了很多的资料,现在就让我们一起来认识“文件属性”吧!
文件属性英文叫做CHMOD,简称“属性”。CHMOD原是PHP中一个函数,此函数用八进制代数字表权限,是利用3个8位的数字对程序安全性和修改权的一种设定。不过,现在在程序中使用得比较少,更多的是在FTP上传文件时使用。在FTP软件上可以看到, CHMOD只有三个组:所有权、组、公共。比如,属性764,意思是:所有权7、组6、公共4,代表三个组的权限。各组的数字的算法是这样的:7=1+2+4=1*20+1*21+1*22。每组的属性,是1,2,4的互相组合而成。
下面是三个数字代表的权限
读取[read]:4
写入[write]:2
执行[execute]:1
现在大家知道,一个字代表的权限了吧?
当然,也会有出现0的时候,0,当然是没任何权限了;777不用说了,全权。
其实,这么看来,为使程式安全一点,设置属性,应该766就够了,一些空间要求用户要把CGI程式权限设置为755。因为上传后的默认权限是没这么高的,仅仅是644,在公共和组中仅包含了读取权。显然,其中是不包括执行权的,所以每组都必须 加上1,为755。
如果你在程序中使用chmod的时候,建议在前面补0,如:chmod("filename",0777)。
此外在ftp软件中经常会看到这样的符号"-rwxr-xr-x"。其实这也是属性的一种表示方法。它是分成了4部分:第一位是一部分,“d”表示目录(“目录”是DOS,UNIX系统下对“文件夹”的名称),“-”表示文件;后边的3部分(3位一部分)是owner、owner所在组、其他用户的权限。其中r是read的首字母,表示读取权;w是write的首字母,表示写入权;x是execute的首字母,代表执行权限;属性部分的“-”表示权限为0。
如上例中的“-rwxr-xr-x”,我们先用一种方便读取的方法表示,用“/”将字段进行划分成“-/rwx/r-x/r-x”。第一段为“-”表示文件;第二段为“rwx ”表示具有3权,用数字表示为7;第三段与第四段同为“r-x”,用数字表示就是5;它就表示一个755的普通文件。那么属性为777的目录就是“drwxrwxrwx”(d/rwx/rwx/rwx)。
巧妙利用属性可以提高自己网站内文件的安全性,如果滥用的话有也有可能变成坏事。笔者就曾经有过将文件的安全性设置过高,结果指示网站瘫痪的经历。