Есть два пользователя: пользователь jenkins
и пользователь nginx
(фактически оба являются учетными записями служб).
Сначала пользователь jenkins
создает каталог frontend
в /usr/share/nginx/html
папка. Затем он загружает файлы 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
, а затем назначить в нее пользователей jenkins
и nginx
с помощью
sudo groupadd workers
sudo usermod -aG workers jenkins
sudo usermod -aG workers nginx
Но, к сожалению, это не устранило проблему. jenkins
пользователь продолжает создавать папки с тем же владельцем, что и раньше jenkins:jenkins
.
Есть ли способ предоставить обоим пользователям полный доступ к папке, созданной одним из них? Что мне делать?
PS
Ниже приведена дополнительная информация. Папка 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
Ответ: Отредактировано позже:
Ниже приводится разбивка шагов, необходимых для того, чтобы сделать отдельную папку, созданную одним пользователем, доступной для другого.
- Создать нового пользователя group и назначьте к ней обоих пользователей:
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/