修改文件的所属用户组 chgrp

改变一个文件的用户组真的是很简单,直接以chgrp来改变即可,这个命令就是change group的简称。不过,请记得,要改变的组名必须要在/etc/group文件内存在才行,否则就会显示错误

用法:

chgrp [-R] dirname/filename…
-R:递归处理,将指令目录下的所有文件及子目录一并处理
-v:显示指令执行过程
-c:效果类似”-v”参数,但仅回报更改的部分
-f:不显示绝大多数的错误信息
–version 打印版本并退出
–help 展示帮助并退出

以下参数描述了怎么遍历层级目录,只有和-R同时使用才奏效。当果指定了多个参数,如有最后一个奏效
-H 如果命令行参数是一个指向目录的符号链接,则遍历他,而子目录确不遍历
-L 遍历所有遇到的指向目录的符号链接
-P 不遍历任何符号链接(默认)

以下演示都是以root身份
演示群组名不在/etc/group的错误情况

sh-3.2# chgrp jianglei2 test
chgrp: jianglei2: illegal group name

打印出指令执行过程

[root@localhost jianglei]# chgrp root -v testchgrp
changed group of 'testchgrp' from jianglei2 to root

[root@localhost jianglei]# chgrp root -v testchgrp
group of 'testchgrp' retained as root

递归的更改目录的群组

sh-3.2# chgrp -Rv staff  testchgrp
testchgrp/log1.txt
testchgrp/log2.txt
testchgrp/log3.txt
testchgrp

改变文件所有者:chown

既然改变用户组是change group,那么改变所有者就是change owner。命令为chown

要注意的是,用户必须是已经存在于系统中的帐号,也就是/etc/passwd这个文件中有记录的用户名称才能改变

chown的用途还是挺多的,它还可以顺便直接修改用户组的名称。此外如果要边目录下的所有子目录或文件同时更改所有者的话,直接加上-R的参数即可

centos man chown对该命令的描述
chown改变每个指定文件的拥有者或用户群组。

如果仅给定了用户名或用户的ID,会用给定的用户更改给定的文件,文件的群组不会改变。

如果像user:group这样指定参数, 文件的用户群组也会改变

如果像user:这样指定参数 给定用户名,接冒号而没指定群组。指定文件的拥有者会改变成user,指定文件的群组会变成user的登陆群组

如果像:group这样指定参数,没有指定user 仅指定了:后接group。 chown表现的会跟chgrp一样。

如果仅指定了: 或者要更改的文件没有指定。那么既不会改变文件的拥有者也不会改变群组。

用法

chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [OPTION]… –REFERENCE=RFILE FILE…
-c
-f
-v
-dereference
-h
-R

示例

改变一个文件的拥有者

sh-3.2# mkdir testchown
sh-3.2# ls -al | grep testchown
drwxr-xr-x    2 root      staff       68  5 28 23:44 testchown
sh-3.2# chown -v jianglei testchown
testchown
sh-3.2# ls -al | grep testchown
drwxr-xr-x    2 jianglei  staff       68  5 28 23:44 testchown

改变一个文件的拥有者和群组

sh-3.2# chown -v jianglei:nobody testchown
testchown
sh-3.2# ls -al | grep testchown
drwxr-xr-x    2 jianglei  nobody      68  5 28 23:44 testchown

改变一个文件的群组

sh-3.2# chown :staff testchown
sh-3.2# ls -al | grep testchown
drwxr-xr-x    2 root      staff       68  5 28 23:44 testchown

文献出处

《鸟的私房菜-基础学习篇》

补充 chown的权限限制–普通用户无法将onwer改成其他用户,如root

[jianglei@localhost ~]$ chown root .bashrc_test
chown: changing ownership of '.bashrc_test':Operation not premitted

Linux/Unix是多用户多任务操作系统,所有的文件皆有其拥有者(Owner)。利用chown命令可以将文件的拥有者加以改变。一般来说,这个命令只能由系统管理者(root)使用,一般用户没有权限来改变别人文件的拥有者,也没有权限可以将自己的文件的拥有者改设为别人。只有系统管理(root)才有这样的权限
引自:百度百科