Nano Hash - криптовалюты, майнинг, программирование

Как управлять правами доступа к файлам или папкам между двумя учетными записями пользователей в Linux

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

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

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

  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/
07.08.2020

  • Вы говорите, что получаете ошибку разрешения при открытии файла, но вы показываете нам разрешения только для каталога. Как права на файл? 07.08.2020

Ответы:


1

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

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

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

chmod 775 имя каталога

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

07.08.2020
  • chown -R jenkins:groupname-both-accounts-share /usr/share/nginx/html/frontend, а затем chmod -R 775 /usr/share/nginx/html/frontend рекурсивно работает хорошо. 07.08.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..