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

有什么区别:

sudo chown $USER:$USER 

 sudo chown $USER 

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

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

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 。 这显示了有关用户,组,权限,…的一些信息

它不是user:user ,而是user:group

这是命令格式

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

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

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

文件由用户和组拥有。 默认情况下,它由创建该文件的用户及其默认组拥有,除非它已更改。

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

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

 NAME chown - change file owner and group SYNOPSIS chown [OPTION]... [OWNER][:[GROUP]] FILE... chown [OPTION]... --reference=RFILE FILE... 

形成手册页给出的信息,我们可能知道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: .

来自namei -l命令的root root输出意味着该文件的所有者和组都设置为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 

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