1. chown命令介绍
Linux/Unix 属于多用户多任务操作系统,所有的文件皆有拥有者。
使用chown 命令可以将指定的文件的拥有着改为指定的用户和组。
chown命令来自于英文词组”Change owner“的缩写,其功能是用于改变文件或目录的用户和用户组信息。
管理员可以改变一切文件的所属信息,而普通用户只能改变自己文件的所属信息
2. 语法格式及常用选项
使用–help来参看具体的参数和格式:
[root@doc ~]# chown --help
从上面的代码实例中可以看到,常用的几个参数如下:
其中最常用的是 -R参数,对目录及目录下所有文件进行变更。
3. 参考案例
3.1 改变指定文件的属组和属主
创建一个文件a.txt,同时把属组和属主改为 lp用户
[root@mufenggrow ~]# mkdir test
[root@mufenggrow ~]# cd test
[root@mufenggrow test]# touch a.txt
[root@mufenggrow test]# ll a.txt
-rw-r--r--. 1 root root 0 1月 22 14:33 a.txt
[root@mufenggrow test]# chown lp:lp a.txt
[root@mufenggrow test]# ll a.txt
-rw-r--r--. 1 lp lp 0 1月 22 14:33 a.txt
使用ll查看发现a.txt的所有者和所有组变成了lp
3.2 改变指定文件的所属主与所属组,并显示过程
-c 参数 like verbose but report only when a change is made
在更改时显示详细的报告
set verbos 设置打印信息
[root@mufenggrow test]# chown -c root:root a.txt
changed ownership of "a.txt" from lp:lp to root:root
[root@mufenggrow test]# ll a.txt
-rw-r--r--. 1 root root 0 1月 22 14:33 a.txt
[root@mufenggrow test]#
这里的 ownership 指的是所有权
3.3 改变指定目录及其内所有子文件的所属主与所属组
当一个目录中有多个文件的时候,我们想要改变文件及文件内部的所有文件的权限,就会用到 -R参数。
如下: 我们先创建一个目录,在目录里创建几个文件,然后对目录修改属组和属主,并加上-R参数。
[root@mufenggrow test]# mkdir a
[root@mufenggrow test]# cd a
[root@mufenggrow a]# touch {1..5}.txt
[root@mufenggrow a]# ll
总用量 0
-rw-r--r--. 1 root root 0 1月 22 14:40 1.txt
-rw-r--r--. 1 root root 0 1月 22 14:40 2.txt
-rw-r--r--. 1 root root 0 1月 22 14:40 3.txt
-rw-r--r--. 1 root root 0 1月 22 14:40 4.txt
-rw-r--r--. 1 root root 0 1月 22 14:40 5.txt
[root@mufenggrow a]# cd ..
[root@mufenggrow test]# chown -R lp:lp a
[root@mufenggrow test]# cd a
[root@mufenggrow a]# ll
总用量 0
-rw-r--r--. 1 lp lp 0 1月 22 14:40 1.txt
-rw-r--r--. 1 lp lp 0 1月 22 14:40 2.txt
-rw-r--r--. 1 lp lp 0 1月 22 14:40 3.txt
-rw-r--r--. 1 lp lp 0 1月 22 14:40 4.txt
-rw-r--r--. 1 lp lp 0 1月 22 14:40 5.txt
可以看到,测试结果与我们预想的一样。
3.4 只修改文件所属组为mufeng组
我们已经知道,想要修改属组和属主,可以使用 lp:lp的形式
如果只想修改属组怎么办呢?
这时候会用到:用户名的方式, 比如本题中我们只设置沐风组,就可以用:mufeng
以下是测试:
[root@mufenggrow a]# ls
1.txt 2.txt 3.txt 4.txt 5.txt
[root@mufenggrow a]# groupadd mufeng
[root@mufenggrow a]# chown :mufeng 1.txt
[root@mufenggrow a]# ll 1.txt
-rw-r--r--. 1 lp mufeng 0 1月 22 14:40 1.txt
[root@mufenggrow a]#
除了:mufeng这种用法外,我们也可以使用. 的形式来修改属组。
[root@mufenggrow a]# ll 2.txt
-rw-r--r--. 1 lp lp 0 1月 22 14:40 2.txt
[root@mufenggrow a]# chown .mufeng 2.txt
[root@mufenggrow a]# ll 2.txt
-rw-r--r--. 1 lp mufeng 0 1月 22 14:40 2.txt
[root@mufenggrow a]#
3.5 只修改属主
只修改属主,可以直接写属主的名字,比如:
我们给3.txt的属主改为 mufeng,但不改变属组:
[root@mufenggrow a]# useradd mufeng -g mufeng
[root@mufenggrow a]# ll 3.txt
-rw-r--r--. 1 lp lp 0 1月 22 14:40 3.txt
[root@mufenggrow a]# chown mufeng 3.txt
[root@mufenggrow a]# ll 3.txt
-rw-r--r--. 1 mufeng lp 0 1月 22 14:40 3.txt
[root@mufenggrow a]#
这里需要注意,因为我们一开始先创建的mufeng组,当你创建mufeng用户的时候需要用-g参数指定数组,否则会报错。