有两个用户:用户jenkins
和用户nginx
(实际上两者都是服务帐户)。
首先,用户jenkins
创建目录frontend
/usr/share/nginx/html
文件夹。然后它会下载一些html
文件,将它们保存在此文件夹中。
然后,用户nginx
尝试打开其中一个 html 文件并收到Permission denied
错误。
为了解决这个问题,我首先检查了用户属于哪些组:groups jenkins
,它返回:jenkins : jenkins
然后,我检查了用户nginx
分配到哪个组。而且nginx : nginx
我检查了jenkins
创建为/usr/share/nginx/html/frontend
的frontend
文件夹的权限,它会自动分配用户jenkins
和组jenkins
。通过使用chown
命令更改此文件夹的权限,我发现为了使nginx
用户能够读取这些文件,需要设置具有nginx:nginx
所有权的文件夹。
我还尝试创建一个新的组workers
,然后nginx
jenkins
使用
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
答:后编:
以下是使一个用户创建的单个文件夹可供另一个用户访问所需的步骤的细分。
- 创建一个新用户组,并将两个用户都分配给该用户组:
sudo groupadd newgroup
sudo usermod -aG jenkins
sudo usermod -aG nginx
- 现在,
jenkins
用户创建具有默认jenkins:jenkins
所有权的文件夹后,jenkins
用户使用jenkins:newgroup
更改文件夹的所有权设置(请注意,除非jenkins
是newgroup
的成员,否则将无法将文件夹的组所有权设置为newgroup
):
chown -R jenkins:newgroup /path/to/folder/created/by/jenkins/
- 通过运行以下命令
jenkin
用户将read-write
权限分配给所有者user
(jenkins
) 和所有者group
(newgroup
):
chmod -R 775 /path/to/folder/created/by/jenkins/
创建目录后可以尝试使用"chgrp"命令吗?
CHGRP 组名目录名
之后,执行 chmod 以允许对该组的完全访问权限。
CHMOD 775 目录名
这将允许双方访问。