如何使用Linux Chown命令与示例
介绍
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