Как управлять разрешениями для файлов или папок между двумя учетными записями пользователей на Linux - PullRequest
0 голосов
/ 07 августа 2020

Есть два пользователя: пользователь 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

Ответ: Отредактировано позже:

Ниже приводится разбивка шагов, необходимых для того, чтобы сделать отдельную папку, созданную одним пользователем, доступной для другого.

  1. Создать нового пользователя 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/

1 Ответ

2 голосов
/ 07 августа 2020

можете ли вы попробовать использовать команду «chgrp» после создания каталога?

chgrp имя группы имя_директора

После этого выполните команду chmod, чтобы разрешить полный доступ к группе.

chmod 775 имя_директории

Это позволит обоим получить доступ.

...