LINUX.ORG.RU

Организация удалленной блокировки


0

0

Добрый день. Второй день пытаюсь написать необходимый мне скрипт. Мне нужно удаленно послать команду клиенту, которая спустя заданное колличество времени вызовит графический экран смены пользователя и заблокирует юзера.

Так как я в большей степени веб кодер, а линукс осваиваю недавно, решил организовать следующим образом.

Поставил на клиент апачь. на сервере клиента лежит php скрипт, к которому я обращаюсь удаленно, через браузер.

пхп скрипт запускает шелл скрипт примерно следующего содержания:

sudo usermod -U user1 sleep ${1}m export DISPLAY=:0.0 gdmflexiserver --startnew sudo usermod -L user1

Локально и под рутом скрипт работает как надо (правда тогда я убираю sudo для usermod) но удаленно работать не хочет

Во первых, ругается что "sorry, you must have tty to run sudo" (как я понял я не нахожусь в tty и не могу запустить судо..а где тогда выполняется скрипт?)

во вторых при запуске gdmflexiserver --startnew, ругается на cannot open display, хотя ведь export делается..

возможность удаленной блокировки мне нужно реализовать сегодня. помогите пожалуйста, что я не так делаю...может я вообще изобретаю велосипед?

Но очень желателньо оставить удаленное управление через браузер...

Организация удалленной блокировки

Попробовал следующие: Установил на скрипт suid бит.. права на файл как положенно стали -rwsrwx--- root apache

Но когда запускаю файл, команда id (я прописал ее в скрипте) все равно возвращает айди апача. тоесть права рута апачь не получает...

shapiro ()

Организация удалленной блокировки

для того чтобы выполнять команды на удалённой машине есть такая штука как ssh, именно для этого она и предназначена. Можешь сделать что-то вроде

ssh -f root@remote.machine "sleep ${1}m; su -c 'env DISPLAY=:0.0 gdmflexiserver --startnew' user1"

и не надо для этого поднимать целый апач на пользовательской машине (ещё непонятно как ты всё это было бы с точки зрения безопасности). Если очень хочется web-интерфейс — подними его на локальной машине чтобы он запускал ssh.

P.S. так как sleep должен где-то жить — в течение всех ${1} минут соединение с remote.machine будет жить в background.

pupok ★★ ()
Ответ на: Организация удалленной блокировки от pupok

Организация удалленной блокировки

Хммм...я тоже думал о ssh... но поднять на 20 машинах его, настроить ключи... у меня не так мног овремени осталось...хотелось бы все таки скриптом...но думаю если не получиться, попробую ssh...спасибо за идею.

shapiro ()
Ответ на: Организация удалленной блокировки от pupok

Организация удалленной блокировки

> в течение всех ${1} минут соединение с remote.machine будет жить в background

при желании можно отправить sleep в dtach -- тогда только команда будет чуть сложнее, но зато соединение с remote.machine не надо будет держать.

pupok ★★ ()
Ответ на: Организация удалленной блокировки от shapiro

Организация удалленной блокировки

"поднимать" надо именно апач, sshd почти везде и так есть по умолчанию. И настраивать на удалённых машинах (кроме запуска sshd) ничего не придётся.

pupok ★★ ()
Ответ на: Организация удалленной блокировки от pupok

Организация удалленной блокировки

хммм действительно...почему я считал, что только ssh клиент стоит по дефолту...все...убиваю апачь, и реализую Вашу идею... Как я понимаю, нужно сгенерить ключи дял ssh, что б не было запроса на пароль и все...

спасибо Вам!

shapiro ()

Организация удалленной блокировки

>удалленной

>удалленной

>вызовит

>апачь

дальше не искал.

да, и побольше таких веб-кодеров.

scaldov ★★ ()
Ответ на: Организация удалленной блокировки от pupok

Организация удалленной блокировки

В графической среде ошибка: Не удалось запустить новый дисплей Не удалось идентифицировать текущий сеанс

В терминале: ** (gdmflexiserver:2292): WARNING **: Unable to determine session: Unable to lookup session information for process '2292' ** (gdmflexiserver:2292): DEBUG: seat id is not set; can't switch sessions

shapiro ()
Ответ на: Организация удалленной блокировки от scaldov

Организация удалленной блокировки

К чему придираться к тексту? я такой кодер, какой я есть. Покрайней мере я стараюсь учиться и что то делать, а не искать чужие граматические ошибки. Если Вы не можете мне помочь, пожалуйста не загружайте ветку...

shapiro ()

Организация удалленной блокировки

Шелл-скрипты не реагируют на suid-бит. Это сделано в целях безопасности.

Так что man sudoers и кастуй апачу право выполнения нужных команд без пароля.

nnz ★★★★ ()
Ответ на: Организация удалленной блокировки от nnz

Организация удалленной блокировки

я настраивал судо, локально работало а утдаленно нет, говорил что может работат ьтолько на tty...но это уже не важно...решил проблему так:

Работа осуществляется через ssh блокировка и смена пользователя - gnome-screensaver-command -l

все работает. все кто помог - большое спасибо

shapiro ()
Ответ на: Организация удалленной блокировки от shapiro

Организация удалленной блокировки

> Не удалось запустить новый дисплей

ну это уже не проблемы ssh, он только команды запускает. За правильностью команд ты должен следить сам. Сначала посмотри на каком там DISPLAY иксы запущены, запущен ли там gdmflexiserver чтобы его перезапускать и т.д. Изначальный вопрос был "как выполнить команду на клиентской машине", а уж какую команду там выполнять -- задавай вопрос в новом топике.

pupok ★★ ()

Организация удалленной блокировки

насколько я правильно понял задачу - нужно вывалить пользователя из граф. среды и запустить сизнова авторизацию пользователя (графическую), если это так, то почему бы не: ssh root@remote_machine "/etc/init.d/gdm restart" - для гнома, или ssh root@remote_machine "/etc/init.d/kdm restart" для кед?

bsw_m ()
Ответ на: Организация удалленной блокировки от bsw_m

Организация удалленной блокировки

Нужно было не совсем вывалить, а временно. так что бы все окна и т.д. остались не тронутыми. я все решил с помощью gnome-screensaver-command...

shapiro ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.