Linux用户组与文件权限

【原文:http://www.linuxidc.com/Linux/2011-09/43253.htm】

接触Linux约有半年的时间了,感到自己对Linux仍是一无所知,大多数时候只是在Ubuntu软件中心中翻翻有什么有意思的东西装上玩玩,有的地方觉得不方便就又只好切换回Windows。系统出问题的时候完全没辙,只能重装了事。因此找了几本相关的书,决定深入学习Linux。不定期整理一下学习笔记,发到Blog上来,方便自己查阅,也是对自己的督促。1.用户与用户组 Linux是多用户,多任务的操作系统,这意味着多人可以同时使用一台主机。考虑到每个用户的个人喜好与隐私,文件的所有者就显得尤为重要。将用户分为不同的组别当然是为了方便管理。因此用户与文件之间的关系就有三种:

(1)User:表示该用户是文件的所有者。

(2)Group:表示该用户和文件的所有者在同一用户组。

(3)Others:除了以上两种的其他用户。

此外,Linux中还有一个特殊root账户,相当于Windows中的管理员账户,对所有文件具有所有权。

由于只是自己一个人在自己的机器上使用,对这一部分就没有深入了解。重点在下面的文件权限。

2.文件权限2.1 Linux文件属性 在终端下执行"ls -l"查看当前目录的文件,l参数用于显示文件的属性,以下是一个例子及对应的属性说明:————————————————————————————————————————————— -rw-rw-r– 1 jerry jerry 100 6 月 28 11:40 hello.c【用户权限】【连接数】【所有者】【用户组】【文件大小】【修改日期】【文件名】—————————————————————————————————————————————注:文件大小的单位是B 开头的那一串"-rw-rw-r–"共有10个字符,

(1)第一个表示文件的类型,常见的有:

[-]代表文件,

[d]代表目录,

[l]代表链接文件,

[b]代表设备等。

(2)后面的九个分为三组,分别代表User,Group,Other这三类用的权限,

[r]代表读权限,

[w]代表写权限,

[x]代表执行权限,

[-]就代表没有权限。

因此,上面这个例子代表文件的所有者jerry及同组的用户对该文件可读,可写。其他用户则只能读。所有的用户都没有执行权限。

2.2 文件权限的意义 如上所述,用户对于文件有r(read),w(write),x(execute)这三种权限。在Linux中“一切皆文件”,因而有时候这是令人迷惑的,尤其是对目录来说。以下对目录的这三个权限再做具体的说明:(1)r:表示对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。即可以使用“ls”命令。

(2)w:表示对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。

(3)x:表示对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。可以使用“cd”命令。

而对于我们通常所说的的“文件”来说,“r”和“w”容易明白,而“x”则令人费解,难道文本文件也可以执行吗?在这一点上,Linux和Windows有很大的区别。在Windows下,可执行文件通常都是以“.exe”结尾的。而在Linux下,文件是否可执行与后缀名没有关系,而仅与是否具有x权限有关。不过无论是Linux还是Windows,可执行的只能是二进制文件。因此,虽然在Linux下文本文件加上x权限也可以执行,不过系统只认识二进制的机器语言,因此只可能报错而不会有任何效果。 为了验证这一点可以做一个简单的实验,用gcc编译一个C语言文件,默认会得到一个“a.out”文件,将其重命名为“a.txt”,然后执行“./a.txt”,将会发现程序依然能够执行。2.3 文件权限的更改 Linux下要更改文件的权限,可以用以下三个命令:(1)改变所有者:chown user filename(2)改变用户组:chgrp group filename(3)改变权限:chmod

有以下两种用法:

(1)数字法:r: 对应数值4

w:对应数值2x:对应数值1-:对应数值0三类用户的权限分别就是这三个数字的和,比如说上面的那个例子“ -rw-rw-r– ”化为数字即是:664,要给三个用户都加上执行权限的话,就用“chmod 775 hello.c”(2)符号法: chmod u/g/o/a +/-/= r/w/x filename 以上“u”表示user,“g”表示group,“o”表示others,“a”表示all “+”表示增加权限,“-”表示去除权限,“=”表示设置权限为 “rwx”当然就是文件的三个权限,可以只写一个,也可以写多个 依旧是上面的那个例子,给hello.c所有用户加上执行权限,那么命令就是“chmod a+x hello.c” ps:以上命令可以加上“-R”参数来进行递归变更2.4 文件的默认权限:umask 以上已经说明了关于文件权限的基本知识,那么当我们新建一个文件的时候,权限是怎样的呢?这就涉及到文件的默认权限:umask。在终端下输入umask,会得到一串数字,像在我的机器上是“0002”,后三个数字即是文件的默认权限,不过要注意的是,这是文件默认不具有的权限。亦即“002”代表others不具有w权限。还需要注意的是对于文件和目录这里仍是不同的。文件默认不具有x权限,即最大权限为“-rw-rw-rw-”,而目录访问需要x权限,因此默认最大权限为“-rwxrwxrwx”。所以在我的机器上umask为“002”,分别创建一个文件和一个目录后,结果如下: drwxrwxr-x. 2 jerry jerry 4096 8月 31 11:30 new -rw-rw-r–. 1 jerry jerry 6 8月 31 11:29 new.txt 若要设置umask,直接在后面加上设置的数字即可,比如“umask 022” ps:umask加上“-S(大写)”参数可以直接显示文件权限,不过不区分文件与目录,如我的机子上就显示“u=rwx,g=rwx,o=rx”,仍需留意文件默认没有x权限。明天又会是新的一天,而我依然年轻。

Linux用户组与文件权限

相关文章:

你感兴趣的文章:

标签云: