文件属性
时间:2010-09-26 来源:fzguon
一、Linux文件属性
1.用户与用户组
在介绍文件属性之前,这里先介绍一下有关Linux系统中一个重要的概念----即“用户和用户组”。这里以“家庭”这个概念来进行讲解,假设有一家人,家里有三兄弟,分别是王大毛、王二毛与王三毛,这个家庭登记在王大毛名下。这样“王大毛家” 就是所谓的“用户组”,至于三兄弟就是分别为三个“用户”,而这三个用户是在同一个用户组里面的。而三个用户虽然在同一用户组内,但是我们可以设定“权限”,好让某些使用者个人的信息不被群组的所有人查询,以保有个人“私人的空间”。而设定用户组共享,则可让大家共同分享。那么又有个人叫做张小猪,他是张小猪家的人,与王家没有关系。这个时候,除非王家认识张小猪,然后开门让张小猪进来王家,否则张小猪永远没有办法进入王家.不过,如果张小猪透过关系认识了三毛,并且跟王三毛成为好朋友,那么张小猪就可以透过三毛进入王家。那个张小猪就是所谓的“其它人,Others”。因此,我们就可以知道,在Linux里任何一个文件都具有“User, Group及Others”三个权限。
在Linux系统中,默认情况下,所有系统账号与一般身份用户,以及root的相关信息,都记录在/etc/passwd文件内。密码记录在/etc/shadow文件中。Linux所有的用户组名称都记录在/etc/group内。
2.文件属性
下面通过一个范例来解释一下文件属性。
连接数 文件所属用户组 文件最近修改时间 -rwxrwx--- 1 root root 293 Oct 19 21:24 test 文件属性 文件拥有者 文件大小 文件名 |
a.第一列代表这个文件的属性
-rwxrwx---
第一个属性表示这个文件是“目录,文件或连接文件等”:
[d],则是目录 [-],则是文件 [l],则是连接文件 [b],则表示为设备文件中可供存储的接口设备
[c],则表示为设备文件中的串行端口设备,例如键盘、鼠标。
接下来的属性中,3个为一组,且均为“rwx”3个参数的组合。其中,[r]代表可读、[w]代表可写、[x]代表可执行。
第一组为“拥有者的权限”; 第二组为“同用户组的权限”; 第三组为“其他非本用户组的权限”
下面就举例进行说明:
[-][rwx][r-x][r--]
1 234 567 890
1 为: 代表这个文件名为目录或文件(上面为文件)
234为:拥有者的权限(上面为可读、可写、可执行)
567为:同组用户权限(上面为可读可执行)
890为:其它用户权限(上面为仅可读)
b.第二列表示连接占用的节点
如果是目录,则表示该目录下还有多少目录有关。
如果是文件,这个放在后面介绍。
c.第三列表示这个文件(或目录)的“拥有者”
d.第四列表示拥有者的用户组
这时用户组的权限就要配合上面所说到的用户组权限,决定该用户组的权限。
e.第五列为这个文件的大小
f.第六列为这个文件的创建日期或者是最近的修改日期
分别为月份、日期及时间
g.第七列为这个文件的文件名
如果文件名前有“.”则表示这个文件为“隐藏文件”
二、目录属性的意义
若为下面的样式时,请问非root的其它人是否可以进入该目录呢?
drwxr--r-- 2 root root 4096 Feb 10 00:44 .ssh
答案是非root这个账号的其它用户均不可进入.ssh 这个目录。因为x与目录的关系相当的重要,如果您在该目录下不能执行任何指令的话,也就无法进入了,因此,请特别留意的是,如果您想要开放某个目录让一些人进来的话,请记得将该目录的x属性给开放。
下面就说明一下r,w,x权限针对目录各自的意义:
r(read contents in directory):表示具有读取目录结构清单的权限,所以当您拥有读取目录的权限时,就可以利用ls命令将该目录的内容列出来。
w(modify contents of directory):表示拥有更改该目录结构清单的权限。这里说明一下,如系统中账号guo,那么在/home/guo这个目录内,无论是谁(包括root)建立的文件,无论该文件属于谁,无论该文件的属性是什么,guo这个用户都“有权力将该文件删除”。
x(access directory):与能否进入该目录有关。
范例:
[root@redflag ~]# cd /tmp [root@redflag tmp]# mkdir testing [root@redflag tmp]# chmod 744 testing #目录的权限是744,且所属用户组与用户均是root [root@redflag tmp]# touch testing/testing [root@redflag tmp]# chmod 600 testing/testing [root@redflag tmp]# su guo [guo@redflag tmp]$ ls -l testing total 0 ?--------- ? ? ? ? ? testing #可查看里面的信息,因为guo具有r的权限,不过,毕竟权限不够,很多数据是问号。 [guo@redflag tmp]$ cd testing bash: cd: testing/: Permission denied [guo@redflag tmp]$ exit [root@redflag tmp]# chown guo testing #将目录拥有者设置为guo [root@redflag tmp]# su guo [guo@redflag tmp]$ cd testing [guo@redflag tmp]$ ls -l -rw------- 1 root root 0 Jul 14 01:13 testing [guo@redflag tmp]$ rm testing rm: remove write-protected regular empty file 'testing'? y #说明了对于目录而言w的权限的重要性 |
1.更改所属用户组,chgrp
改变一个文件的用户组也真是很简单的,直接以chgrp来改变即可。不过,要改变成为的用户组名称必须要在/etc/group里面存在的名字才行,否则就会显示错误。
[root@redflag ~]# chgrp [-R] 用户组名 dirname/filename...
参数:
-R:可连同子目录下的所有文件、目录都更新成这个用户组。
[root@redflag ~]# chgrp users intsall.log
2.更改文件拥有者,chown
chown这个指令也要注意的是,用户必须是已经存在系统中的,也就是在/etc/passwd这个文件中有。chown的用途还还可以直接修改用户组的名称。
[root@redflag ~]# chown [-R] 账号名称 文件或目录
[root@redflag ~]# chown [-R] 账号名称:用户组名称 文件或目录
参数:
-R:可连同子目录下的所有文件、目录都更新成这个用户组与用户。
3.更改9个属性,chmod
使用chmod命令改变文件的属性,属性的设置方法有两种,分别可以使用数字或符号。
* 数字类型改变文件权限
Linx文件的基本属性有9个,分别是owner/group/others组别的read/write/execue属性,九个属性是三个三个一组的。其中,我们可以使用数字来代表各个属性,各属性的对照表: r:4 w:2 x:1
由于同一组的数字是相加的。例如当属性为[ -rwxrwx--- ]则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0
[root@redflag ~]# chmod [-R] xyz 文件或目录
参数: xyz:为同三组rwx属性数值的相加
-R:进行递归的持续更改
* 符号类型改变文件权限
基本上就九个属性分别是user,group,others。那么就可以由u,g,o来代表三组的属性。a则代表all,即全部的3组。那么读写的属性就可以写成了r,w,x。也就是可以使用下面的方式查看:
chmod |
u g o a |
+(加入) -(除去) =(设置) |
r w x |
文件或目录 |
相关阅读 更多 +