是否可以为组设置权限?例如,我希望组“sales”具有权限 644。因此,在我将用户添加到此组后,该用户将自动获得这些权限。之后,我想将权限更改为组“sales”,以便与此组关联的所有用户都拥有新权限。
这在 Linux 中有意义吗?
答案1
你有点搞错了。基本版本(稍微复杂一点):
您可以将文件或目录设置为 3 种身份:所有者、组和其他。所有者是用户,组是用户集合,其他是其他所有人。文件或目录对这 3 种身份分别具有 3 种权限:读取、写入和执行。
如果希望某个组能够执行某个文件,则该文件至少需要---rwx---
。前 3 位和后 3 位:所有者(如果不在组中),其他人则不允许执行任何操作。中间 3 位:属于该组的用户可以读取、写入和执行。
所以 ...
可以给组设置权限吗?
不,“文件”和“目录”都设置了所有者、组和权限。
例如,我希望组“sales”具有权限644
那不会是 644,而是用于rwx
读取、写入、执行,因此对于组来说总共是一位数字,而不是 3(1=r、2=w、4=x,其中 6 是 wx,4 是 x)
当我将用户添加到该组后,该用户将自动获得这些权限。
不,您将用户添加到一个组中,当用户对设置了该组的文件或目录执行某些操作时,将同时检查“用户”和“组”的权限(因此,如果用户拥有该文件,则也会检查这些权限;如果用户可以执行而组不能执行,则文件会被执行)。
没有方法可以将组权限转移给用户。这是通过将用户添加到组或从组中删除来完成的。除非您手动执行执行此操作的命令。
之后,我想将权限更改为“销售”组,以便与该组关联的所有用户都拥有新的权限。
我理解,确实有一种方法,但你需要在每个目录上执行此操作,并且每次都需要重新应用它。如果你切换到目录,这将设置粘性位:
chmod g+s {dir}
这样,在 {dir} 内创建的所有新文件和目录都将设置为 {dir} 本身的组。接下来,您可以执行此操作,将 g(组)的 d(默认值)设置为 {dir} 的“rwx”(如果不想执行,请删除 x):
setfacl -d -m g::rwx {dir}
(如果只需要应用于目录,请使用大写字母(X 表示执行))这将显示该目录的默认值。
getfacl {dir}
每次更改后都需要应用所需的权限,然后重新应用它们:
setfacl -R -m g::rwx {dir}
递归更改所有内容。唯一可执行的是:
setfacl -R -m o::x {dir}
- 永远不要这样做,
/
因为它会彻底破坏系统
您可以使用以下命令创建两个脚本:
chmod g+s {dir}
setfacl -d -m g::rwx {dir}
setfacl -R -m g::rwx {dir}
和
chmod g+s {dir}
setfacl -d -m g::rw- {dir}
setfacl -R -m g::rw- {dir}
并在它们之间切换:1 添加执行,另一个删除它。如果您将“g”替换为“u”或为“u”添加一行,您也可以更改“用户”