chown 改变文件目录的所有者
功能:chown命令把文件目录的所有者变更为指定的所有者或用户组(群组)。chown是change owner的缩写。
例如root用户把自己的一个文件拷贝给用户xu,为了让用户xu能够存取这个文件,root用户应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件。语法:chown [选项] [所有者][:用户组] 文件
短选项 长选项 含义 -c --changes 当发生改变时输出调试信息。仅显示更改的信息。 -f --quite或--silen 不显示错误信息 -R --recursive 递归处理,将指定目录下的所有文件及子目录一并处理 -v --verbose 显示指令执行过程 -h --no-dereference 只对符号连接的文件作修改,而不更动其他任何相关文件 --dereference 指明对符号链接所指的文件进行操作,而不是符号链接本身 --reference=<文件或者目录> 参考文件或目录。
把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同--from=<当前用户:当前群组> 有当前用户和群组跟指定的用户和群组相同时才进行改变 - 普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
- 设置属主用户名称或用户识别码(用户ID)皆可,设置群组则用群组名称或群组识别码(组ID)。
- 文件是以空格分开的要改变权限的文件列表,支持通配符。
如果仅仅给定“所有者”,执行此语句后,仅仅改变选定文件的拥有者,文件的组是没有改变的。 liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 liujl liujl 0 2012-06-20 09:31 mytest.txt liujl@liujl-Rev-1-0:~/mycode/TEST$
sudo chown juanzhang mytest.txt
[sudo] password for liujl: liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 juanzhang liujl 0 2012-06-20 09:31 mytest.txt 如果“所有者:组”,执行此语句后,用户和组拥有者都会发生改变注意:在:两边不要有空格liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 liujl liujl 0 2012-06-20 09:31 mytest.txt liujl@liujl-Rev-1-0:~/mycode/TEST$sudo chown liujl:liujl mytest.txt
[sudo] password for liujl: liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 liujl liujl 0 2012-06-20 09:31 mytest.txt 如果“所有者:”,但后面没有组名,系统会改变文件的拥有者及此拥有组所在的组。 liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 liujl liujl 0 2012-06-20 09:31 mytest.txt liujl@liujl-Rev-1-0:~/mycode/TEST$sudo chown juanzhang:mytest.txt
[sudo] password for liujl: liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 juanzhang juanzhang 0 2012-06-20 09:31 mytest.txt 如果“:组”,但是没有拥有者,仅有组名被修改 liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 juanzhang juanzhang 0 2012-06-20 09:31 mytest.txt iujl@liujl-Rev-1-0:~/mycode/TEST$sudo chown :liujl mytest.txt
liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-rw-r-- 1 juanzhang liujl 0 2012-06-20 09:31 mytest.txt如果仅“:”或者整个操作数为空,文件拥有者或者组名都不会改变。
liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l
总用量 0
-rw-rw-r-- 1 juanzhang liujl 0 2012-06-20 09:31 mytest.txt
liujl@liujl-Rev-1-0:~/mycode/TEST$chown : mytest.txt
liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l
总用量 0
-rw-rw-r-- 1 juanzhang liujl 0 2012-06-20 09:31 mytest.txt整个操作数为空,会报错:
liujl@liujl-Rev-1-0:~/mycode/TEST$ chown mytest.txt
chown: "mytest.txt" 后缺少操作数改变拥有者和群组[root@localhost test6]# ll ---xr--r-- 1 root users 302108 11-30 08:39 linklog.log ---xr--r-- 1 root users 302108 11-30 08:39 log2012.log -rw-r--r-- 1 root users 61 11-30 08:39 log2013.log [root@localhost test6]#chown mail:mail log2012.log
[root@localhost test6]# ll ---xr--r-- 1 root users 302108 11-30 08:39 linklog.log ---xr--r-- 1 mail mail 302108 11-30 08:39 log2012.log -rw-r--r-- 1 root users 61 11-30 08:39 log2013.log [root@localhost test6]#改变文件拥有者和群组[root@localhost test6]# ll 总计 604 ---xr--r-- 1 root users 302108 11-30 08:39 linklog.log ---xr--r-- 1 mail mail 302108 11-30 08:39 log2012.log -rw-r--r-- 1 root users 61 11-30 08:39 log2013.log [root@localhost test6]#chown root: log2012.log
[root@localhost test6]# ll 总计 604 ---xr--r-- 1 root users 302108 11-30 08:39 linklog.log ---xr--r-- 1 root root 302108 11-30 08:39 log2012.log -rw-r--r-- 1 root users 61 11-30 08:39 log2013.log [root@localhost test6]#改变文件群组[root@localhost test6]# ll 总计 604 ---xr--r-- 1 root users 302108 11-30 08:39 linklog.log ---xr--r-- 1 root root 302108 11-30 08:39 log2012.log -rw-r--r-- 1 root users 61 11-30 08:39 log2013.log [root@localhost test6]#chown :mail log2012.log
[root@localhost test6]# ll 总计 604 ---xr--r-- 1 root users 302108 11-30 08:39 linklog.log ---xr--r-- 1 root mail 302108 11-30 08:39 log2012.log -rw-r--r-- 1 root users 61 11-30 08:39 log2013.log改变指定目录以及其子目录下的所有文件的拥有者和群组[root@localhost test]# ll drwxr-xr-x 2 root users 4096 11-30 08:39 test6 [root@localhost test]#chown -R -v root:mail test6
“test6/log2014.log” 的所有者已更改为 root:mail “test6/linklog.log” 的所有者已更改为 root:mail “test6/log2015.log” 的所有者已更改为 root:mail “test6/log2013.log” 的所有者已更改为 root:mail “test6/log2012.log” 的所有者已保留为 root:mail “test6/log2017.log” 的所有者已更改为 root:mail “test6/log2016.log” 的所有者已更改为 root:mail “test6” 的所有者已更改为 root:mail [root@localhost test]# ll drwxr-xr-x 2 root mail 4096 11-30 08:39 test6 [root@localhost test]#cd test6
[root@localhost test6]# ll 总计 604 ---xr--r-- 1 root mail 302108 11-30 08:39 linklog.log ---xr--r-- 1 root mail 302108 11-30 08:39 log2012.log -rw-r--r-- 1 root mail 61 11-30 08:39 log2013.log -rw-r--r-- 1 root mail 0 11-30 08:39 log2014.log -rw-r--r-- 1 root mail 0 11-30 08:39 log2015.log -rw-r--r-- 1 root mail 0 11-30 08:39 log2016.log -rw-r--r-- 1 root mail 0 11-30 08:39 log2017.log此命令用的最多的地方是,当我们使用mv或者cp拷贝给其他人的时候,这些文件的拥有者和组名没有改变,所以需要修改。
liujl@liujl-Rev-1-0:/usr$ ls -l|grep mytest2.txt -rw-r--r-- 1 root root 0 2012-06-20 13:50 mytest2.txt liujl@liujl-Rev-1-0:/usr$
sudo mv mytest2.txt /home/liujl/mycode/TEST/
liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-r--r-- 1 root root 0 2012-06-20 13:50 mytest2.txt现在mytest2.txt已经mv到liujl用户下了,但是当修改的时候是不允许的,从上句可以看出,还是属于root root ,这就需要chown命令了。liujl@liujl-Rev-1-0:~/mycode/TEST$sudo chown liujl:liujl mytest2.txt
[sudo] password for liujl: liujl@liujl-Rev-1-0:~/mycode/TEST$ ls -l 总用量 0 -rw-r--r-- 1 liujl liujl 0 2012-06-20 13:50 mytest2.txt