chmod命令

来源:互联网 发布:淘宝店铺分享链接生成 编辑:程序博客网 时间:2024/06/18 18:37
chmod
命令功能:改变文件或文件夹的权限属性,支持字符标记法和数字标记法来设置权限模式。
命令语法:chmod  【选项】【权限模式】【文件或目录】
选项
-R :大写R,以递归的方式改变制定目录,以及目录下所有子目录和文件的权限。
-c:显示文件权限的变化。
-v:显示命令执行的详细信息。

--reference=<模板文件>:将制定文件更改为模板文件相同的权限。

示例1:数字标记法更改文件权限

说明:数字标记法采用4个八进制的数字进行表示权限标识,如chmod   6777  data.txt ,每一个八进制数都可以转换成3位的二进制数,分别代表不同的含义。
第一个八进制转换成的3位二进制分别为suid权限,sgid权限,sticky粘滞位。
第二个八进制转化成的3位二进制分别为文件所属用户的读权限、写权限、执行权限。
第三个八进制转化成的3位二进制分别为文件所属组的用户的读权限、写权限、执行权限。
第四个八进制转化成的3位二进制分别为其他所有用户的读权限、写权限、执行权限。

dyp930@ubuntu:~/work$ chmod 677 example.txt //677=110111111,对应于rw-rwxrwx权限dyp930@ubuntu:~/work$ ls -lrttotal 0-rw-rwxrwx 1 dyp930 dyp930 0 Jun 27 06:07 example.txtdyp930@ubuntu:~/work$ chmod 7000 example.txt //此处的权限模式是4位,从而设置了相应的suid权限,sgid权限,sticky粘滞位的设置。dyp930@ubuntu:~/work$ ls -lrttotal 0---S--S--T 1 dyp930 dyp930 0 Jun 27 06:07 example.txt

示例2:字符标记法更改文件权限
说明:字符标记法的格式为[ugoa][+-=][rwxXstugo],分别为操作的三要素,即对谁做,怎么做,做什么,具体如下:
[ugoa]表示操作哪些用户的权限,u代表文件所属用户的权限,g代表文件所属组用户的权限,o代表其他用户的权限,a代表所有用户的权限。
[+-=]表示对于权限的操作,+代表在原来的权限基础上增加权限,- 代表删除权限,=表示不考虑原有权限,直接赋予新的权限
[rwxXstugo]代表具体的权限内容,rwx为读写执行,X代表,s表示设置suid、sgid,只能与u、g连用,如u+s,g-s等。t代表粘滞位,u表示设置为与文件所属用户一样的权限,同理,g和o分表代表设置为与所属组、其他用户一样的权限。
dyp930@ubuntu:~/work$ chmod 642 example.txt dyp930@ubuntu:~/work$ ls -lrttotal 0-rw-r---w- 1 dyp930 dyp930 0 Jun 27 06:07 example.txtdyp930@ubuntu:~/work$ chmod g=u example.txt //将组用户对该文件的权限设置和所属用户一样dyp930@ubuntu:~/work$ ls -lrttotal 0-rw-rw--w- 1 dyp930 dyp930 0 Jun 27 06:07 example.txtdyp930@ubuntu:~/work$ chmod o=u example.txt //将其他用户对该文件的权限设置和所属用户一样dyp930@ubuntu:~/work$ ls -lrttotal 0-rw-rw-rw- 1 dyp930 dyp930 0 Jun 27 06:07 example.txtdyp930@ubuntu:~/work$ dyp930@ubuntu:~/work$ chmod a+X example.txt //大写X,代表赋予执行权限前,看是否是目录或者可执行文件,否则添加不了执行权限。dyp930@ubuntu:~/work$ ls -lrttotal 0-rw-rw-rw- 1 dyp930 dyp930 0 Jun 27 06:07 example.txtdyp930@ubuntu:~/work$ dyp930@ubuntu:~/work$ ls -lrttotal 0-rwxr-x-w- 1 dyp930 dyp930 0 Jun 27 06:07 example.shdyp930@ubuntu:~/work$ chmod u-x,g+w,o=rwx example.sh //文件所属用户减去执行权限,所属组用户增加写权限,其他用户置为读写执行。dyp930@ubuntu:~/work$ ls -lrttotal 0-rw-rwxrwx 1 dyp930 dyp930 0 Jun 27 06:07 example.sh
示例3:递归更改目录、子目录及文件的权限。
dyp930@ubuntu:~/work$ ls -lrttotal 4-rw-rwxrwx 1 dyp930 dyp930    0 Jun 27 06:07 example.shdr-xr--r-- 2 dyp930 dyp930 4096 Jun 27 06:52 tempdyp930@ubuntu:~/work$ cd tempdyp930@ubuntu:~/work/temp$ ls -lrttotal 0-rw-rw-r-- 1 dyp930 dyp930 0 Jun 27 06:52 a.extdyp930@ubuntu:~/work/temp$ cd ..dyp930@ubuntu:~/work$ chmod -R 744 temp/   //递归更改目录及子目录、文件的权限。dyp930@ubuntu:~/work$ ls -lrttotal 4-rw-rwxrwx 1 dyp930 dyp930    0 Jun 27 06:07 example.shdrwxr--r-- 2 dyp930 dyp930 4096 Jun 27 06:52 tempdyp930@ubuntu:~/work$ cd tempdyp930@ubuntu:~/work/temp$ ls -lrttotal 0-rwxr--r-- 1 dyp930 dyp930 0 Jun 27 06:52 a.extdyp930@ubuntu:~/work/temp$ 

示例4:根据模板文件更改权限。

dyp930@ubuntu:~/work/temp$ ls -lrttotal 0-rw-rw-r-- 1 dyp930 dyp930 0 Jun 27 06:58 b.txt-r----x--x 1 dyp930 dyp930 0 Jun 27 07:00 a.txtdyp930@ubuntu:~/work/temp$ chmod --reference=b.txt a.txt  //将b.txt文件的权限属性作为模板,更改a.txt文件。dyp930@ubuntu:~/work/temp$ ls -lrttotal 0-rw-rw-r-- 1 dyp930 dyp930 0 Jun 27 06:58 b.txt-rw-rw-r-- 1 dyp930 dyp930 0 Jun 27 07:00 a.txtdyp930@ubuntu:~/work/temp$ 

示例5:-c 和 -v 选项的作用。

dyp930@ubuntu:~/work/temp$ chmod -c u+x b.txtmode of ‘b.txt’ changed from 0664 (rw-rw-r--) to 0764 (rwxrw-r--)//详细指出了权限的变化。dyp930@ubuntu:~/work/temp$ ls -lrttotal 0-rwxrw-r-- 1 dyp930 dyp930 0 Jun 27 06:58 b.txt-rw-rw-r-- 1 dyp930 dyp930 0 Jun 27 07:00 a.txtdyp930@ubuntu:~/work/temp$ chmod -v u+x a.txtmode of ‘a.txt’ changed from 0664 (rw-rw-r--) to 0764 (rwxrw-r--)//貌似没有区别...dyp930@ubuntu:~/work/temp$ 


注:关于suid、sgid、sticky的解释,后续补充。