【问题标题】:How to manage file or folder permissions between two user accounts on Linux如何在 Linux 上管理两个用户帐户之间的文件或文件夹权限
【发布时间】:2020-08-07 04:30:58
【问题描述】:

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

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

然后用户nginx 尝试打开其中一个html 文件并得到Permission denied 错误。

为了解决这个问题,我首先检查了用户所属的组: groups jenkins 并返回:jenkins : jenkins

然后我检查了用户nginx 分配到哪个组。而且是nginx : nginx

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

我还尝试创建一个新组workers,然后将jenkinsnginx 用户分配给它

sudo groupadd workers 
sudo usermod -aG workers jenkins
sudo usermod -aG workers nginx

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

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

附言

以下是一些附加信息。 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/

【问题讨论】:

  • 您说打开文件时出现权限错误,但您只向我们显示了目录的权限。文件权限如何?

标签: linux bash permissions


【解决方案1】:

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

chgrp 组名目录名

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

chmod 775 目录名

这将允许双方访问。

【讨论】:

  • chown -R jenkins:groupname-both-accounts-share /usr/share/nginx/html/frontend 然后chmod -R 775 /usr/share/nginx/html/frontend 递归效果很好。
猜你喜欢
  • 2014-08-09
  • 1970-01-01
  • 2011-03-27
  • 2020-10-04
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
相关资源
最近更新 更多