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

欢迎使用CSDN-markdown编辑器

2016-12-06 12:10 399 查看
chown、chgrp命令实例:修改文件所有者和用户组

2015-03-31 09:53 刘艳涛 清华大学出版社 字号:T | T

一键收藏,随时查看,分享好友!

《Linux Shell命令行及脚本编程实例详解》第3章常用Shell(Bash)命令,在这一章,我们将学习一些常用的Shell命令,应用好这些命令,将使你在Linux下执行一些任务具有事半功倍的效果。本节为大家介绍chown、chgrp命令实例:修改文件所有者和用户组。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

3.3.3 chown、chgrp命令实例:修改文件所有者和用户组

chown命令用于修改文件或目录的所有者和用户组信息。其语法如下所示:

$ chown [OPTION]… [OWNER][:[GROUP]] FILE

比如,我们将文件example.sh的所有者修改为root:

ls -l example.sh

-rw-rw-r– 1 yantaol yantaol 0 Sep 10 18:40 example.sh

chown root example.sh

ls -l example.sh

-rw-rw-r– 1 root yantaol 0 Sep 10 18:40 example.sh

注意:当前的命令行提示符是“#”号,表示当前用户账号是root。

将文件example.sh的用户组也修改为root:

chown :root example.sh

ls -l example.sh

-rw-rw-r– 1 root root 0 Sep 10 18:40 example.sh

同时修改文件example.sh的所有者和用户组:

chown yantaol:yantaol example.sh

ls -l example.sh

-rw-rw-r– 1 yantaol yantaol 0 Sep 10 18:40 example.sh

修改软链接文件的所有者和用户组信息,我们看一下会有什么样的结果:

ls -l tmpfile_symlnk

lrwxrwxrwx 1 root root 7 Sep 11 11:33 tmpfile_symlnk -> tmpfile

ls -l tmpfile

-rw-r–r– 1 root root 0 Sep 11 11:33 tmpfile

chown yantaol:yantaol tmpfile_symlnk

ls -l tmpfile_symlnk

lrwxrwxrwx 1 root root 7 Sep 11 11:33 tmpfile_symlnk -> tmpfile

ls -l tmpfile

-rw-r–r– 1 yantaol yantaol 0 Sep 11 11:33 tmpfile

注意:默认情况下,当你使用chown命令修改软链接文件时,它实际修改的是软链接所指向的文件。

使用-h选项,可以强制地修改软链接的所有者和用户组信息,而不是修改软链接所指向的文件的所有者和用户组信息:

ls -l tmpfile_symlnk

lrwxrwxrwx 1 root root 7 Sep 11 11:33 tmpfile_symlnk -> tmpfile

ls -l tmpfile

-rw-r–r– 1 yantaol yantaol 0 Sep 11 11:33 tmpfile

chown -h yantaol:yantaol tmpfile_symlnk

ls -l tmpfile_symlnk

lrwxrwxrwx 1 yantaol yantaol 7 Sep 11 11:33 tmpfile_symlnk -> tmpfile

ls -l tmpfile

-rw-r–r– 1 yantaol yantaol 0 Sep 11 11:33 tmpfile

使用–from选项,可以仅在文件或目录的当前的所有者或用户组匹配所指定的用户或组时,才修改此文件或目录的所有者或用户组:

ls -l tmpfile

-rw-r–r– 1 yantaol yantaol 0 Sep 11 11:33 tmpfile

chown –from=guest root:root tmpfile

ls -l tmpfile

-rw-r–r– 1 yantaol yantaol 0 Sep 11 11:33 tmpfile

chown –from= yantaol root:root tmpfile

ls -l tmpfile

-rw-r–r– 1 root root 0 Sep 11 11:33 tmpfile

chown –from=:root yantaol:yantaol tmpfile

ls -l tmpfile

-rw-r–r– 1 yantaol yantaol 0 Sep 11 11:33 tmpfile

使用-R选项,chown命令可以递归地修改目录下的文件及其子目录的所有者和用户组信息。比如,修改/root目录下的所有文件和子目录的所有者和用户组信息:

chown -R root:root /root

如果使用chown命令递归地修改指向某个目录的软链接的所有者和用户组,让我们来看一下会发生什么情况:

ls -l linux_symlnk

lrwxrwxrwx 1 root root 5 Sep 11 14:40 linux_symlnk -> linux

ls -dl linux

drwxr-xr-x 5 root root 4096 Sep 11 14:40 linux

ls -l linux_symlnk/

total 12

drwxr-xr-x 2 root root 4096 Sep 11 14:40 lib

drwxr-xr-x 2 root root 4096 Sep 11 14:40 os

drwxr-xr-x 2 root root 4096 Sep 11 14:40 src

chown -R yantaol:yantaol linux_symlnk

ls -l linux_symlnk

lrwxrwxrwx 1 yantaol yantaol 5 Sep 11 14:40 linux_symlnk -> linux

ls -dl linux

drwxr-xr-x 5 root root 4096 Sep 11 14:40 linux

ls -l linux_symlnk/

total 12

drwxr-xr-x 2 root root 4096 Sep 11 14:40 lib

drwxr-xr-x 2 root root 4096 Sep 11 14:40 os

drwxr-xr-x 2 root root 4096 Sep 11 14:40 src

我们看到软链接的所有者和用户组已被修改,但是软链接所指向的目录并没有被修改。这是因为默认情况下,chown命令不能横越软链接。如果想递归地修改软链接所指向的目录的所有者或用户组,需要使用-H选项:

chown -R -H yantaol:yantaol linux_symlnk

chgrp命令与chown命令类似,但chgrp命令只用于修改文件或目录的用户组(不能修改所有者)。其语法如下所示:

$ chgrp [OPTION]… GROUP FILE…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux shell