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

Исходное сообщение
"Как указать ключи в shell"

Отправлено quest , 15-Сен-05 12:33 
Добрый день.
Вопрос такой: мне надо запускать определнную программу с ключами, когда пользователь логинится на сервер (Linux).

С помощью vipw редактирую пользователя, вместо /bin/bash пишу что-то вроде /usr/local/mydir/myprogram -key. Но указанная программа с ключами не запускается. Подскажите, как правильно сделать.


Содержание

Сообщения в этом обсуждении
"Как указать ключи в shell"
Отправлено lavr , 15-Сен-05 12:37 
>Добрый день.
>Вопрос такой: мне надо запускать определнную программу с ключами, когда пользователь логинится
>на сервер (Linux).
>
>С помощью vipw редактирую пользователя, вместо /bin/bash пишу что-то вроде /usr/local/mydir/myprogram -key.
>Но указанная программа с ключами не запускается. Подскажите, как правильно сделать.
>

вероятно shell-script внутри которого:

#!/path/shell
...
/path/myprog [options]
...


"Как указать ключи в shell"
Отправлено quest , 15-Сен-05 12:56 
>вероятно shell-script внутри которого:
>
>#!/path/shell
>...
>/path/myprog [options]
>...

Благодарю. Теперь работает, но только если я захожу с консоли под рутом, а потом делаю su myuser.

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


"Как указать ключи в shell"
Отправлено newser , 15-Сен-05 13:41 
>>вероятно shell-script внутри которого:
>>
>>#!/path/shell
>>...
>>/path/myprog [options]
>>...
>
>Благодарю. Теперь работает, но только если я захожу с консоли под рутом,
>а потом делаю su myuser.
>
>Если логиниться сразу под myuser, после авторизации сеанс закрывается. Права на чтение,
>запись и исполнение проставлены на всю диреторию, откуда запускается нужная программа.
>??

Правильно, как только Ваш скрипт завершил работу, сеанс считается законченным, после чего управление возвращается к getty


"Как указать ключи в shell"
Отправлено quest , 15-Сен-05 13:58 
>>Если логиниться сразу под myuser, после авторизации сеанс закрывается. Права на чтение,
>>запись и исполнение проставлены на всю диреторию, откуда запускается нужная программа.
>>??
>
>Правильно, как только Ваш скрипт завершил работу, сеанс считается законченным, после чего
>управление возвращается к getty

Хорошо. Можно как-то "не возвращать" управление getty, пока пользователь не отработает в запускаемой программе из скрипта, и сам не завершит ее выполнение?

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


"Как указать ключи в shell"
Отправлено newser , 15-Сен-05 14:42 
>>>Если логиниться сразу под myuser, после авторизации сеанс закрывается. Права на чтение,
>>>запись и исполнение проставлены на всю диреторию, откуда запускается нужная программа.
>>>??
>>
>>Правильно, как только Ваш скрипт завершил работу, сеанс считается законченным, после чего
>>управление возвращается к getty
>
>Хорошо. Можно как-то "не возвращать" управление getty, пока пользователь не отработает в
>запускаемой программе из скрипта, и сам не завершит ее выполнение?
>
>Ведь если управление возвращается к getty, то мой скрипт, так сказать, вообще
>не имеет никакой пользы в данном случае: отработал, передал управление и
>сеанс завершился. А что с программой, которая должна была запуститься из
>скрипта? Как ей передать управление?

А Ваша программа интерактивная? Если да, то такой проблемы быть и не должно, если пользователь завершит ее сам. Если же Ваша программа неинтерактивная, то как выход можете написать в самом конце Вашего скрипта что-нибудь вроде:

exec /bin/sh

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


"Как указать ключи в shell"
Отправлено quest , 15-Сен-05 15:02 
>А Ваша программа интерактивная? Если да, то такой проблемы быть и не
>должно, если пользователь завершит ее сам. Если же Ваша программа неинтерактивная,
>то как выход можете написать в самом конце Вашего скрипта что-нибудь
>вроде:
>
>exec /bin/sh
>
>тогда пользователь получит приглашение командной строки. Завершив сеанс шелла, он таким образом
>выйдет из системы.

Да, программа интерактивная. Собственно, это СУБД GT.M, запускать которую надо в так называемом "direct mode" (для запуска программ "внутри" СУБД).

Сам скрипт вот:

#!/bin/sh

/usr/local/gtm/mumps -direct

Странно, что сеанс завершается после авторизации, т.е. СУБД и не запускается. Попробую еще дописать Ваш вариант.


"Как указать ключи в shell"
Отправлено newser , 15-Сен-05 15:30 
>>А Ваша программа интерактивная? Если да, то такой проблемы быть и не
>>должно, если пользователь завершит ее сам. Если же Ваша программа неинтерактивная,
>>то как выход можете написать в самом конце Вашего скрипта что-нибудь
>>вроде:
>>
>>exec /bin/sh
>>
>>тогда пользователь получит приглашение командной строки. Завершив сеанс шелла, он таким образом
>>выйдет из системы.
>
>Да, программа интерактивная. Собственно, это СУБД GT.M, запускать которую надо в так
>называемом "direct mode" (для запуска программ "внутри" СУБД).
>
>Сам скрипт вот:
>
>#!/bin/sh
>
>/usr/local/gtm/mumps -direct
>
>Странно, что сеанс завершается после авторизации, т.е. СУБД и не запускается. Попробую
>еще дописать Ваш вариант.

А если эту программу запускать из шелла, она работает так, как надо, или тоже завершается сразу? Не выдает ли она каких-либо ошибок? Если она ведет логи, можно заглянуть в них.


"Как указать ключи в shell"
Отправлено quest , 15-Сен-05 15:40 
>А если эту программу запускать из шелла, она работает так, как надо,
>или тоже завершается сразу? Не выдает ли она каких-либо ошибок? Если
>она ведет логи, можно заглянуть в них.

В том-то и дело, что работает так как надо:

1) Если запускать после регистрации пользователя из шелла (если в /etc/passwd прописан /bin/bash)

2) Если запускать после регистрации рута по команде su myuser (если в /etc/passwd прописан /usr/local/gtm/my_script)

Ведение логов отключено по-видимому.

Хорошо. Если попробовать запуск скажем редактора vi, то он должен отработать? Т.е. после создания текстового файла и закрытия редактора сеанс дожен завершиться?


"Как указать ключи в shell"
Отправлено quest , 15-Сен-05 15:43 
>Хорошо. Если попробовать запуск скажем редактора vi, то он должен отработать? Т.е.
>после создания текстового файла и закрытия редактора сеанс дожен завершиться?

Редактор vi работает так как надо. Т.е. сначала регистрация, потом запуск редактора, потом завершение сеанса.
По-видимому причина в самой программе.
Спасибо за помощь.


"Как указать ключи в shell"
Отправлено mezantrop , 15-Сен-05 16:13 
>>Хорошо. Если попробовать запуск скажем редактора vi, то он должен отработать? Т.е.
>>после создания текстового файла и закрытия редактора сеанс дожен завершиться?
>
>Редактор vi работает так как надо. Т.е. сначала регистрация, потом запуск редактора,
>потом завершение сеанса.
>По-видимому причина в самой программе.
>Спасибо за помощь.

Скорее всего что-то, что очень нужно вашей СУБД прописано в профайле. Наверняка там выставляются какие-то переменные окружения.