首页 > 代码库 > chmod 命令

chmod 命令

chmod命令

chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。 权限范围的表示法如下:

u User,即文件或目录的拥有者;

g Group,即文件或目录的所属群组;

o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;

a All,即全部的用户,包含拥有者,所属群组以及其他用户;

r 读取权限,数字代号为“4”;

w 写入权限,数字代号为“2”;

x 执行或切换权限,数字代号为“1”;

- 不具任何权限,数字代号为“0”;

s 特殊功能说明:变更文件或目录的权限。

语法

chmod (选项) (参数)

选项

-c或--changes:效果类似“-v”参数,但仅回报更改的部分;

-f或--quiet或--silent:不显示错误信息;

-R或--recursive:递归处理,将指令目录下的所有文件及子目录一并处理;

-v或--verbose:显示指令执行过程;

--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;

<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;

<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;

参数

权限模式:指定文件的权限模式;

文件:要改变权限的文件。

知识扩展和实例

Linux用 户分为:拥有者、组群(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信 息, 都是记录在/etc/passwd文件中。每个人的密码则是记录在/etc/shadow文件下。 此外,所有的组群名称记录在/etc/group內!

linux文件的用户权限的分析图

技术分享

例:rwx rw- r--

r=读取属性  //值=4

w=写入属性  //值=2

x=执行属性  //值=1

chmod u+x,g+w f01  //为文件f01设置自己可以执行,组员可以写入的权限

chmod u=rwx,g=rw,o=r f01

chmod 764 f01

chmod a+x f01  //对文件f01的u,g,o都设置可执行属性

文件的属主和属组属性设置

chown user:market f01  //把文件f01给uesr,添加到market组

ll -d f1 查看目录f1的属性

来自: http://man.linuxde.net/chmod

总结:

chmod 用来更改文件的权限

rwx 对应三位二进制数,从000到111,1表示该位置上有权限,0表示该位置上没有权限,用-表示0

r=4 w=2 x=1

如:rwx = 7 可读、可写、可执行

rw- = 6 可读、可写、不可执行

r-x = 5 可读、不可写、可执行

r-- = 4 可读、不可写,不可执行

-wx = 3 不可读、可写、可执行

-w- = 2 不可读、可写、不可执行

--x = 1 不可读、不可写、可执行

chmod 744 1.txt 将文件1.txt权限设为属主可读可写可执行,属组只可读,其他人只可读

等价于

chmod u=rwx,g=r--,o=r-- 1.txt

ls -l 1.txt

chmod u-x 1.txt 去掉1.txt属主的执行权限

chmod u+x,g+w,o-r 1.txt 加上1.txt属主的执行权限,加上属组的写权限,去掉其他人的读权限

chmod a+r 1.txt 为所有人加上读权限

mkdir 111/234

touch 111/234/22.txt

ls 111

ls -l 111

ls -l 111/234

chmod -R 700 111 将111目录及下面所有内容的权限设为700,-R继承

ls -l 111

ls -l 111/234

umask 用来规定默认目录和文件的权限,掩码,可以理解成默认不使用的权限

0022 通常只用后三位022:--- -w- -w-,默认数组和其他人不使用写权限

目录的默认权限 777-022=755

文件的默认权限 666-022=644

umask 011 更改umask为011 ,改为默认数组和其他人不使用执行权限

mkdir 1112

ls -ld 1112

touch -l 12.txt

ls -l 12.txt

所有目录必须有x权限


chmod 命令