chown - 用户和用户之间的区别:用户

chown - 用户和用户之间的区别:用户

以下两者有何区别:

sudo chown $USER:$USER

sudo chown $USER

为什么是 2 次?一个用户错了吗?当我使用 查看权限时namei -l,我经常会看到类似root root或 的内容proxy proxy

为什么必须定义并列出所有者 2 次?

答案1

chown 命令用于更改文件或目录的所有者和组所有者。使用此命令需要超级用户权限。chown 的语法如下:

chown [owner][:[group]] file...

chown 可以根据命令的第一个参数更改文件所有者和/或文件组所有者。以下是一些示例:

chown owner file例子:

chown bob file --> Changes the ownership of the file from its current owner to user bob.

chown owner:group file例子:

chown bob:users file --> Changes the ownership of the file from its current owner to user bob and changes the file group owner to group users.

chown :group file例子:

 chown :admins file --> Changes the group owner to the group admins. The file owner is unchanged.

chown owner: file例子:

chown bob: file --> Change the file owner from the current owner to user bob and changes the group owner to the login group of user bob.

请阅读这个精彩的教程https://www.linode.com/docs/tools-reference/linux-users-and-groups。这显示有关用户、群组、权限等的一些信息...

答案2

事实并非如此user:user,但是user:group

这是命令格式

chown [OPTION]... [OWNER][:[GROUP]] FILE...

用户组可能包含许多用户。以下是有关组的一些信息:

Linux 使用组来组织用户。组组织帐户集合,主要作为一种安全措施。组成员资格的控制通过 /etc/group 文件进行管理,该文件显示了组及其成员的列表。每个用户都有一个默认或主要组。当用户登录时,组成员资格将设置为其主要组。这意味着当用户启动程序或创建文件时,文件和正在运行的程序都将与用户当前的组成员资格相关联。用户可以访问其他组中的其他文件,只要他们也是该组的成员并且设置了访问权限。要运行程序或在不同的组中创建文件,用户必须运行 newgrp 命令来切换其当前组。

一个文件归一个用户和一个组所有。默认情况下,它归创建文件的用户及其默认组所有,除非进行更改。

在您的情况下,用户root是组的成员root

答案3

man chown提供有关命令的描述和用法以及其他有用信息chown

NAME
       chown - change file owner and group

SYNOPSIS
       chown [OPTION]... [OWNER][:[GROUP]] FILE...
       chown [OPTION]... --reference=RFILE FILE...

从man page给出的信息中我们可以知道 将chown $USER:$USER目标文件的所有者和组更改为$USER,而chown $USER仅将目标文件的所有者更改为$USER,而目标文件的组保持不变。

详细信息(来自手册页)如下:

Owner  is  unchanged  if  missing.   Group is unchanged if missing, but changed to
login group if implied by a ':' following a symbolic OWNER.  OWNER and  GROUP  may
be numeric as well as symbolic.

因此chown $USER:$USER可以缩写为chown $USER:

root root类似from命令的输出namei -l意味着该文件的所有者和组都设置为root。这不是所有者定义或列出两次。所有者和组是两个相关但不同的概念。并且文件始终具有所有者和组。


至于使用chown命令,很有可能需要超级用户权限,因为使用chown命令时可能会转移文件的所有权。然而,事实并非总是如此。

假设我们有一个名为“test”的用户,他属于几个组。id命令给出以下输出:

uid=1000(test) gid=1000(test) groups=1000(test),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),108(lpadmin),110(sambashare)

用户“test”拥有以下文件:

-rw-r--r-- 1 test test 0 May 27 23:34 test_file

然后我们可以在没有超级用户权限的情况下将组更改为test_filesambashare因为用户“test”同时属于“test”组和“sambashare”组,用户“test”已经拥有足够的权限来更改文件的组。

相关内容