Как предоставить пользователю веб-сервера права на чтение файла /etc/shadow?

Как предоставить пользователю веб-сервера права на чтение файла /etc/shadow?

Я хотел бы, чтобы локальный пользователь Linux мог пройти аутентификацию (вход) с помощью модуля Nginx PAM. Я использую сервер CentOS 7. Ниже приведено то, что я пытаюсь сделать...

TheПРОЧТИ МЕНЯдля модуля ngx http auth pam говорится:

Обратите внимание, что модуль работает как пользователь веб-сервера, поэтому используемые модули PAM должны иметь возможность аутентифицировать пользователей, не будучи пользователем root; это означает, что если вы хотите использовать модуль pam_unix.so для аутентификации пользователей, вам нужно разрешить пользователю веб-сервера читать файл /etc/shadow, если вас это не пугает (в системах типа Debian вы можете добавить пользователя www-data в группу shadow).

Мой первый вопрос: в этом случае 'nginx' является пользователем веб-сервера? Мой второй вопрос: как мне установить разрешения для пользователя веб-сервера на чтение файла /etc/shadow? Может ли кто-нибудь предоставить мне шаги, которые сработали для них. Я следовал многим руководствам, которые нашел в сети, но безуспешно. В настоящее время при доступе к сайту, на который я хочу, чтобы локальный пользователь Linux мог войти, я получаю запрос на аутентификацию (ввод имени пользователя и пароля), но при вводе учетных данных локального пользователя Linux это не удается, и мне просто предлагают ввести их снова.

Спасибо, любая помощь будет оценена по достоинству, и я могу предоставить дополнительную информацию, если потребуется.

Редактировать:

Я настроил PAM в nginx, сначала собрав nginx из исходного кода, следуя инструкциямздесь. В моем файле nginx.conf я добавил следующую строку в начало, чтобы включить модуль PAM...

load_module /etc/nginx/modules/ngx_http_auth_pam_module.so;

Я также включил две строки ниже в директиву location в nginx.conf...

auth_pam "Secure area";
auth_pam_service_name "nginx";

В каталоге '/etc/pam.d' для файла службы nginx у меня есть следующие две строки...

auth required /usr/lib/security/pam_unix.so
account required /usr/lib/security/pam_unix.so

Глядя наПРОЧТИ МЕНЯдля модуля ngx http auth pam я вижу, что мне нужно будет дать пользователю веб-сервера разрешение на чтение файла /etc/shadow. Для этого я сначала создал новую группу с именем «shadow». Затем я назначил пользователя веб-сервера (который, как я предполагаю, является nginx) в группу «shadow». Затем я изменил разрешения для файла /etc/shadow. Команды, которые я выполнил, чтобы сделать это, приведены ниже...

groupadd shadow
usermod -a -G shadow nginx
chown root:shadow /etc/shadow
chmod g+r /etc/shadow

После этого я проверил права доступа к файлу /etc/shadow с помощью команды

ls -l /etc/shadow

и вот что получилось на выходе...

----r-----. 1 root shadow 1390 Aug 30 12:51 /etc/shadow

Я также установил пароль для пользователя nginx. И просто повторюсь, при доступе к сайту, на котором я хочу иметь аутентификацию, когда я ввожу имя пользователя и пароль nginx, он просто предлагает мне снова ввести их.

решение1

Полагаю, вы уже установили nginx-module-auth-pam и настроили его /etc/pam.d/nginx.

Если нет: установите файл rpm, так как все будет настроено за вас. Другими словами: вам не придется вручную настраивать /etc/shadowпараметры доступа. Фактически выне долженподстройка /etc/shadowв случае, если вы используете pam. Этот файл содержит (хешированные) пароли для ваших пользователей, поэтому в дополнение к этому вы не хотите предоставлять никакому процессу или программе (кроме pam) или пользователю (кроме root) доступ к этому файлу из соображений безопасности.

Если у вас есть подписка:

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install nginx-module-auth-pam

Если нет: берите или стройте изhttps://github.com/jfut/nginx-module-auth-pam-rpm

Почему бы не ответить только на ваш вопрос? Так как приведенные вами примеры относятся к системам типа Debian, но способ настройки немного отличается для систем типа Redhat, например CentOS 7.

Дополнительные примеры конфигурации для этого модуля вы найдете вGitHub.

Пожалуйста, проверьте такжеhttps://nginx-extras.getpagespeed.com/для дополнительных примеров конфигурации.

Связанный контент