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

Linux命令——chmod命令修改文件权限

2017-01-10 21:37 225 查看
[ 转载] http://blog.csdn.net/tianlesoftware/article/details/6204412

chmod 命令用的很多,但是对这个命令却不是很了解。 在网上搜了一下。 整理如下。

命令格式:

chmod [-cfvR] [–help] [–version] mode file…

查看帮助:

[root@qs-wg-db2 ~]# chmod --help


Usage: chmod [OPTION]… MODE[,MODE]… FILE…

or: chmod [OPTION]… OCTAL-MODE FILE…

or: chmod [OPTION]… –reference=RFILE FILE…

Change the mode of each FILE to MODE.

-c, –changes like verbose but report only when a change is made

–no-preserve-root do not treat /’specially (the default)

–preserve-root fail to operate recursively on `/

-f, –silent, –quiet suppress most error messages

-v, –verbose output a diagnostic for every file processed

–reference=RFILE use RFILE’s mode instead of MODE values

-R, –recursive change files and directories recursively

–help display this help and exit

–version output version information and exit

Each MODE is of the form `[ugoa]*(-+=)+’.

Report bugs to bug-coreutils@gnu.org.

[root@qs-wg-db2 ~]#


参数说明:

1. -cfvR 部分

-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更), 这个-R 用的还是很多的。


2. Mode 部分

这部分可以分成如下3块: [who] operator [permission]

`[ugoa]*(-+=)+’.

who的含义是:

u 文件属主权限
g 同组用户权限
o 其它用户权限
a 所有用户(包括以上三种)


operator的含义:

+ 增加权限
- 取消权限
=  唯一设定权限


permission的含义:

r 读权限
w 写权限
x 执行权限
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
s 文件属主和组id
l 给文件加锁,使其它用户无法访问


如: chmod a+x

3. 示例:

(1)将档案 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt


(2)将档案 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt


(3)将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt


(4)将 ex1.py 设定为只有该档案拥有者可以执行 :

chmod u+x ex1.py


(5)将目前目录下的所有档案与子目录皆设为任何人可读取 :

chmod -R a+r *


(6)收回所有用户的对file1的执行权限

chmod a-x file1


4. 使用数字来赋权

4.1 先看一下文件的权限格式

[root@qs-wg-db2 scripts]# ll


total 20

-rw-r–r– 1 Oracle oinstall 0 Feb 24 00:00 alertlogbyday.log

-rwxr-xr-x 1 oracle oinstall 430 Feb 20 01:10 alertlogbyday.sh

-rwxr-xr-x 1 oracle oinstall 7 Feb 24 05:00 del_st_arch.log

-rwxr-xr-x 1 oracle oinstall 648 Feb 19 00:51 del_st_archive.sh

-rwxr-xr-x 1 oracle oinstall 9 Feb 24 05:00 max_sn.log

drwxr-xr-x 3 root root 4096 Feb 23 23:40 pymonitor

ll的结果返回七列,分别表示如下含义:

第一栏  [文件属性]
第二栏  [文件数]
第三栏  [拥有者]
第四栏  [所有者群组]
第五栏  [大小]
第六栏  [建档日期]
第七栏  [档名]


4.1.1 第一栏 [文件属性]

包括文件的类型和文件的权限。这块共有十个字段,如:drwxr-xr-x,

我们把这10个列分成四块:[d] [rwx] [r-x] [r-x]

第一块(也就是第一列):用来表示这个文件的类型,有如下值:
(1)[ d ]则是目录,我这里的是d,表示的是一个目录
(2)[ - ]则是文件;
(3)[ l ]则表示为连结档(link file);
(4)[ b ]则表示为装置文件里面的可供储存的接口设备;
(5)[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标。
第二块(第 2到4 列):表示文件拥有者的权限。
第三块(第 5到7 列):表示拥有者同组人的权限。
第四块(第 8到10 列):表示是非拥有者组人的权限。
解释:这些权限均有[rwx] 三个参数表示,而且分别对应不同的位置。每块由3个列组成,每列对应一个值。 [ r ]代表可读、[ w ]代表可写、[ x ]代表可执行。
举例: 如果拥有者只有只读的权限,那么第2到4列就是[r--],有读写的权限就是[rw-],有读写和执行的权利就是[rwx].


4.1.2 其它栏



4.2 使用数字赋权

在4.1 中了解准备知识之后,就可以使用数字赋权了。 每块用户有3个权限[rwx]. 他们对应数字:

r-->4
w-->2
x-->1


使用数字赋权的命令格式如下:

chmod abc filename


其中的abc 分别代表3个数字,并且分别对应问个不同的属组。 即:

数字a 对应 第2到4位,表示拥有者的权限。
数字b 对应 第5到7位,表示同组用户的权限。
数字c 对应第8到10位,表示其他组的权限。

rwx 对应4,2,1. 那么只读的权限用4表示[r--],读写用6(4+2)表示[rw-],写加执行用7(4+2+1)表示[rwx]。 只读加执行用5(4+1)表示[r-x]。


示例:

chmod 755 file1
chmod 777 file1 <==> chmod a=rwx file
chmod 771 file  <==> chmod ug=rwx,o=x file
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  chmod命令