chmod命令用来改变linux系统中文件或者目录的访问权限。chmod命令有两种用法,一种是包含字母和操作符表达式的文字设定法,另一种是包含数字的数字设定法。

Linux文档的基本权限有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限,这九个权限是三个三个一组的!其中,我们既可以使用字母也可以使用数字来代表各个权限,各权限的分数对照表如下:

  • r:4

  • w:2

  • x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx—] 分数则是:

  • owner = rwx = 4+2+1 = 7
  • group = rwx = 4+2+1 = 7
  • others= — = 0+0+0 = 0

所以770是和权限[-rwxrwx—]对应的。

格式

1
2
3
4
5
$ chmod [option]... mode[,mode]... file...

$ chmod [option]... octal-mode file...

$ chmod [option]... --reference=rfile file...

常用选项

-c: 当发生改变时,报告处理信息。

-L 不输出错误信息。

-v: 显示详细处理信息。

-R: 递归处理目录以及子目录下的所有文件。

权限范围

u: 目录或文件的所有者。

g: 目录或文件当前的群组。

o: 除了目录或文件的所有者和群组之外的用户或者群组。

a: 所有的用户和群组。

示例

给群组增加执行权限

1
$ chmod g+x bootstrap

群组增加执行权限

使用=设置权限

1
$ chmod o=rwx bootstrap

直接设定权限

删除权限

删除所有用户和群组的执行权限。

1
$ chmod a-x bootstrap

删除权限权限

使用数字设定权限

1
$ chmod 770 bootstrap

使用数字设定权限

使用数字设定权限时也不一定必须填写3个数字,也可以填写一个或者两个数字。如果只填一个数字,那么设定的将会是others的权限,其他两个的权限将全部对删除。比如chmod 7 bootstrap等效于chmod 007 bootstrap。一次填写两个数字会有类似的效果,如chmod 71 bootstrap等效于chmod 071 bootstrap

1
$ chmod 7 bootstrap

填写一个数字

1
$ chmod 71 bootstrap

填写两个数字

复制另一个文档的权限

使用选项--reference完全可以复制一个文件的权限,如下列命令将会把文件“start.sh”的权限复制给“bootstrap”。

1
$ chmod --reference start.sh bootstrap

填写两个数字