如何使用Linux Chown命令与示例

时间:2020-02-23 14:39:06  来源:igfitidea点击:

介绍

Chown的手册页表示,Chown会改变每个给定文件的用户和/或者组所有权。
当仅给出所有者(用户名或者数字用户ID)时,该用户是每个给定文件的所有者,并且没有更改文件的组。
如果所有者接着是冒号和组名(或者数字组ID),则它们之间没有空格,则文件的组所有权也会更改。

当我们使用冒号但不在用户名之后没有组名称时,该用户是将文件的所有者和文件组更改为该用户的登录组。
如果给出了冒号和组,但省略了所有者,只有文件的组更改;在这种情况下,智能执行与CHGRP相同的功能。
如果仅给出了冒号,或者如果整个操作数为空,则所有者也不会更改组。

使用常见的Chown选项

-c,更像verbose,但仅报告更改 - f,-quiet抑制大多数错误消息-v, - verbose输出每个文件处理的诊断, - 递归在文件和目录上递归地运行

要查看为要更改的文件设置的权限,请使用ls实用程序。

运行文件或者目录的长短列表

$ls -l 
-rw-rw-r-- 1 tech    tech    0 May 26 15:07 backend.php
-rw-rw-r-- 1 jmwang jmwang   0 May 26 15:05 configs.txt
-rw-rw-r-- 1 tech    tech    0 May 26 15:07 frontend.php

如我们所见,以上文件由用户Tech和Group Tech和User Jmwang和Group Jmwang拥有。

更改用户和组for configs.txt to tech,请执行

# sudo chown tech:tech configs.txt

列出文件以显示新所有权

$ls -l
-rw-rw-r-- 1 tech tech  0 May 26 15:07 backend.php
-rw-rw-r-- 1 tech tech  0 May 26 15:05 configs.txt
-rw-rw-r-- 1 tech tech  0 May 26 15:07 frontend.php

要将Frontend.php更改为Jmwang并将该组恢复为Tech

$sudo chown jmwang:tech frontend.php

列出文件以确认更改

$ls -l
-rw-rw-r-- 1 tech   tech  0 May 26 15:07 backend.php
-rw-rw-r-- 1 tech   tech  0 May 26 15:05 configs.txt
-rw-rw-r-- 1 jmwang tech  0 May 26 15:07 frontend.php

更改为jmwang的backend.php组进行更改为

$sudo chown :jmwang backend.php
$ls -l
-rw-rw-r-- 1 tech   jmwang  0 May 26 15:07 backend.php
-rw-rw-r-- 1 tech   tech    0 May 26 15:05 configs.txt
-rw-rw-r-- 1 jmwang tech    0 May 26 15:07 frontend.php

我们可以使用一个文件的权限并使用-reference选项在另一个文件上超级施加它们。
让我们尝试看看它是否有效。

$sudo chown --reference=backend.php frontend.php
$ls -l
-rw-rw-r-- 1 tech jmwang  0 May 26 15:07 backend.php
-rw-rw-r-- 1 tech tech    0 May 26 15:05 configs.txt
-rw-rw-r-- 1 tech jmwang  0 May 26 15:07 frontend.php

到目前为止,我们一直在处理文件。
如果我们需要将目录的所有权更改在一起的所有文件和子目录中,我们都需要处理什么?
Chown附带递归功能。

要递归在目录上更改用户和群组所有权,只需使用-r选项,我们将很好。
使用与我们添加-r选项的文件的相同命令作为文件。

$sudo chown -R http:httpd /var/www/html/

仅更改集团所有权

$sudo chown -R :httpd /var/www/html/

仅更改用户所有权

$sudo chown -R httpd /var/www/html/ ## Notice there is no leading full colon.

到目前为止,我们已经与文件和目录互动。
当我们更改符号链接的所有权时会发生什么?
让我们调查并解决它。
让我们为configs.txt创建一个符号链接

$sudo ln -s configs.txt test.txt

列出它们以查看软链接

$ls -l
-rw-rw-r-- 1 tech jmwang  0 May 26 15:07 backend.php
-rw-rw-r-- 1 tech tech    0 May 26 15:05 configs.txt
-rw-rw-r-- 1 tech jmwang  0 May 26 15:07 frontend.php
lrwxrwxrwx 1 tech tech   11 May 26 15:33 test.txt -> configs.txt

让我们尝试更改测试的用户和群组所有权。
我们知道它对jmwang的方式

$sudo chown jmwang:jmwang test.txt

长名单来看更改

$ls -l
-rw-rw-r-- 1 tech jmwang  0 May 26 15:07 backend.php
-rw-rw-r-- 1 tech tech    0 May 26 15:05 configs.txt
-rw-rw-r-- 1 tech jmwang  0 May 26 15:07 frontend.php
lrwxrwxrwx 1 tech tech   11 May 26 15:33 test.txt -> configs.txt

我们会注意到Test.txt的所有权没有改变。

为了强制更改符号链接的所有权,请根据所示发出-h选项:

$sudo chown -h jmwang:jmwang test.txt

长名单来看更改

$ls -l
-rw-rw-r-- 1 tech   jmwang  0 May 26 15:07 backend.php
-rw-rw-r-- 1 tech   tech    0 May 26 15:05 configs.txt
-rw-rw-r-- 1 tech   jmwang  0 May 26 15:07 frontend.php
lrwxrwxrwx 1 jmwang jmwang  11 May 26 15:33 test.txt -> configs.txt