6个例子详细说明linux的文件目录权限

张映 发表于 2010-06-27

分类目录: linux

标签:, ,

我有一个同事,刚学linux不久,对目录权限不是很了解,遇到一个问题,搞不清楚为什么,问题如下:
linux下面有一个组www,他用www组里面的一个成员,从一个地方考文件到另一个地方,当他换成同一组内的其他成员时,就不能copy,他搞不清楚为什么,根本没有想到是文件目录权限的问题,他以为同一个组的成员权限是一样的,忽视了所属用户会有更高的权利,那怎么样改变文件或目录的权限呢

一,chmod命令

[zhangy@BlackGhost music]$ chmod --help
用法:chmod [选项]... 模式[,模式]... 文件...
或:chmod [选项]... 八进制模式 文件...


或:chmod [选项]... --reference=参考文件 文件...
将每个[文件]的模式更改为[模式]。

-c, --changes           类似 --verbose,但只在有更改时才显示结果
--no-preserve-root  do not treat `/' specially (the default)
--preserve-root     fail to operate recursively on `/'
-f, --silent, --quiet   去除大部份的错误信息
-v, --verbose           处理任何文件都会显示信息
--reference=参考文件  使用[参考文件]的模式,而非自行指定权限模式
-R, --recursive         以递归方式更改所有的文件及子目录
--help     显示此帮助信息并退出
--version  输出版本信息并退出

Each MODE is of the form `[ugoa]*([-+=]([rwxXst]*|[ugo]))+'.

1,[ugoa]*什么意思

1,u 表示该文件目录的所属用户
2,g 表示与该文件目录的拥有者属于同一个群组(group)的其他用户
3,o 所属组外的其他用户
4,a 表示这三者皆是
5,* 表示可以组合出现

2,-+=什么意思

1,+ 表示增加权限
2,- 表示减小权限
3,= 等于权限

3,[rwxXst]*什么意思

1,r 表示可读取
2,w 表示可写入
3,x 表示可执行
4,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
5,d 表示目录
6,s 表示 SUID/SGID
7,t 表示 sticky位

s,t,X这三个很少遇到

4,777,775,771什么意思

rwx-xr-x 2 zhangy users  4096 2005-11-10 code

rwx 代表的是文件拥有者的权限是7

xr 代表的是同一组的其他成员的权利是5

x 代表组外的其他人的权限1

这些数字是怎么算来的呢?

r=4,w=2,x=1
rwx    算法  4+2+1=7;
rx 算法 4+1=5;
x 算法 1

由起可知777的三个数字对的是u,g,o

chmod 755   test.php 根 chmod u=rwx,g=rx,o=rx test.php  是一样的。777,775啊之类都是这样推来的。

5,chmod举例

建立一个测试文件test.php,建立一个测试目录test

a),test目录设置成同一组都可写

chmod -R g+w ./test

b),test.php 设置成所有用户可读取

chmod ugo+r test.php

c),test.php 去掉同组其他成员的写权限

chmod g-w test.php

d),test 把测试目录的权限设置成775

chmod -R 775 test

e),test.php 测试文件的权限设置成777

chmod 777 test.php

如果我想改变文件的所属用户怎么办呢,chmod不就没办法办到了吗,不错chmod是办不到,不过chown能办到

二,chown

[zhangy@BlackGhost music]$ chown --help
用法:chown [选项]... [所有者][:[组]] 文件...
user : 新的档案拥有者的使用者 ID
group : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
-H     如果指定了 -R 选项,并且引用类型目录的文件的符号链接在命令行上指定,chown 变量会更改由符号引用的目录的用户标识(和组标识,如果已指定)和所有在该目录下的文件层次结构中的所有文件。
-L     如果指定了 -R 选项,并且引用类型目录的文件的符号在命令行上指定或在遍历文件层次结构期间遇到,chown 命令会更改由符号链接引用的目录的用户标识(和组标识,如果已指定)和在该目录之下的文件层次结构中的所有文件。
-P     如果指定了 -R 选项并且符号链接在命令行上指定或者在遍历文件层次结构期间遇到,则如果系统支持该操作,则 chown 命令会更改符号链接的所有者标识(和组标识,如果已指定)。chown 命令不会执行至文件层次结构的任何其它部分的符号链接。
--help : 显示辅助说明
--version : 显示版本

chown zhangy:users test.php这里记住一条就是用户在前面,组在后面,zhangy是用户,users是组

注意:改变文件的所属用户,可能会带来不可料想的危险,请小心使用



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/linux/885.html