Переключить пользователя для выполнения процессов с API в Nginx / Ubuntu

434
Niels

Я хотел бы создать API с использованием Nginx (на сервере Ubuntu), который может запускать процессы (выполнять команды), но www-data не является пользователем, имеющим доступ к данным, над которыми эти процессы будут работать. Каков обычный способ сделать это без ущерба для безопасности. Другими словами, как я могу заставить API выполнять команды от имени другого пользователя?

0

2 ответа на вопрос

1
jtafurth

www-data - это просто пользователь, который запускает процесс NGINX по умолчанию, я предполагаю, что ваш API работает за NGINX, тогда ваш API будет работать как www-data. Чтобы решить, как я полагаю, проблему с разрешениями, которые возникают у вас при тестировании, вам нужно изменить права доступа к вашим данным (если они локальные), чтобы позволить пользователю и / или группе www-данных читать / писать или создавать нового пользователя для NGINX. бежать.

Несколько указателей при работе с NGINX:

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

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

Если это не то, что вы ищете, пожалуйста, уточните, чтобы получить лучшие и более точные ответы.

Изменить: понял, что я никогда не давал вам команды для переключения пользователя:

Чтобы изменить разрешения для файла, вы можете использовать chmod и chown, например, чтобы изменить права доступа к файлам для пользователя www-data:

chmod 500 file1 file2 file3 chmod -R 500 directory1/  chown www-data:www-data file1 file2 file3 chown -R www:data:www-data directory1 

Должен начать!

С уважением

Это я понимаю, но ежедневно новые данные под пользователем, не являющимся www-данными, записываются в месте, где нужно работать, как бы я справился с этим ... Niels 6 лет назад 0
Если данные записываются вашим API, он должен автоматически получить необходимые разрешения для последующего чтения, предполагая, что API запускается за NGINX, если его внешняя система предложит пользователю выполнить эту систему как часть www- группа данных, поэтому даже если он пишет с собственными разрешениями, NGINX сможет получить доступ к новым данным. jtafurth 6 лет назад 1
В этом случае простого добавления этого пользователя в группу www-data недостаточно. В каждом файле / папке также должна быть установлена ​​эта группа ... что не делается автоматически. Должен ли я сделать это с помощью групповой маски или что-то? Niels 6 лет назад 0
Нет, вы добавляете www-данные в любую группу, которая устанавливается при создании файлов, таким образом, каждая папка / файл имеет ее, и ваш nginx автоматически разрешается jtafurth 6 лет назад 0
0
Niels

Поддержание списка заданий на исполняющем сервере и локальное выполнение заданий (команд), например, cron, звучало как хороший способ сделать это. Полностью разделяющий API, который создает команды и данные для работы. Нет необходимости маскировать и массивные chmods и т. Д. Все время ...

Похожие вопросы