Есть два пользователя: пользователь 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
.
Есть ли способ сделать так, чтобы оба пользователя имели полный доступ к папке, созданной одним из них? Что я должен делать?
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
Ответ: Отредактировано позже:
Ниже приведена разбивка шагов, необходимых для того, чтобы сделать одну папку, созданную одним пользователем, доступной для другого.
- Создайте новую группу пользователей и назначьте ей обоих пользователей:
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/
chown -R jenkins:groupname-both-accounts-share /usr/share/nginx/html/frontend
, а затемchmod -R 775 /usr/share/nginx/html/frontend
рекурсивно работает хорошо. 07.08.2020