chown – 用户和用户之间的区别:用户
有什么区别:
sudo chown $USER:$USER
和
sudo chown $USER
为什么是2次? 一个用户是错的吗? 当我使用namei -l
查看权限时,我经常会看到root root
或proxy 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
然后我们可以在没有超级用户权限的情况下将sambashare
组test_file
为sambashare
,因为用户’test’同时属于’test’组和’sambashare’组,用户’test’已经拥有足够的权限来更改文件组。