当我们要改变一个文件的属组,我们所使用的用户必须是该文件的属主而且同时是目标属组成员,或超级用户,这种情况的话,只有超级用户的才能改变文件的属主。
在Linux操作系统的美国服务器当中,Chown命令是Linux美国服务器系统最常用到的命令之一,它是用于改变文件或目录的访问权限。今天小编就简单介绍下Chown命令的用法,希望对大家有所帮助。
chown 语法:
#chown [选项]… [所有者][:[组]] 文件…
举例:将example.txt文件的属主改为linuxsirorg用户;
[root@localhost ~]# ls -l example.txt
-rw-r–r– 1 root root 0 04-24 22:37 example.txt
[root@localhost ~]# ls -l example.txt
-rw-r–r– 1 linuxsirorg root 0 04-24 22:37 example.txt
[root@localhost ~]# chown beinan:root example.txt
[root@localhost ~]# ls -l example.txt
-rw-r–r– 1 beinan root 0 04-24 22:37 example.txt
chown 所接的新的属主和新的属组之间应该以.或:连接,属主和属组之一可以为空。如果属主为空,应该是 :属组 ;如果属组为空就就不必需要.或:了。
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 root root 29 04-22 21:02 sun.txt
[root@localhost ~]# chown beinan sun.txt 注:把sun.txt文件的属主改为beinan;
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 beinan root 29 04-22 21:02 sun.txt
[root@localhost ~]# chown :beinan sun.txt 注:把sun.txt文件的属组改为beinan
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 beinan beinan 29 04-22 21:02 sun.txt
[root@localhost ~]# chown root:linuxsir sun.txt 注:把sun.txt的属主改为root,把改组改为linuxsir用户组;
[root@localhost ~]# ls -l sun.txt
-rwxr-xr-x 2 root linuxsir 29 04-22 21:02 sun.txt
此外,chown也提供了-R参数,这个参数对目录改变属主和属组极为有用,大家可以通过加-R参数来改变某个目录下的所有文件到新的属主或属组;
[root@localhost ~]# ls -ld mydir/ 注:查看mydir目录的属性
drwxr-xr-x 2 root root 4096 04-25 09:08 mydir/ 注:我们发现此目录的属主是root用户,属组是root用户组;
[root@localhost ~]# ls -lr mydir/ 注:我们查看mydir目录下的有什么文件,及他们的属主和属组;
-rwxr-xr-x 2 beinan linuxsir 29 04-22 21:02 sun.txt
-rwxr-xr-x 2 beinan linuxsir 29 04-22 21:02 sun002.txt
lrwxrwxrwx 1 root root 7 04-21 22:16 sun001.txt -> sun.txt
-rw-r–r– 1 linuxsirorg root 0 04-24 22:37 example.txt
-rw-rw-rw- 1 beinan root 0 04-24 15:05 dony.txt
[root@localhost ~]# chown -R beinan:linuxsir mydir/注意:我们修改mydir及它的下级目录和所有文件到新的用户和用户组;
[root@localhost ~]# ls -ld mydir/
drwxr-xr-x 2 beinan linuxsir 4096 04-25 09:08 mydir/
[root@localhost ~]# ls -lr mydir/
值得注意的是chown和chmod 类似,我们改变一个目录下的所有.file时的属主和属组时要小心操作。比如要改变testdir及它目录下的所有.file 的属主和改组时。下面的例子操作是错误的。
[root@localhost ~]# ls -ld /root/ 注:查看/root目录的属性,主要看他的属主和属组;
drwxr-xr-x 19 root root 4096 04-25 09:20 /root/ 注:属主是root,属组是root用户组;
[root@localhost ~]# ls -ld /root/testdir/ 注:查看/root/testdir 目录的属主和属组;
drwxr-xr-x 2 root root 4096 04-25 09:20 /root/testdir/ 注:属主是root,属组是root用户组;
[root@localhost ~]# chown -R beinan:beinan /root/testdir/.* 注:改变/root/testdir目录下的以.开头的所有文件。
[root@localhost ~]# ls -ld /root/ 注:查看/root的属性;
drwxr-xr-x 19 beinan beinan 4096 04-25 09:20 /root/
[root@localhost ~]# ls -ld /root/testdir/ 注:查看testdir
drwxr-xr-x 2 beinan beinan 4096 04-25 09:20 /root/testdir/
一般情况下,我们用.*来匹配文件时,可能会存在让chown误操作,这样会连同父目录的属主和属组的归属关系也被改变。