Linux Chown命令(更改文件所有权)

时间:2020-03-05 15:26:59  来源:igfitidea点击:

在Linux和Unix的操作系统中,所有文件,目录和进程(再次文件)由用户拥有。
该组是一组用户为该对象(文件/目录)共享相同的访问权限(i.e读取,写和执行)。

Chown命令用于Linux,更改文件,目录和符号链接的用户和群组所有权。

在本教程中,将介绍如何使用一些实际示例使用Chown命令。

chown语法

允许查看chown命令的基本语法,如下所示:

chown [OPTIONS] USER[:GROUP] FILE/DIRECTORY

我们可以运行ls -l命令来打印文件所有权详细信息。

在以下输出中,我们可以看到"myfile.txt"文件由用户'tom'拥有,而该组由"开发人员"拥有:

$ls -l
-rw-r--r-- 1 tom  developers   0 Apr  4 01:35 myfile.txt

更改文件的所有权

要更改文件的所有权,请使用known与新所有者名称和必须更改所有者的文件名。

以下命令将文件的所有权更改为"myfile.txt"到新用户'tom':

# chown tom myfile.txt

如果命令已成功执行,则不会显示终端上的任何输出。
让验证使用ls -l命令如下:

# ls -l myfile.txt
-rw-r--r-- 1 tom root 623 Dec 10 2012 myfile.txt

更改文件的所有者和组

如果所有者接下来是冒号()和组名(没有空格),则还更改了组名称。

以下示例显示如何更改名为"myfile.txt"的文件的所有者和组:

# chown tom:developers myfile.txt

现在该文件的新所有者是'tom',新的组所有者是'开发人员的组。

# ls -l myfile.txt
-rw-r--r-- 1 tom developers 424 Dec 10 2012 myfile.txt

如果在冒号结束后删除组名,则将文件的组更改为指定的用户的登录组:

# chown tom: myfile.txt
# ls -l myfile.txt
-rw-r--r-- 1 tom tom 453 Dec 10 2012 myfile.txt

如果提到冒号(:)和组,则只更改文件的组。
在这种情况下,命令就像chgrp命令一样。

# chown :developers myfile.txt
# ls -l myfile.txt
-rw-r--r-- 1 tom developers 1579 Dec 10 2012 myfile.txt

递归更改目录的所有权

在给定目录下的所有文件和目录中递归地应用所有权使用-r选项

在以下示例中,"/var/www/html"下的所有文件和目录的所有权将被递归地更改为"onitad"和组所有权,以"www-data":

# chown theitroad:www-data -R /var/www/html

详细输出

- --verbose选项显示在终端上更改的所有所有权。
它输出处理的每个文件的诊断。

例如:

# chown -R --verbose jones /home/jones/
changed ownership of `/home/jones/hello' to jones
changed ownership of `/home/jones/.emacs' to jones
changed ownership of `/home/jones/.bash_history' to jones
changed ownership of `/home/jones/.bash_logout' to jones
changed ownership of `/home/jones/.bashrc' to jones
changed ownership of `/home/jones/file1' to jones

即使未进行更改,冗长选项也会输出每个文件的处理。
但是使用-c或者- 晶体选项,仅在更改时报告输出。

更改符号链接的所有权

默认情况下,"Chown""命令不会更改符号链接的所有权,而是将其在目标文件上的所有权更改。

Chmod有一个选项-h可用于更改符号链接的所有权。

检查以下示例:

# chown -h tom vmlinuz
# ls -l
total 0
lrwxrwxrwx 1 tom root 31 Apr  5 00:50 vmlinuz -> /boot/vmlinuz-4.15.0-88-generic

将所有权更改为参考文件

我们可以引用来自哪个文件,其中chown`将相同的用户和群组所有权复制到新文件。

在以下命令--reference = myfile1.txt选项以提供分配给名为'myfile2.txt'的文件的参考文件和所有权:

# chown --reference=myfile1.txt myfile2.txt

沉默的操作

普通用户无法更改其他人所拥有的文件的所有权。
因此,当普通用户尝试更改所有权时,会显示错误。

[tom@node051 ~]$chown tom /etc/
chown: changing ownership of `/etc/': Operation not permitted

但是,如果我们使用-f或者-silent或者--quiet选项,则不会显示错误。

[tom@node051 ~]$chown -f tom /etc/
[tom@node051 ~]$

如何保留根

chmod命令有一个选项--preserve-root,以防止chmod在/上递归行动。
应与"-r""方法一起使用此选项以生效。

[root@node051 ~]# chown -c --preserve-root tom /
changed ownership of '/' from root to tom

只有"/""的权限将被更改,并且在"/"内部的文件和目录的所有权将保持不变。

[root@node051 ~]# ls -ld /
drwxr-xr-x 23 tom root 4096 Nov 19 14:36 /
[root@node051 ~]# ls -l
total 88
drwxr-xr-x   2 root root  4096 Nov 19 14:33 bin
drwxr-xr-x   3 root root  4096 Nov 19 14:36 boot
drwxr-xr-x  16 root root  3660 Mar 28 11:09 dev
drwxr-xr-x  90 root root  4096 Apr  4 02:28 etc
drwxr-xr-x   2 root root  4096 Nov 19 14:35 home
lrwxrwxrwx   1 root root    33 Nov 19 14:35 initrd.img -> boot/initrd.img-4.15.0-88-generic
lrwxrwxrwx   1 root root    33 Nov 19 14:29 initrd.img.old -> boot/initrd.img-4.15.0-76-generic
drwxr-xr-x  22 root root  4096 Nov 19 14:37 lib
drwxr-xr-x   2 root root  4096 Nov 19 14:28 lib64
drwx------   2 root root 16384 Nov 19 14:27 lost+found