改变用户组:chgrp;改变文件拥有者:chown;改变文件属性:chmod
下面详细解析这3个命令:
1、chgrp
用法:chgrp [选项]... 用户组 文件...
或:chgrp [选项]... --reference=参考文件 文件...
将每个指定文件的所属组设置为指定值。
如果使用 --reference,则将每个文件的所属组设置为与指定参考文件相同。
-c, --changes类似 --verbose,但只在有更改时才显示结果
--dereference影响符号链接所指示的对象,而非符号链接本身(默认值)
-h, --no-dereference会影响符号链接本身,而非符号链接所指示的目的地
(当系统支持更改符号链接的所有者时,此选项才有用)
--no-preserve-root不特殊对待"/"(默认值)
--preserve-root不允许在"/"上递归操作
-f, --silent, --quiet去除大部份错误信息
--reference=RFILE使用参考文件的所属组,而非指定值
-R, --recursive递归处理所有的文件及子目录
-v, --verbose为处理的所有文件显示诊断信息
以下选项是在指定了 -R 选项时被用于设置如何穿越目录结构体系。
如果您指定了多于一个选项,那么只有最后一个会生效。
-H 如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-L 遍历每一个遇到的通到目录的符号链接
-P 不遍历任何符号链接(默认)
--help显示此帮助信息并退出
--version显示版本信息并退出
示例:
chgrp staff /u 将 /u 的属组更改为"staff"。
chgrp -hR staff /u 将 /u 及其子目录下所有文件的属组更改为"staff"。 以上是官方帮助文档,平时主要使用的是-R,即递归处理子文件以及目录,付实例:
1)首先要知道如何查看文件所属用户组:ls -l 命令,例如:
-rw------- 1 xyw xyw 19009993 11月 7 16:42 C++ Primer, Fifth Edition.pdf
-rw------- 1 xyw root 27616196 11月 8 10:08 test3.zip
-rw------- 1 xyw xyw 2580864 11月 7 16:41 Time.Management.-.The.Manager's.Guide.to.Effective.Meetings.-.B.J.Streibel.(McGraw-Hill).-.2003.pdf
-rw------- 1 xyw xyw 70 11月 7 16:27 virus
-rw------- 1 xyw xyw 39767 11月 7 16:27 北邮校徽.jpg 包括9列,分别为:文件属性、文件硬链接数或子目录数、文件拥有者、文件拥有者所在组、文件大小(字节)、文件创建月份、文件创建日期、文件创建时间、文件名。
(有关ls -l 详见 《ls -l 列表详解》)
2)更改单个文件用户组:chgrp xyw test3.zip
-rw------- 1 xyw xyw 19009993 11月 7 16:42 C++ Primer, Fifth Edition.pdf
-rw------- 1 xyw xyw 27616196 11月 8 10:08 test3.zip
-rw------- 1 xyw xyw 2580864 11月 7 16:41 Time.Management.-.The.Manager's.Guide.to.Effective.Meetings.-.B.J.Streibel.(McGraw-Hill).-.2003.pdf
-rw------- 1 xyw xyw 70 11月 7 16:27 virus
-rw------- 1 xyw xyw 39767 11月 7 16:27 北邮校徽.jpg 3)更改文件夹用户组:sudo chgrp -R root test
-rw------- 1 xyw root 19009993 11月 7 16:42 C++ Primer, Fifth Edition.pdf
-rw------- 1 xyw root 27616196 11月 8 10:08 test3.zip
-rw------- 1 xyw root 2580864 11月 7 16:41 Time.Management.-.The.Manager's.Guide.to.Effective.Meetings.-.B.J.Streibel.(McGraw-Hill).-.2003.pdf
-rw------- 1 xyw root 70 11月 7 16:27 virus
-rw------- 1 xyw root 39767 11月 7 16:27 北邮校徽.jpg 2、chown:更改用户所有者
用法:chown [选项]... [所有者][:[组]] 文件...
或:chown [选项]... --reference=参考文件 文件...
更改每个文件的所有者和/或所属组。
当使用 --referebce 参数时,将文件的所有者和所属组更改为与指定参考文件相同。
-c, --changes类似 verbose,但只在有更改时才显示结果
--dereference受影响的是符号链接所指示的对象,而非符号链接本身
-h, --no-dereference会影响符号链接本身,而非符号链接所指示的目的地
(当系统支持更改符号链接的所有者时,此选项才有用)
--from=当前所有者:当前所属组
只当每个文件的所有者和组符合选项所指定时才更改所
有者和组。其中一个可以省略,这时已省略的属性就不
需要符合原有的属性。
--no-preserve-root不特殊对待"/"(默认值)
--preserve-root不允许在"/"上递归操作
-f, --silent, --quiet去除大部份的错误信息
--reference=参考文件使用参考文件的所属组,而非指定值
-R, --recursive递归处理所有的文件及子目录
-v, --verbose为处理的所有文件显示诊断信息
以下选项是在指定了 -R 选项时被用于设置如何穿越目录结构体系。
如果您指定了多于一个选项,那么只有最后一个会生效。
-H 如果命令行参数是一个通到目录的符号链接,则遍历符号链接
-L 遍历每一个遇到的通到目录的符号链接
-P 不遍历任何符号链接(默认)
--help显示此帮助信息并退出
--version显示版本信息并退出
如果没有指定所有者,则不会更改。 所属组若没有指定也不会更改,但当加上
":"时 GROUP 会更改为指定所有者的主要组。所有者和所属组可以是数字或名称。
示例:
chown root /u将 /u 的属主更改为"root"。
chown root:staff /u和上面类似,但同时也将其属组更改为"staff"。
chown -hR root /u将 /u 及其子目录下所有文件的属主更改为"root"。 chown的用法类似于chgrp。举例:
1)更改单个文件所有者:sudo chown root test3.zip
-rw------- 1 xyw root 19009993 11月 7 16:42 C++ Primer, Fifth Edition.pdf
-rw------- 1 root root 27616196 11月 8 10:08 test3.zip
-rw------- 1 xyw root 2580864 11月 7 16:41 Time.Management.-.The.Manager's.Guide.to.Effective.Meetings.-.B.J.Streibel.(McGraw-Hill).-.2003.pdf
-rw------- 1 xyw root 70 11月 7 16:27 virus
-rw------- 1 xyw root 39767 11月 7 16:27 北邮校徽.jpg 2)更改文件夹所有者:sudo chown -R test
-rw------- 1 root root 19009993 11月 7 16:42 C++ Primer, Fifth Edition.pdf
-rw------- 1 root root 27616196 11月 8 10:08 test3.zip
-rw------- 1 root root 2580864 11月 7 16:41 Time.Management.-.The.Manager's.Guide.to.Effective.Meetings.-.B.J.Streibel.(McGraw-Hill).-.2003.pdf
-rw------- 1 root root 70 11月 7 16:27 virus
-rw------- 1 root root 39767 11月 7 16:27 北邮校徽.jpg 3、chmod:更改文件属性
文件属性的设置有2种方法:使用数字或者符号。
1)数字
linux文件的属性有9个,即owner/group/others组别的read/write/execute属性,即文件拥有者/文件用户组/其他组对文件的读/写/执行权限。
-rwxrwxrwx
这9个属性,三个为一组,可以使用数字表示各个属性:
r:4 w:2 x:1
同一组的三个属性需要累加,例如:-rwxr-xr--
owner=rwx=4+2+1=7
group=r-x=4+0+1=5
others=r--=4+0+0=4
所以在设置属性时,数字为754.
格式:chmod [-R] xyz 文件或目录
xyw即属性的数字。举例说明:
更改前:
-rw------- 1 xyw xyw 27616196 11月 8 10:08 test3.zip 更改test3.zip的文件属性为:-rwxrwxrwx,即777
chmod 777 test3.zip
更改后:
-rwxrwxrwx 1 xyw xyw 27616196 11月 8 10:08 test3.zip 更改test3.zip文件属性为:-rwxr--r--,即744
chmod 744 test3.zip
更改后:
-rwxr--r-- 1 xyw xyw 27616196 11月 8 10:08 test3.zip 经常使用的场景:我们平时建立的文件属性通常为-rw-rw-r--,如果想将其变成可执行文件,且不希望他人修改的话,即-rwxr-xr-x,即755。
2)符号
从上文介绍的9个属性看,分别是1)user 2)group 3)others 三组,分别使用u、g、o表示,此外,a表示全部,即全部的三组。读写属性可以写成:r、w、x。
格式:chmod u/g/o/a +(加入)/-(除去)/=(设置) r/w/x
举例:设置test3.zip的属性为:-rwxr-xr-x,即:chmod u=rwx,go=rx test3.zip (注:u=rwx,go=rx 中间不能有空格)
user:具有可读、可写、可执行权限
group和others:具有可读、可执行
更改前:
-rwxrw-rw- 1 xyw xyw 27616196 11月 8 10:08 test3.zip 更改后:
-rwxr-xr-x 1 xyw xyw 27616196 11月 8 10:08 test3.zip 设置test3.zip属性为:-rwxrw-r--,即:chmod u=rwx,g=rw,o=r test3.zip
更改后:
-rwxrw-r-- 1 xyw xyw 27616196 11月 8 10:08 test3.zip 如果不知道文件原先的属性只是想增加或除去属性,可以使用+、-
举例:
为每个用户增加对test3.zip的执行权限:chmod a+x test3.zip
更改后:
-rwxrwxr-x 1 xyw xyw 27616196 11月 8 10:08 test3.zip 除去所有人对文件test3.zip的执行权限:chmod a-x test3.zip
更改后:
-rw-rw-r-- 1 xyw xyw 27616196 11月 8 10:08 test3.zip
经常使用的场景:对一个新建的shell脚本添加执行权限:chmod u+x test.sh