URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID15
Нить номер: 2082
[ Назад ]

Исходное сообщение
"запуск пользователем только одной программы"

Отправлено Mishunja , 09-Июл-08 16:54 
Есть такая задача - пользователь test при удаленном входе в систему должен иметь право только на запуск одной программы-клиента: app.jnlp. Ничего другого пользователь на этой машине делать не должен (ну может только зайти по ftp в домашний каталог).В качестве ОС используется fedora 8.
Приложение запускается с помощью javaws и работает по сети с сервером.
Пользователь будет заходить на машину либо по ssh с редиректом X дисплея, либо с помощью nx-клиента.

Сделал так: прописал shell для пользователя test в /etc/passwd:
test:x:505:505::/home/test:/usr/share/app/app.sh

в app.sh прописал:
#!/bin/sh
/usr/bin/javaws /usr/share/app/app.jnlp

Но столкнулся с такой проблемой, что при коннекте по ssh сеанс сразу разрывается. Это происходит, вероятно, потому, что при запуске приложение, запускает дочерний процесс, который уже прорисовывает окошки, а первоначальный процесс при этом закрывается. С закрытием основного процесса закрывается и сессия. Эта догадка потверждается, если сделать локальный вход. Gnome выдает окно, что сеанс  длился меньше десяти секунд, нажмите ОК. При этом через некоторое время появляется окно проги.

Подскажите, как это обойти, или как правильно настроить то что мне нужно?

PS: чтобы смоделировать у себя такую проблему можно в app.sh написать:
#!/bin/sh
/usr/bin/gimp&

и попробовать залогинится... Не получилось? У меня тоже :)


Содержание

Сообщения в этом обсуждении
"запуск пользователем только одной программы"
Отправлено angra , 10-Июл-08 05:19 
>PS: чтобы смоделировать у себя такую проблему можно в app.sh написать:
>#!/bin/sh
>/usr/bin/gimp&
>
>и попробовать залогинится... Не получилось? У меня тоже :)

Ну зачем сразу с gimp, тяжеловат для тестов да и нет его у меня :)
Попробовал прописать usr/bin/xclock в качестве shell в /etc/passwd. Работает. Ради интереса сделал через шелловую обертку, как делаете вы, и тоже работает. Проверяйте на разрешенность xforward с обоих сторон.


"запуск пользователем только одной программы"
Отправлено Mishunja , 10-Июл-08 10:33 
>
>Ну зачем сразу с gimp?

это второе что в голову пришло после firefox :)

>Попробовал прописать usr/bin/xclock в качестве shell в /etc/passwd. Работает. Ради интереса сделал
>через шелловую обертку, как делаете вы, и тоже работает. Проверяйте на
>разрешенность xforward с обоих сторон.

В качестве shell не показательно. Хитрость именно через "обертку", причем с указанием амперсанда в конце /usr/bin/xclock&. Так не пробовали?

А xforward разрешен: Под другими пользователями спокойно запускают gnome и kde. Shell "обертку" использую потому, что проблемную прогу приходится запускать так: /usr/bin/javaws /usr/share/app/app.jnlp. А такую команду указать в качетве shell не получается :(


"запуск пользователем только одной программы"
Отправлено angra , 11-Июл-08 10:47 
>амперсанда в конце /usr/bin/xclock&. Так не пробовали?

Нет, а зачем если и без него работает :)
Проблема скорее специфическая для вашей команды, так как с простейшими приложениями типа xclock проблем не возникает. Я бы попробовал сделать перловую или сишную обертку с system(запуск дочернего, fork+exec+wait) и exec(замещение текущего), что-то из них может сработать.