Linux 中的 chown 命令允许您更改文件和目录的所有权。 你可以正确地猜到“chown”是“change owner”的缩写。
如果您不了解这些术语,我强烈建议您阅读我关于 Linux 中文件权限和所有权的解释性文章。
这是一张快速回忆的图片:
使用 chown 命令,您可以更改文件或目录的用户和组所有权。
Linux中的chown命令示例
下面是 chown 命令的语法:
chown [options] user_spec files
请记住 chown 是一个管理命令,因此您需要是 root 或拥有 sudo 权限,以便使用 chown 命令进行更改。 我希望你知道如何添加 sudo 用户。
否则,您将看到如下错误:
chown: changing ownership of 'agatha.txt': Operation not permitted
现在让我们看看如何通过示例来使用 chown 命令。
这是 example 设置我将使用:
-rw-r--r-- 1 abhishek abhishek 456 Jan 24 09:30 agatha.txt
drwxr-xr-x 2 abhishek abhishek 4096 Jan 24 09:31 mydir
drwxr-xr-x 3 abhishek abhishek 4096 Jan 24 09:30 new
-rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
1.更改或设置文件的用户所有权
要更改文件的所有权,请按以下方式使用命令:
sudo chown user_name file_name
您也可以使用 UID(用户 ID)代替用户名。 这是一个 example 它所做的更改:
[email protected]:~/tutorial$ sudo chown prakash agatha.txt
[email protected]:~/tutorial$ ls -l agatha.txt
-rw-r--r-- 1 prakash abhishek 456 Jan 24 09:30 agatha.txt
如您所见,文件的所有者已从“abhishek”更改为“prakash”,但该组仍为“abhishek”。 让我向您展示如何更改用户所有权和组所有权。
2.更改用户和组所有权
要更改文件的用户和组所有权,您可以使用用户名指定组,并用这样的列分隔:
sudo chown user_name:group_name file_name
当然,您可以分别使用 UID 和 GID 代替用户名和组名。
[email protected]:~/tutorial$ sudo chown prakash:adm sherlock.txt
[email protected]:~/tutorial$ ls -l sherlock.txt
-rw-r--r-- 1 prakash adm 356 Jan 24 09:30 sherlock.txt
正如你在 example 上面,我将文件 sherlock.txt 的用户更改为“prakash”,将组更改为“adm”。
3.将组更改为用户的默认组
每个用户都有一个默认或主要组。 如果用户创建了一个新文件或目录,这个主组自动成为该文件的组所有者。 您可以使用 id 命令列出用户的默认组。
现在,如果您想将文件的组所有权更改为用户的默认组,您只需在冒号后留下组名即可。
sudo chown user_name: file_name
正如你在 example 下面,sherlock.text 文件用户所有者“prakash”和组所有者“adm”。 我将所有者更改为“abhishek”,但没有提供组名。 然而,它将组从“adm”更改为默认的“abhishek”组。
[email protected]:~/tutorial$ ls -l sherlock.txt
-rw-r--r-- 1 prakash adm 356 Jan 24 09:30 sherlock.txt
[email protected]:~/tutorial$ sudo chown abhishek: sherlock.txt
[email protected]:~/tutorial$ id abhishek
uid=1000(abhishek) gid=1000(abhishek) groups=1000(abhishek),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),999(docker)
[email protected]:~/tutorial$ ls -l sherlock.txt
-rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
4.只换组
如果您只想更改组而不被用户所有者打扰,可以使用 chown 命令,如下所示:
sudo chown :group_name file_name
在里面 example 下面,我将组所有权设置为 sudo 在不触及用户所有权的情况下:
[email protected]:~/tutorial$ ls -l agatha.txt
-rw-r--r-- 1 prakash abhishek 456 Jan 24 09:30 agatha.txt
[email protected]:~/tutorial$ sudo chown :sudo agatha.txt
[email protected]:~/tutorial$ ls -l agatha.txt
-rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt
5.递归更改目录的用户和组所有权
在上述所有命令中,您可以将文件替换为目录,并且对于更改目录的所有权也一样。
这里的一个问题是默认情况下目录内内容的所有权没有改变。
要更改目录的所有权以及目录中的所有内容,可以使用递归选项 -R。
sudo chown -R user_name:group_name directory_name
6.设置相同的用户和组所有权作为参考文件
您可以使用文件作为参考,并通过以下方式根据参考文件更改文件的用户和组所有权:
sudo chown --reference=file1.txt file2.txt
在里面 example 下面,文件 agatha.txt 已用作参考。 正如你所看到的,sherlock.txt 的所有权已经在 agatha.txt 的基础上发生了变化。
[email protected]:~/tutorial$ ls -l agatha.txt sherlock.txt
-rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt
-rw-r--r-- 1 abhishek abhishek 356 Jan 24 09:30 sherlock.txt
[email protected]:~/tutorial$ sudo chown --reference=agatha.txt sherlock.txt
[email protected]:~/tutorial$ ls -l agatha.txt sherlock.txt
-rw-r--r-- 1 prakash sudo 456 Jan 24 09:30 agatha.txt
-rw-r--r-- 1 prakash sudo 356 Jan 24 09:30 sherlock.txt
我认为您有足够的 chown 命令示例来理解它。 你总是可以 请参阅 chown 手册页 更多细节。
如果您有任何问题或建议,请告诉我。