Puncte:1

CENTOS apache ALL=(rădăcină) NOPASSWD: /path/to/shell.sh nu funcționează

drapel jp

Încercarea de a face o interfață web de gestionare IPtables.

A creat un fișier test.php

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
echo $ieșire;

Am dat /usr/bin/iptables.sh NOPASSWD ca să pot executa fișierul cu sudo prin apache fără a folosi o parolă

sudo iptables -L

fisier sudoers:

apache ALL=(rădăcină) NOPASSWD: /usr/bin/iptables.sh

Dar încă primesc o eroare

Avem încredere că ați primit prelegerea obișnuită de la sistemul local Administrator. De obicei, se rezumă la aceste trei lucruri: #1) Respectați intimitatea celorlalți. #2) Gândește-te înainte de a tasta. #3) Cu mare putere vine o mare responsabilitate. sudo: este necesar un terminal pentru a citi parola; fie utilizați opțiunea -S pentru a citi din standard introduceți sau configurați un askpass helper{"mode":"full","isActive":false}

Totuși, dacă folosesc

apache ALL=(rădăcină) NOPASSWD: ALL

Totul merge bine.

Mi-am verificat de două ori directorul și am folosit calea exactă

[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh

Super nevăzut aici, mă poate ajuta cineva cu o direcție? :'(

Puncte:1
drapel cz

Comanda cu care apelați sudo trebuie să se potrivească cu ceea ce este în sudoeri fișier, dar în cazul dvs. nu se potrivesc.

Ai încercat să fugi bash /usr/bin/iptables.sh, dar sudoeri vă permite doar să alergați /usr/bin/iptables.sh.

alvan avatar
drapel jp
Sunt confuz, cum ar trebui să execut scriptul în acest caz? Trebuie să adaug bash la sudoers?
Michael Hampton avatar
drapel cz
@alvan De ce ai `bash` acolo? Este redundant. Poți să faci ce vrei, dar cel mai important este că **trebuie să se potrivească exact**.
alvan avatar
drapel jp
Oh, Doamne. $output = shell_exec("sudo /usr/bin/iptables.sh 2>&1'"); Asta chiar a funcționat
alvan avatar
drapel jp
Multumesc mult Michael!!
Puncte:0
drapel us

Încearcă cu sudo, din moment ce /usr/bin/iptables.sh referiri la rădăcina rădăcinii.

$output = shell_exec("sudo -u root sh -c 'bash /usr/bin/iptables.sh 2>&1'");
echo $ieșire;
alvan avatar
drapel jp
Fără noroc, php-ul nu scoate nimic în acest caz. Dar când schimb fișierul sudoers la ALL, aceasta funcționează
Ajay Singh avatar
drapel us
@alvan ai încercat codul de mai sus fără nicio parolă în sudoers precum -> apache ALL=(root) /usr/bin/iptables.sh; Care este rezultatul
alvan avatar
drapel jp
este apache 15 caractere

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.