如何在 Linux 上管理两个用户帐户之间的文件或文件夹权限

How to manage file or folder permissions between two user accounts on Linux

有两个用户:用户jenkins和用户nginx(实际上都是服务帐号)。

首先,用户 jenkins/usr/share/nginx/html 中创建目录 frontend 文件夹。然后它会下载一些 html 文件并将它们保存在这个文件夹中。

然后用户 nginx 尝试打开 html 文件之一并收到 Permission denied 错误。

为了解决这个问题,我首先检查了用户属于哪个组: groups jenkins 它 returns: jenkins : jenkins

然后我查看了用户nginx被分配到哪个组。它是 nginx : nginx

我检查了创建为 /usr/share/nginx/html/frontendfrontend 文件夹 jenkins 的权限,它被自动分配给用户 jenkins 和组 jenkins .通过使用 chown 命令更改此文件夹的权限,我发现为了让 nginx 用户能够读取这些文件,文件夹需要设置为 nginx:nginx 所有权。

我还尝试创建一个新组 workers,然后使用

jenkinsnginx 用户分配给它
sudo groupadd workers 
sudo usermod -aG workers jenkins
sudo usermod -aG workers nginx

但不幸的是,这并没有解决问题。 jenkins 用户继续创建与以前具有相同所有权的文件夹 jenkins:jenkins

有没有办法让两个用户都可以完全访问其中一个用户创建的文件夹?我该怎么办?

P.S.

以下是一些附加信息。 frontend 文件夹由 jenkins 用户在 /usr/share/nginx/html/ 中创建。以下是一些详细信息:

sudo namei -om /usr/share/nginx/html/
    f: /usr/share/nginx/html/
     dr-xr-xr-x root  root    /
     drwxr-xr-x root  root    usr
     drwxr-xr-x root  root    share
     drwxr-xr-x nginx jenkins nginx
     drwxrwxrwx nginx nginx   html

然后,在创建 frontend 文件夹后,我 运行

sudo namei -om /usr/share/nginx/html/

检查其所有权,它是:

    f: /usr/share/nginx/html/frontend
     dr-xr-xr-x root    root    /
     drwxr-xr-x root    root    usr
     drwxr-xr-x root    root    share
     drwxr-xr-x nginx   jenkins nginx
     drwxrwxrwx nginx   nginx   html
     drwxr-xr-x jenkins jenkins frontend

答案:稍后编辑:

以下是使一个用户创建的单个文件夹可供另一个用户访问所需步骤的细分。

  1. 创建一个新的用户组并将两个用户分配给它:
sudo groupadd newgroup
sudo usermod -aG jenkins
sudo usermod -aG nginx
  1. 现在,在 jenkins 用户创建一个具有默认 jenkins:jenkins 所有权的文件夹后,让 jenkins 用户更改文件夹的所有权设置为 jenkins:newgroup(请注意 jenkins 将无法将文件夹的组所有权设置为 newgroup 除非它是 newgroup 的成员):
chown -R jenkins:newgroup /path/to/folder/created/by/jenkins/
  1. jenkin 用户将 read-write 权限分配给所有者 user (jenkins) 和所有者 group(newgroup) 运行宁:
chmod -R 775 /path/to/folder/created/by/jenkins/

您可以在创建目录后尝试使用“chgrp”命令吗?

chgrp 组名目录名

之后,执行 chmod 以允许对该组进行完全访问。

chmod 775 目录名

这将允许两者访问。