php - rendszerprogram hívása

php - rendszerprogram hívása

Hozzászólások

rsa-kulcsot generálni (már leírták), aztán vmi ilyesmi:

<?
$command="ls /akarmi";
$output=passthru("ssh -l remoteuser remote.host.org sudo -u masikuser ".$command );
echo "kimenet: ".$output;
?>

ilyesmire lehet pl használni:
http://www.auhof.eduhi.at/~macska87/webbash/

Üdv, Csaba

Ok kipróbálom, de a system("sudo adduser ...") nem lett végrehajtva, holott ugyanez a command ablakban lefut!
Miért?

$PATH?
chrootolt apache esetleg?
jogosultsagok?

Hali!

Sajnos nekem nem megy a fent leírt prg. hívás!

passthru("sudo -u root adduser );

vagy még a

passthru("/usr/bin/sudo -u root ls ); ennek sincs kimenete.
Szerintem végre sem hajtódik.
Miért? :cry: :cry:

whereis sudo
sudo: /usr/bin/sudo /usr/share/man/man8/sudo.8.gz

Hali!

PHP-ből szeretnék rendszerprogramot hívni, amihez csak a root-nak van joga (iptables -n -L, adduser, passwd).
Nem találtam erre megoldást, csak a popen() fügvényt, ahol a su parancsot adom ki és megadom a jelszót bemeneti adatként (nem szeretném, ha a root jelszó látszana bármely php programomban is).

Ezt hogyan llehetne kikerülni?
Nagyon jó ötletre várok.

köszi.

[quote:a905906c7c="gabcsi"]Hali!

Sajnos nekem nem megy a fent leírt prg. hívás!

passthru("sudo -u root adduser );

vagy még a

passthru("/usr/bin/sudo -u root ls ); ennek sincs kimenete.
Szerintem végre sem hajtódik.
Miért? :cry: :cry:

whereis sudo
sudo: /usr/bin/sudo /usr/share/man/man8/sudo.8.gz

a /var/log/http/error_log nagyon informativ szokott lenni.

Amugy meg ha a sudoers jol van megirva nem kell sudo -u root eleg a sudo maga es inkabb whereis adduser...

Jha es az eles rendszernel hasznalj ob_start es ob_end_clean-t hogy elrejtsd a system message-t.

én ezt egy kissé másként oldottam meg..
van egy dnotify nevű program, ami funkcióját tekintve olyan mint a fam.
van .deb csomag is és ha fordítani kell az sem bonyolult.
ha rootként futtatod, az általa meghívott parancsok is rootként fognak futni.

szvsz szerverre vétek sudo-t rakni....

[quote:6d536ca5e3="mrbond"]én ezt egy kissé másként oldottam meg..
van egy dnotify nevű program, ami funkcióját tekintve olyan mint a fam.
van .deb csomag is és ha fordítani kell az sem bonyolult.
ha rootként futtatod, az általa meghívott parancsok is rootként fognak futni.

szvsz szerverre vétek sudo-t rakni....

A sudo-ban tokeletesen lehet korlatozni, hogy miket milyen jogkorrel futtathat. Miert lenne vetek?:) Bar megoszlanak a velemenyek az tuti.

[quote:7e71de0bbe="gabcsi"]Hali!

Sajnos nekem nem megy a fent leírt prg. hívás!

passthru("sudo -u root adduser );

vagy még a

passthru("/usr/bin/sudo -u root ls ); ennek sincs kimenete.
Szerintem végre sem hajtódik.
Miért? :cry: :cry:

whereis sudo
sudo: /usr/bin/sudo /usr/share/man/man8/sudo.8.gz

ez azt szokta jelenteni, hogy pl nem adtad meg sudonak, hogy azt a parancsot jelszo nelkul futtassa. Ehhez add meg a NOPASSWD vagy hasonlo opciot az adott parancsnak az /etc/sudoers fileban. Hasznos lehet meg a syslog nezegetese, sudo mindig kiirja, ha lefuttat valamit. Ha nem irja ki, akkor nem futtatta le, ergo var a jelszora, vagy valami mas a gond.

onyx

Perl-ben miért lehet ezeket meghívni?
(pl.: xxx/cgi-bin/yyy.pl )

sudo van deb csomagban?

[quote:b1619542a7="gabcsi"]
sudo van deb csomagban?

igen, van

apt-get install sudo
visudo -van szerkeszd az /etc/sudoers filet.

[quote:8cb41e8a58="gabcsi"]sudo van deb csomagban?

Természetesen.

Részletek itt:
[code:1:8cb41e8a58]man sudoers[/code:1:8cb41e8a58]

[quote:0a73c96ccc="mrbond"]szvsz szerverre vétek sudo-t rakni....

Olyan rossz az, ha pontosan beallithatod a jogosultsagokat? Legyen inkabb full root? :)

[quote:ef45fa4485="bitumen"]
<?
$command="ls /akarmi";
$output=passthru("ssh -l remoteuser remote.host.org sudo -u masikuser ".$command );
echo "kimenet: ".$output;
?>

Egy másik megoldás lehet a PHP SSH2 függvényeit használni (http://php.net/ssh2).

Hali!

Minden működik. :lol: :lol:

Kérdésem most már csak az, hogy a config file-t hogyan tudom írni, ha csak root jogosultsággal lehet.

[quote:01167c938b="gabcsi"]Hali!

Minden működik. :lol: :lol:

Kérdésem most már csak az, hogy a config file-t hogyan tudom írni, ha csak root jogosultsággal lehet.

Milyen config file-t?

Köszönöm a hozzászólásokat.

A másik kérdésem arra vonatkozna, hogyan lehetne a legegyszerűbben megoldani ugyanezt a problémát, ha a futatandó v. megváltoztatandó config file-ok egy másik gépen vannak. Persze mindezt php alól.
Nagyon várom az ötleteket.

[quote:2c94e76f59="gabcsi"]Köszönöm a hozzászólásokat.

A másik kérdésem arra vonatkozna, hogyan lehetne a legegyszerűbben megoldani ugyanezt a problémát, ha a futatandó v. megváltoztatandó config file-ok egy másik gépen vannak. Persze mindezt php alól.
Nagyon várom az ötleteket.

public key, ssh, bash script,

mocsi!

Lehetne egy kicsit bővebben? egy -két sort példaként légy olyan kedves.
Előre is köszönöm.

[quote:f4911f5eb4="gabcsi"]mocsi!

Lehetne egy kicsit bővebben? egy -két sort példaként légy olyan kedves.
Előre is köszönöm.

1. public key azért kell, hogy ne kérjen jelszót a loginhoz. Persze ez rogton egy sechole...
ssh-keygen -t rsa
legyart ket file-t és a .pub tartalmát a server oldalon a $HOME/.ssh/authorized_keys majd modositani az ssh_config-ot hogy eloszor public key-vel kezdje az autentikalast
2. majd kiadni hogy ssh host.name egy_bash script username passsss
a kis script meg mondjuk valami ilyesmi:
echo pass >/tmp/temp
passwd username </tmp/tmp
rm -f /tmp/temp

Bena, de most hirtelen nem jut eszembe mi az ami stdinre dobja karatkert. asszem xargs vagy valami hasonlo

Esetleg megoldas, hogy a server-en csinalsz egy filet a user pass kombinacioval majd a masik gep kerdezi meg egy cron job-ban percenken hogy van-e ujdonsag...