Добрый день.
Вопрос такой: мне надо запускать определнную программу с ключами, когда пользователь логинится на сервер (Linux).С помощью vipw редактирую пользователя, вместо /bin/bash пишу что-то вроде /usr/local/mydir/myprogram -key. Но указанная программа с ключами не запускается. Подскажите, как правильно сделать.
>Добрый день.
>Вопрос такой: мне надо запускать определнную программу с ключами, когда пользователь логинится
>на сервер (Linux).
>
>С помощью vipw редактирую пользователя, вместо /bin/bash пишу что-то вроде /usr/local/mydir/myprogram -key.
>Но указанная программа с ключами не запускается. Подскажите, как правильно сделать.
>вероятно shell-script внутри которого:
#!/path/shell
...
/path/myprog [options]
...
>вероятно shell-script внутри которого:
>
>#!/path/shell
>...
>/path/myprog [options]
>...Благодарю. Теперь работает, но только если я захожу с консоли под рутом, а потом делаю su myuser.
Если логиниться сразу под myuser, после авторизации сеанс закрывается. Права на чтение, запись и исполнение проставлены на всю диреторию, откуда запускается нужная программа. ??
>>вероятно shell-script внутри которого:
>>
>>#!/path/shell
>>...
>>/path/myprog [options]
>>...
>
>Благодарю. Теперь работает, но только если я захожу с консоли под рутом,
>а потом делаю su myuser.
>
>Если логиниться сразу под myuser, после авторизации сеанс закрывается. Права на чтение,
>запись и исполнение проставлены на всю диреторию, откуда запускается нужная программа.
>??Правильно, как только Ваш скрипт завершил работу, сеанс считается законченным, после чего управление возвращается к getty
>>Если логиниться сразу под myuser, после авторизации сеанс закрывается. Права на чтение,
>>запись и исполнение проставлены на всю диреторию, откуда запускается нужная программа.
>>??
>
>Правильно, как только Ваш скрипт завершил работу, сеанс считается законченным, после чего
>управление возвращается к gettyХорошо. Можно как-то "не возвращать" управление getty, пока пользователь не отработает в запускаемой программе из скрипта, и сам не завершит ее выполнение?
Ведь если управление возвращается к getty, то мой скрипт, так сказать, вообще не имеет никакой пользы в данном случае: отработал, передал управление и сеанс завершился. А что с программой, которая должна была запуститься из скрипта? Как ей передать управление?
>>>Если логиниться сразу под myuser, после авторизации сеанс закрывается. Права на чтение,
>>>запись и исполнение проставлены на всю диреторию, откуда запускается нужная программа.
>>>??
>>
>>Правильно, как только Ваш скрипт завершил работу, сеанс считается законченным, после чего
>>управление возвращается к getty
>
>Хорошо. Можно как-то "не возвращать" управление getty, пока пользователь не отработает в
>запускаемой программе из скрипта, и сам не завершит ее выполнение?
>
>Ведь если управление возвращается к getty, то мой скрипт, так сказать, вообще
>не имеет никакой пользы в данном случае: отработал, передал управление и
>сеанс завершился. А что с программой, которая должна была запуститься из
>скрипта? Как ей передать управление?А Ваша программа интерактивная? Если да, то такой проблемы быть и не должно, если пользователь завершит ее сам. Если же Ваша программа неинтерактивная, то как выход можете написать в самом конце Вашего скрипта что-нибудь вроде:
exec /bin/sh
тогда пользователь получит приглашение командной строки. Завершив сеанс шелла, он таким образом выйдет из системы.
>А Ваша программа интерактивная? Если да, то такой проблемы быть и не
>должно, если пользователь завершит ее сам. Если же Ваша программа неинтерактивная,
>то как выход можете написать в самом конце Вашего скрипта что-нибудь
>вроде:
>
>exec /bin/sh
>
>тогда пользователь получит приглашение командной строки. Завершив сеанс шелла, он таким образом
>выйдет из системы.Да, программа интерактивная. Собственно, это СУБД GT.M, запускать которую надо в так называемом "direct mode" (для запуска программ "внутри" СУБД).
Сам скрипт вот:
#!/bin/sh
/usr/local/gtm/mumps -direct
Странно, что сеанс завершается после авторизации, т.е. СУБД и не запускается. Попробую еще дописать Ваш вариант.
>>А Ваша программа интерактивная? Если да, то такой проблемы быть и не
>>должно, если пользователь завершит ее сам. Если же Ваша программа неинтерактивная,
>>то как выход можете написать в самом конце Вашего скрипта что-нибудь
>>вроде:
>>
>>exec /bin/sh
>>
>>тогда пользователь получит приглашение командной строки. Завершив сеанс шелла, он таким образом
>>выйдет из системы.
>
>Да, программа интерактивная. Собственно, это СУБД GT.M, запускать которую надо в так
>называемом "direct mode" (для запуска программ "внутри" СУБД).
>
>Сам скрипт вот:
>
>#!/bin/sh
>
>/usr/local/gtm/mumps -direct
>
>Странно, что сеанс завершается после авторизации, т.е. СУБД и не запускается. Попробую
>еще дописать Ваш вариант.А если эту программу запускать из шелла, она работает так, как надо, или тоже завершается сразу? Не выдает ли она каких-либо ошибок? Если она ведет логи, можно заглянуть в них.
>А если эту программу запускать из шелла, она работает так, как надо,
>или тоже завершается сразу? Не выдает ли она каких-либо ошибок? Если
>она ведет логи, можно заглянуть в них.В том-то и дело, что работает так как надо:
1) Если запускать после регистрации пользователя из шелла (если в /etc/passwd прописан /bin/bash)
2) Если запускать после регистрации рута по команде su myuser (если в /etc/passwd прописан /usr/local/gtm/my_script)
Ведение логов отключено по-видимому.
Хорошо. Если попробовать запуск скажем редактора vi, то он должен отработать? Т.е. после создания текстового файла и закрытия редактора сеанс дожен завершиться?
>Хорошо. Если попробовать запуск скажем редактора vi, то он должен отработать? Т.е.
>после создания текстового файла и закрытия редактора сеанс дожен завершиться?Редактор vi работает так как надо. Т.е. сначала регистрация, потом запуск редактора, потом завершение сеанса.
По-видимому причина в самой программе.
Спасибо за помощь.
>>Хорошо. Если попробовать запуск скажем редактора vi, то он должен отработать? Т.е.
>>после создания текстового файла и закрытия редактора сеанс дожен завершиться?
>
>Редактор vi работает так как надо. Т.е. сначала регистрация, потом запуск редактора,
>потом завершение сеанса.
>По-видимому причина в самой программе.
>Спасибо за помощь.Скорее всего что-то, что очень нужно вашей СУБД прописано в профайле. Наверняка там выставляются какие-то переменные окружения.