您的位置:首页 > 运维架构 > Linux

18_Linux基础知识及命令――――改变文件的权限

2014-04-29 23:15 671 查看
一、权限的分类
Linux中,文件的权限主要有三类:
r:读权限(read) w:写权限(write),创建新文件也属于w权限
x:执行权限(excute),如果文件具有x权限,则表示文件可以发起进程;若目录具有x权限,表示目录可以使用ls-l查看,可以使用cd切换至该目录中。

针对具体的文件,权限一共有9位,前三位属主,用u表示(user);中间三位属组,用g表示(group),最后三位属于其他,用o表示(other)。因此所有的权限如下表:

字母表示二进制表示八进制表示描述
---0000无权限
--x0011执行权限
-w-0102写权限
-wx0113写和执行权限
r--1004只读权限
r-x1015读和执行权限
rw-1106读写权限
rwx1117读、写和执行权限
三位2进制数可以表示一个八进制数,因此在实际操作中,我们可以用阿拉伯数字数字来表示三类用户对文件的权限。例如:777: rwxrwxrwx // 属主u:读、写和执行;属组g:读、写和执行;其他o:读、写和执行755: rwxr-xr-x // 属主u:读、写和执行;属组g:读和执行;其他o:读和执行750: rwxr-x---// 属主u:读、写和执行;属组g:读和执行;其他o:无权限700: rwx------// 属主u:读、写和执行;属组g:无权限;其他o:无权限644: rw-r--r--// 属主u:读写;属组g:读;其他o:读640: rw-r----- // 属主u:读写;属组g:读;其他o:无权限600: rw-------// 属主u:读、写;属组g:无权限;其他o:无权限440: r--r-----// 属主u:只读;属组g:只读;其他o:无权限400: r--------// 属主u:只读;属组g:无权限;其他o:无权限
二、改变文件权限(mode):
在Linux中,改变文件权限的常用命令如下所示:
# chmod [option] MODE FILE_NAME
权限定义的方式主要有如下两种:1.同时修改三类用户的权限:采用8进制数字方式
2.修改某一类或某些类用户的权限:u,g,o, a采用的形式可以是:u=rwu=rwx,g=r--ug=r---wxugo=-w-r----xa=rwx
如改变文件message的其他权限为只读:# chmod o=r message
改变文件message的属组权限为读写:# chmod g=rw message
改变文件message三类用户的权限为只读权限:# chmod ugo=r message
改变文件message 属主属组为读写权限:# chmod ug=rw message
同时改变三类用户的权限,可以用 a(All)来表示 ugo,如改变文件message 三类用户为读写权限:# chmod a=rw message
可以用逗号分隔,来同时改变多类用户的不同权限,如改变文件message的属组为只读权限,其他用户没有任何权限:# chmod g=r,o=--- message




3.只操作某类用户的某位权限或某些权限可以使用u,g,o,a 和 +/-等符号来进行此项操作:如给message的属组加上写权限:# chmod g+w message
如给message的所有用户都加上/去掉执行权限,注意 a 可以省略:# chmod +x message# chmod -x message
如去掉message属主用户的读写权限:# chmod u-rw message



注意以上的权限修改改的是文件本身的权限,如果文件是目录,那么修改的就是目录的权限,而非目录里的文件权限。如进行以下操作:# ls /var/log# cp /etc/inittab /var/log/cups# cp /var/log/cups ./ -r# ls -l# ls -l cups就会发现目录 cups 和cups里的文件各类用户的权限是不一样的

下面我们可以分别对目录cups 和其中的文件进行权限修改: # chmod o=--- cups/ # ls -l此时可以看到cups目录的权限已经被修改了,但是输入以下命令: # ls -l cups
则会发现其中的文件权限没有受到影响


如果想要修改目录权限的同时也修改目录中文件的权限,则可以使用-R 选项进行递归修改:如同时去掉目录cups 和其中的文件inittab的全部属组权限,可以进行如下操作:# chmod -R g=--- cups/#ls -l#ls -l cups


改变文件权限时可以使用 --reference 选项。此选项的使用格式为:# chmod --reference=[PATH]/FILE_NAME1 FILE_NAME2它的作用是将 FILE_NAME2 的权限改为 FILE_NAME1 的权限,例如:# ls -ld /etc // -ld 选项是用来查看目录本身的权限的,这里查看的是目录 /etc的权限# ls -l // 查看当前目录下cups的目录权限,可以发现cups和/etc的权限不一致# chmod --reference=/etc cups //将 cups的权限改为etc的权限# ls -l // 此时可以看到 cups 和 /etc 的权限一致了

-R 和 --reference 两个选项可以一起使用,但这种情况并不常见,因为多数时候文件的权限并不相同。

本文出自 “重剑无锋 大巧不工” 博客,请务必保留此出处http://wuyelan.blog.51cto.com/6118147/1404818
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: