我们都知道UNIX是一个多用户的操作系统,那么,它是怎样来区分一个文件是属于谁的,这个文件是什么类型的文件的呢?下面我们通过一个例子来说明这个问题
我们现在使用ls命令列出当前目录下的文件
#ls -la
# -rw-rw-rw- 1 root wheel 170 jan 7 19:46 mnk
# -rw-r----- 1 root wheel 18204 jan 8 20:34 nmap.tar.gz
# -rwxr-xr-- 1 candy user 1204 may 23 13:00 mysh.sh
# drwx------ 2 netdemon user 512 may 23 14:23 mydoc
|-----1------|--2--|----3-----|---4---|---5---|------6------|-----7-------|
在这里第一部分是文件属性,第二部分是文件数量,第三是所有者,第四是所属组,第五是文件大小,第六是文件修改时间,第七是文件名,其中文件名,时间,文件大小应该不用解释大家都能明白,我就不再说明了,第三部分表明了一个文件的拥有者是谁,就mnk这个文件来说,它的拥有者是root,是属于wheel这个组的,而mysh.sh的拥有者是candy,user组的,通常情况下,如果用户属于这个组,那么这个文件也就属于这个组,第二部分指出连接到此文件的连接的数量,我们都知道,在win系统上,我们可以创建快捷方式,比如在桌面上创建一个快捷方式,指向某个文件,UNIX的连接也大致是一样的概念,如果在系统尚有一个连接是指向mnk的,那么在这里它的1就会变成2。而第一部分呢,表面看起来很不知所谓,很难一下子明白这个表示了什么,但这个就恰恰是UNIX的精粹所在,UNIX的最大特点之一,如果没有这个,UNIX将不是UNIX。
这个部分一共有10位数来表示,第一位表示文件类型,"-"表示这个一个文件,"d"表示这个一个目录,"s"表示这是一个连接,详细的说明请看最后的表格,接下来的9位,我们把他们每3位分为一段来看,第一段对应于文件拥有者用u表示(user),第二段对应属组用g表示(group),第三段对应任何人用o表示(other),而每一段的第一位代表读权限(r),第二为代表写权限(w),第三位代表执行(x)(对文件而言)或可进入(对目录而言)权限,现在我们拿第二个文件nmap.tar.gz来作说名,第一位"-"表明这是一个文件,接下来的"rw-"表明root可以读写这个文件,但不能执行它,再接下来的"r--"表明了属于wheel这个组的人可以读这个文件,但不能修改(不可写)也不能执行这个文件,最后的"---"表明了其他的任何人都不能读、写、执行这个文件。由此,我们现在可以知道,mnk这个文件是任何一个人都可以读写但不能执行的一个文件,因为它的每一部分都是"rw-",而第三个mysh.sh就是candy可读可写可执行,netdemon可以执行但不能修改或删除,为什么呢?通过第4个mydoc,我们看出netdemon也是属于user组的一个用户,而mysh.sh的表示组权限的这一段是"r-x",所以netdemon有执行这个文件的权限,但是其他的人就只能看了,这是因为最后的"r--"说明的这个规则。第四个mydoc,由第一位的"d",说明这是一个目录而不是一个文件,netdemon可以读写进入这个目录,但其他的人都不可以包括同一组的candy,因为他最后都是"---"。但是,root可不可以呢?答案是可以的,因为root是整个系统权限最高的一个用户的名字,几乎所有的UNIX系统都一样,整个系统所有的东西都是属于root的,尽管在某些UNIX系统上root去删除mydoc这个目录时会出错,但root还是通过可以使用chown或chmod来改变文件的属性再删除或修改的,(关于chown及chmod等命令自行用'man chmod'命令察看说明)