你可以在 Linux 中使用 chown 命令更改文件和目录的所有权。它使用起来很简单:
chown owner_name file_or_folder
当你(使用上述命令)修改目录的所有权时,就会发现一个问题,目录的内容(子目录或目录中文件的所有权)并没有被修改。(这个问题的)解决方案也不是很复杂。
要更改目录内容(及子目录或目录中文件)的所有权,可以使用递归选项 -R 配合 chown 命令来使用:
chown -R owner_name folder_name
如果要同时递归更改所有者和组,可以按以下方式:
chown -R owner_name:group_name folder_name
让我们详细了解一下,并了解如何递归地更改用户和组。如果您熟悉文件所有权和权限的概念,就会容易理解得多。
注:需要是root用户或使用sudo来更改文件的所有权。
chown 递归
要递归更改目录的所有权,可使用如下命令:
chown -R new_owner_name directory_name
如果需要更改多个目录及其子目录的所有权,可在同一行添加多个目录:
chown -R new_owner_name directory1 directory2 directory3
我们来举个例子。假如我们有一个名为 new_dir 的目录,并且该目录下包含子目录。这个目录及其子目录都属于 root 用户。
[email protected]:~# ls -l /home/abhi/
total 4
drwxr-xr-x 3 root root 4096 May 30 07:30 new_dir
[email protected]:~# ls -l /home/abhi/new_dir/
total 20
-rw-r--r-- 1 root root 12813 May 30 07:30 new.txt
drwxr-xr-x 2 root root 4096 May 30 07:30 one_more_dir
当我更改新目录的所有权时,如下:
[email protected]:~# chown abhi /home/abhi/new_dir
[email protected]:~# ls -l /home/abhi/
total 4
drwxr-xr-x 3 abhi root 4096 May 30 07:30 new_dir
但是其中的子目录和文件仍是属于 root 用户:
[email protected]:~# ls -l /home/abhi/new_dir/
total 20
-rw-r--r-- 1 root root 12813 May 30 07:30 new.txt
drwxr-xr-x 2 root root 4096 May 30 07:30 one_more_dir
现在,如果我将递归选项 -R 与 chown 命令一起使用,它将更改指定目录中所有内容的所有权,而不仅仅是目录:
[email protected]:~# chown -R abhi /home/abhi/new_dir
[email protected]:~# ls -l /home/abhi/new_dir/
total 20
-rw-r--r-- 1 abhi root 12813 May 30 07:30 new.txt
drwxr-xr-x 2 abhi root 4096 May 30 07:30 one_more_dir
递归更改所有者和组
chown 命令允许用户更改所有者以及文件组。要递归地更改目录及其所有内容的所有者和组,请使用如下命令:
chown -R user_name:group_name directory_name
同时还可以更改多个目录的所有权:
chown -R user_name:group_name dir1 dir2
很简单,是不是?
本文作者:Abhishek Prakash,翻译:刘光录
原文地址:
https://linuxhandbook.com/chown-recursively/
如有侵权,请联系删除
推荐阅读