为什么一个用户每次只能添加到一个组?

为什么一个用户每次只能添加到一个组?

我正在尝试将 Apache 和一个名为的用户添加admin到 CentOS 上的同一组中。当我运行时,id admin我得到组 1000 (apache) 和组 1002 (admin),当我运行时,id apache我得到组 1000 (apache) 和 1003 (access)。

我看到他们都是 1000 组(apache)的成员,但是当我尝试通过将管理员添加到 1003(访问)组时usermod -G access admin,它会因为某种原因从 apache 组中删除管理员(因此当我运行“id admin”时,我得到了组 1002 和 1003,但它不再列为 1000 的一部分)。

一个用户可以加入的组数是否有限制?如果没有,我该如何将他们放入同一个组中?

我的问题是由于权限问题引起的 - 例如,在由“admin”拥有的特定文件夹中,当我尝试使用 admin 用户创建新目录或上传文件时,我可以这样做。但是,当我尝试使用 apache 用户执行此操作时,却无法做到。

编辑:getfacl 的输出:

getfacl: Removing leading '/' from absolute path names
# file: home/admin/domains/xxx/public_html/xxx/xxx
# owner: apache
# group: apache
user::rwx
user:apache:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:apache:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

4月14日编辑:

getfacl: Removing leading '/' from absolute path names
# file: home/admin/domains/public_html/xxx/xxx
# owner: apache
# group: apache
user::rwx
user:admin:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:admin:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

答案1

就像我一直以来回答你之前的问题,您无需将用户添加到任何组来访问特定文件夹及其子文件夹中的文件,因为 POSIX ACL 足以解决此类问题。

使用以下命令:

setfacl -Rm d:u:apache:rwX,u:apache:rwX /path/to/your/folder

从现在开始,用户 apache(和管理员)可以在此文件夹及其子文件夹中执行任何他想执行的操作,但其他人则不能。

-R M R递归地修改 ACL

u:apache:rwX为用户设置 ACL阿帕奇对于起始的现有文件和(子)文件夹文件夹

d:u:apache:rwX为用户设置 ACL阿帕奇对于新创建的文件和(子)文件夹

您可以随时使用以下方法删除所有附加 ACL

setfacl -Rb /path/to/your/folder

答案2

当我将管理员添加到访问组时,它会从 apache 组中删除管理员

usermod -G access admin

您使用方式不usermod正确。

如果用户当前是未列出的组的成员,则该用户将被从该组中删除。可以通过 -a 选项更改此行为,该选项将用户附加到当前补充组列表。

使用以下命令:

usermod -G access, apache admin

或者:

usermod -a -G access admin

usermod(8) - Linux 手册页

-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
           A list of supplementary groups which the user is also a member
           of. Each group is separated from the next by a comma, with no
           intervening whitespace. The groups are subject to the same
           restrictions as the group given with the -g option.

           If the user is currently a member of a group which is not listed,
           the user will be removed from the group. This behaviour can be
           changed via the -a option, which appends the user to the current
           supplementary group list.

来源usermod(8) - Linux 手册页

相关内容