LINUX.ORG.RU
решено ФорумAdmin

Поменять пароль юзера через php script

 , ,


1

2

Уважаемое коммюнити,

прошу подсказать, где может быть затык:

1. есть сервер на OpenSUSE 15.2
2. есть php script:
3. PHP7 и Nginx

<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
ini_set('display_error', true);

$cmd = 'sudo -u root sh -c \'/usr/bin/echo "username:pass" | sudo /usr/sbin/chpasswd 2>&1\'';

exec($cmd,$output,$return_val);
print_r($output);
echo $return_val;
?>


Скрипт возвращает следующую строку в браузере:

Array ( [0] => chpasswd: (user username) pam_chauthtok() failed, error: [1] => Authentication token lock busy [2] => chpasswd: (line 1, user username) password not changed ) 1

При этом в шелле скрипт отрабатывает без проблем.

права для юзера nginx в sudoers выглядят так:

nginx ALL=(ALL) NOPASSWD: ALL. #(так только для теста)
Defaults:nginx !requiretty

NGinx и php-fpm даже запускались с рутовыми правами, но и это не помогло.

auditd пишет:

type=USER_CHAUTHTOK msg=audit(1627163840.500:550651): pid=21840 uid=0 auid=4294967295 ses=4294967295 subj==unconfined msg='op=PAM:chauthtok grantors=? acct="username" exe="/usr/sbin/chpasswd" hostname=? addr=? terminal=? res=failed



Буду благодарен любой подсказке!


А ларчик открывался проосто. Решение было спрятано в unit файле php-fpm:

# Mounts the /usr, /boot, and /etc directories read-only for processes invoked by this unit.
#ProtectSystem=full

kbu ()
Ответ на: Угу... от Moisha_Liberman

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

kbu ()
Ответ на: комментарий от kbu

Ok.

Я просто уточнил. Если понимаете в чём проблема, то дело Ваше. Я не настаиваю, но я бы прикрутил наскоряк, если это возможно, аутентификацию на базе какой-нибудь BerkeleyDB (Oracle Embedded). Для вящей безопасности.

Moisha_Liberman ★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.