Puncte:0

Ajutor cu „sudo --askpass” pe serverul Ubuntu / Apache2

drapel no

Am nevoie de ajutor cu a sudo -A comandă într-un script shell. Opțiunea -A este pentru AskPass. In conformitate cu pagina de manual sudo:

În mod normal, dacă sudo necesită o parolă, o va citi din cea a utilizatorului Terminal. Dacă este specificată opțiunea -A (askpass), un (eventual grafic) se execută programul de ajutor pentru a citi parola utilizatorului și trimite parola la ieșirea standard. Dacă SUDO_ASKPASS variabila de mediu este setată, specifică calea către helper program.

Sunt interesat de AskPass pentru că rulez apache2 (v 2.4.41) pe un server Ubuntu 16.04. Pagina web Apache trebuie să execute un script shell. Pagina web execută scriptul ca utilizator www-data. Dar scriptul trebuie să ruleze un alt program care poate fi rulat doar ca utilizator utilizator1. Deci am nevoie sudo --AskPass deci acel utilizator www-data poate rula utilizatorul utilizator1codul lui.

Configurația mea: Urmând exemple precum Aici și Aici, am scris aceste două scenarii în /var/www/html/ director:

user1@myUbuntu:/var/www/html$ ls -l
-rwxr-xr-x 1 www-data TestUsers 29 Feb 28 11:34 passwdScript.sh
-rwxrwxr-x 1 www-data TestUsers 2009 Feb 28 11:32 webpageScript.sh
user1@myUbuntu:/var/www/html$

(Grup TestUtilizatori include utilizatorii www-data și utilizator1.) Micul passwdScript.sh scriptul este menit să trimită parola utilizatorului 1 la STD OUT:

user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ mai mult passwdScript.sh
#!/bin/sh
ecou 'myPassword'
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ ./passwdScript.sh
parola mea
user1@myUbuntu:/var/www/html$

(Da, știu că acest lucru este foarte nesigur, dar voi fi singura persoană care folosește acest server. Sunt îngrijorat doar de funcționalitate.)

Bine: Acum că sunt configurate cele de mai sus, iată-mi webpageScript.sh script, care este menit să apeleze sudo --AskPass:

echo „Scriptul rulează”.
export SUDO_ASKPASS="/var/www/html/passwdScript.sh"
echo „Test :: $SUDO_ASKPASS”
cd /home/user1/path/to/other/directory
pwd
sudo -u user1 --askpass $SUDO_ASKPASS 'runUser1Script.exe'
echo „S-a terminat de rulat scriptul”.

Iată rezultatul mai puțin impresionant:

user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ sudo -u www-data ./webpageScript.sh
Scriptul rulează.
Testare :: /var/www/html/passwdScript.sh
/home/user1/path/to/other/directory
Îmi pare rău, mai încearcă.
Îmi pare rău, mai încearcă.
sudo: 3 încercări incorecte de parolă
S-a terminat de rulat scriptul.
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$

Deci, evident sudo --askpass comanda nu reușește să accepte utilizator1parola lui. Toată ziua am încercat variante ale acelei comenzi. Vede cineva ce greșesc?

waltinator avatar
drapel it
Ubuntu 16.04 a depășit data de sfârșit de viață și nu mai este acceptat pe AskUbuntu.
drapel hr
Cred că problema fundamentală este că (cel puțin în configurația implicită) `sudo` necesită parola utilizatorului *invocator* - nu a utilizatorului *țintă*
Pete avatar
drapel no
@steeldriver Deci, când scriptul meu rulează ca `www-data` și apoi ajunge la comanda `sudo -u user1 --askpass $SUDO_ASKPASS 'runUser1Script.exe' ` , AskPass ar trebui să furnizeze parola lui `www-data`, nu `user1` `'s? Wow. Tocmai mi-ai suflat mintea...!
drapel hr
@Pete da, cred - dacă nu ați setat „targetpw” în configurația sudo. Vezi `man sudoers`.
guiverc avatar
drapel cn
[Ubuntu 16.04 LTS a ajuns la sfârșitul duratei de viață de suport *standard*](https://fridge.ubuntu.com/2021/03/13/extended-security-maintenance-for-ubuntu-16-04-xenial-xerus -begins-april-30-2021/) este acum în afara subiectului aici, cu excepția cazului în care întrebarea dvs. este specifică pentru a vă ajuta să treceți la o versiune acceptată a Ubuntu. Suportul Ubuntu 16.04 ESM este disponibil, dar nu la subiect aici, consultați https://askubuntu.com/help/on-topic Vedeți și https://ubuntu.com/blog/ubuntu-16-04-lts-transitions- la-securitate-extinsă-întreţinere-esm

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.