Есть код:
<?php
system("rsh billing utm5_urfaclient -a edit_account -account_id 826 -credit 250", $arr);
echo $arr;
?>
В результате на странице выводится только число 1. Как я понял произошла ошибка и данныя команда не отработала. Апачь запускается под пользователем www, у этого пользователя есть домашняя директория /var/www, шел /sbin/nologin.
Данные:
Машина хостинга
ОС - CentOS
/var/www/.rhosts
-------------------------
127.0.0.1
xxx.x.xxx.x
billing.xxxx.ru
-------------------------
/etc/hosts
-------------------------
127.0.0.1 srv001.prov.ru srv001 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
xxx.x.xxx.x billing billing.xxxx.ru
-------------------------
/etc/sudores
-------------------------
www ALL=(ALL) NOPASSWD: SETENV: ALL
-------------------------
/etc/pam.d/rsh
-------------------------
auth required pam_rhosts.so no_warn
account required pam_nologin.so
account required pam_unix.so
session required pam_permit.so
password required pam_deny.so
-------------------------
/etc/hosts.allow
-------------------------
127.0.0.1
xxx.x.xxx.x
-------------------------На удаленной машине billing
/etc/hosts
-------------------------
xxx.xxx.x.xx xxxx.ru - IP - адрес хостинга
-------------------------
/etc/hosts.allow
-------------------------
ALL : ALL : allow
-------------------------
/etc/hosts.qvuiv
-------------------------
xxx.xxx.x.xxx - IP адрес хостинга
xxxx.ru - домен хостинга
-------------------------
Если в шеле запускать данную команду не из под root то выводится вот это:
[pve@srv001 _engine]$ php ./inf.php
rcmd: socket: Permission denied
1 - вот и эта еденичка
А если из под root, то все выполняется нормально.
если через sudo или указывать полный путь до команд все тоже самое.
Не подскажете в чем может быть проблемма? Как права сделать на конкретного пользователя?
>Не подскажете в чем может быть проблемма? Как права сделать на конкретного
>пользователя?Слава богу, дефолтную конфигурацию rsh сделали нерабочей и настроить его не так просто.
Замени
<?php
system("rsh billing utm5_urfaclient -a edit_account -account_id 826 -credit 250", $arr);
echo $arr;
?>на
<?php
system("ssh billing utm5_urfaclient -a edit_account -account_id 826 -credit 250", $arr);
echo $arr;
?>Сгенери ключи для юзера www на web-сервере, скопируй публичный ключ нужному юзеру в ~/.ssh/authorized_keys на billing. man ssh курить до просветления.
Если /sbin/nologin стоит для юзера www на billing, ты не зайдёшь туда ни rsh, ни ssh.
>Сгенери ключи для юзера www на web-сервере, скопируй публичный ключ нужному юзеру
>в ~/.ssh/authorized_keys на billing. man ssh курить до просветления.
>
>Если /sbin/nologin стоит для юзера www на billing, ты не зайдёшь туда
>ни rsh, ни ssh.Очень заманчивая идея, на машине billing для пользователя www стоят параметры:
www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/bin/sh
На машине хостинга:
www:x:48:48:Apache:/var/www:/sbin/nologinНа хостинге домашняя дериктория для пользователя www есть, а на billing нет, куда сделаные ключи нужно залить на billing и как сделать ключь специально для пользователя www, ведь когда я делаю команду ssh-keygen, то она вроде делает ключ для root или я не прав?
Извините за делетантство! =)))
>www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/bin/sh
>На машине хостинга:
>www:x:48:48:Apache:/var/www:/sbin/nologin
>
>На хостинге домашняя дериктория для пользователя www есть, а на billing нет,
>куда сделаные ключи нужно залить на billing и как сделать ключь
>специально для пользователя www, ведь когда я делаю команду ssh-keygen, то
>она вроде делает ключ для root или я не прав?Прав, поэтому нужно сделать домашний каталог пользователю www и дать права на него. ssh-keygen обязателен только на хостинге. Чтобы запустить ssh-keygen от www, сделай либо sudo -u www ssh-keygen, либо su -c ssh-keygen www