Управление экраном Linux под пользователем root через php - PullRequest
0 голосов
/ 31 марта 2011

Я хочу создать скрипт, который будет запускать что-то в screen для пользователя root. Это должно быть сделано через функцию php system(), поэтому мне нужно найти способ sudo для получения root-прав и передачи пароля, используя PHP.

Ответы [ 2 ]

1 голос
/ 31 марта 2011

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

Если вы просто хотите записать сообщения из php-скрипта в один сеанс screen, попробуйте следующее:

В php

Открыть файл с доступом на запись и добавление:

$handle = fopen("/var/log/from_php", "wb");

Написать в свой файл:

fwrite($handle, "Sold another unit to " . $customer . "\n");

В вашем сеансе экрана

tail -F /var/log/from_php

Если вы не можете просто запустить tail в сеансе экрана, вы можете использовать утилиту write(1) для записи сообщений на разные терминалы. Смотрите write(1) и mesg(1) для деталей об этом механизме. (Мне не очень нравится такой подход, как лог-файл, потому что он долговечен и его можно искать позже. Но я не знаю точно, чего вы пытаетесь достичь, так что это еще один вариант, который может работать лучше, чем tail -F в лог-файле.)

1 голос
/ 31 марта 2011

Если вам действительно нужно sudo из PHP (не рекомендуется), лучше всего разрешать только определенные команды и не требовать пароль для них.

Например, если PHP работает как пользователь apache и вам нужно запустить /usr/bin/myapp, вы можете добавить следующее к /etc/sudoers (или везде, где есть sudoers):

apache ALL = (root) NOPASSWD:NOEXEC: /usr/bin/myapp

Это означает, что пользователь apache может запустить /usr/bin/myapp как root без пароля, но приложение не может выполнить что-либо еще.

...