• ベストアンサー

ログインシェルの変更について

現在Unixを使っています。 特定ユーザでログインした際のログインユーザを自分の作ったプログラムにしたいのですが、 chshなどのコマンドを使っても、利用可能なログインシェルに登録されていないため変更できないです。 どうすればログインシェルを変更することができるでしょうか? 初歩的なことかもしれませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.5

> ですがAIXのVer5.1を使っています。 了解しました。ただ、言おうとしていたのは「違う実装のコマンドのマニュアルを見ても意味がない(少ない)」ということです。AIXの管理をするのにHP-UXのコマンドを見ても参考程度にしかなりませんし、見る人が理解していないと逆に有害にすらなります。 > ここにはどのような内容を書けばよかったのでしょうか? 一般論として、Unixのmanでコマンドのオプションがブラケット [ ] で囲まれているときは、それを省略することができます。 なので、chsh実行時のコマンドとしては以下6つのパターンがあることになります("$"で挟まれている部分には適当なモジュール名やユーザ名などが入ります) % chsh % chsh $Name$ % chsh $Name$ $shell$ % chsh -R $Module$ % chsh -R $Module$ $Name$ % chsh -R $Module$ $Name$ $shell$ ここで、-Rオプションで指定する「ロード可能 I&A モジュール (loadable I&A module)」が何か、ということは私も知らないのでお答えできませんが、ヘルプの末尾にあるサンプルを見ると、外部の認証装置を利用する場合などに指定するものと想像します。なので、現在普通にpasswdファイルで認証を行っているのであれば、ここは無視しても良いのではないでしょうか。 万全を期すのであれば、「ロード可能 I&A モジュール (loadable I&A module)」について調べましょう。 それから、「有効なシェルは、/etc/security/login.cfg ファイルの usw スタンザ内に定義されます。」と記述されていることから、chshで扱うshellは login.cfgファイル内に記述されている必要があると思われますので、ここを変更する必要があると思います。 login.cfgについては別途manが用意されているはずですので、変更するときはそちらを見て修正してください。

参考URL:
http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.files/doc/aixfiles/login.cfg.htm
saido7
質問者

お礼

本当に丁寧に教えていただきありがとうございます。 実際に作業するのは月曜以降になりそうですが、これから調べてやっていこうと思います。 ありがとうございました!

saido7
質問者

補足

遅くなりましたが、ログインシェルの変更はすることが出来ました。 しかし、ログインシェルを自分の作ったプログラムにすると強制終了?というかログインしたと同時に消えてしまうようになりました。 /home/usr/A/1←プログラムの場所+ログインシェルとして登録 /home/usr/A←ユーザのホームディレクトリ なのですが、いつもは、cshのシェルで入り1のコマンドでこのプログラムを起動させています。 ログインシェルとして使おうとするからこのように起動されないのでしょうか? もしくは、このユーザが使える場所にしかないから?起動されないのでしょうか? 私が予想していたのはログインするとそのプログラムが起動してくれると思っていたのですが… 本題の方は解決したのにすみません… よろしければ教えていただけないでしょうか?

その他の回答 (5)

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.6

> ログインシェルを自分の作ったプログラムにすると強制終了?というかログインしたと同時に消えてしまうようになりました。 私もよくわかりませんが……実は起動して所定の処理が終わった後、そのままログインセッションごと終了している、ってことはないですか? あと、所定のプログラムをログイン直後に実施したい、というだけだったら そのプログラムの実行を~/.login に記述する(login shellにcshを使っている場合)、なんて方法もあると思うのですが、それではだめなんでしょうか?

参考URL:
http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds1/csh.htm&resultof="csh"
saido7
質問者

お礼

あれから調べてみたのですが、どうやら1というファイルから他の場所に飛んでいるので実行できなかったようです。 今まで付き合っていただきありがとうございました。

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.4

質問者さんは「Unixを使っています。」とのことですが、具体的に何を使われていますか? 一口に「UNIX」と言っても、AIXとHP-UXとSolarisではコマンドの実装が少しずつ異なります。LinuxとFreeBSDでも違いがあります。 AIXでできたことがそのままSolarisやLinuxでできる保証はどこにもありません。 なので、例えばFreeBSDを使用している人が提示されたIBMやHPのサイトを見たところで、意味はありません。実装されているchshのマニュアル、つまりman chshを見てください。

saido7
質問者

お礼

早くのアドバイスありがとうございます。あと、説明不足で申し訳ありませんでした。 >AIXとHP-UXとSolarisではコマンドの実装が少しずつ異なります。 ですがAIXのVer5.1を使っています。 プログラムに関しては、現在、/bin/cshでログインした後、1というコマンドで起動させています。 プログラムの内容ですが、データを他の場所に送信したり、以前保管していたテープから、バックアップデータの取り出しなどをしています。 あと、IBMのサイトのことですが、man chshを翻訳すると、IBMのヘルプのページがまったく同じ内容だったため、きちんと翻訳されている方を参考にさせていただいていました。 もうひとつのサイトを使ってしまったのは下記の内容が良く分からなかったため参考にさせていただいたのですが、あまり意味がなかったようですね… -R load_module ユーザーのシェルの変更に使用するロード可能 I&A モジュールを指定します。 man chshで調べたときにchsh [-R load_module] [ユーザ名[SHELL]]とあったのですが、load_moduleに書けばよい内容が分からなかったためいろいろ探していたのですが、ここにはどのような内容を書けばよかったのでしょうか? すみませんが、よろしくお願いします。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

「迷ったらまずman(=マニュアル)を読め」というのはUNIX及びクローン系の鉄則です。 というか、それだけ出来ててmanを知らないというのが信じられないんですが……

saido7
質問者

お礼

返答が遅くなりすみません。 IBMのヘルプにman chshで実行したときと同様の内容があったため、このサイトともうひとつ参考になりそうなサイトを使い実行したのですがうまくいきませんでした。 参考サイト http://publib.boulder.ibm.com/infocenter/systems/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds1/chsh.htm http://docs.hp.com/ja/B2355-90850/chsh.1.html chsh -R files ユーザ名 /home/usr/A/1 ←自作のプログラムです chsh ユーザ名 /home/usr/A/1 これらのコマンドを実行すると、"ユーザ名"のシェルを"/home/.../1"に設定するときエラーが発生しましたとなります。 前にchshを使い対話式のほうで実行した際も同様の結果でした。 これはやはり/etc/shellsにプログラムが書かれていないためでしょうか?やり方が間違っているとかではないように思えるのですが… すみませんがよろしくお願いします。

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

> chshなどのコマンドを使っても、利用可能なログインシェルに登録されていないため変更できないです。 man chsh で chsh のマニュアルを見れば、自作のshell(?)をchsh使って切り替えられるようにするにはどうすればよいか書いてあります。 「利用可能なログインシェルに登録されていない」ところまでは自力でたどり着いたのですから、あと少しですね。 NO.1さんのいいたかったこともこういう事だと思いますよ。 別解もありますけど、ここでは伏せておきます:-P

saido7
質問者

お礼

回答ありがとうございます。 マニュアルを見ていろいろ試してみたのですが、なかなかうまくいきませんでした。詳しいことは次のお礼のところに書いているのでよろしければご教授おねがします。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

man chshはしてみましたか?

saido7
質問者

お礼

早い回答ありがとうございます。 man chshはまだ試していないのでやってみようと思います。 使い方はman chshと入れればよいのでしょうか? 後、プログラムは/home/usr/A/1にあるのですが、追加するしぇるは/home/.../1まで書けばいいのでしょうか? 質問ばかりですみません。

関連するQ&A

  • 制限付きシェルについて

    UNIXのAIXのVer5.1を使用しています。 rmなどのコマンドを制限させたユーザを作りたいのですが、どのようなシェルを使えばいいか分かりません。 rbashのような機能を持ったシェルなどはないのでしょうか? もしくは、ユーザに特定のコマンドを規制することはできないのでしょうか?

  • シェルスクリプトについて

    とあるUNIXサーバが1台あるとします。 でそのマシン上の管理プログラムが同一マシン上にある 「シェルスクリプト(bash)」をキックするとします。 となるとそのシェルスクリプトの実行者(?)は Unixにログオンしているユーザーになるのでしょうか?。 目的としてはそのログインしているユーザーの環境変数 をシェルから参照したいのですが・・ 考え方がWindowsなもので。。すみませんが よろしくお願いします。

  • シェル上からWEBログイン

    シェル上からWEBログイン 取得したフリーアドレスが30日に一度ログインしないと削除されてしまうのですが、 そのフリーアドレスは常に自動返信させたまま使い続けたいのです。 たまにログインすればよいのですが、できればシェルスクリプトで 自動的にログインだけできないかと考えてます。 ベーシック認証ならwgetで--http-user=USERとパスワードを利用すればログインできますが、 プロバイダのフリーアドレスだとIDパスの入力フォームになっているので困っています。 GETとかPOSTとか自分の要望にかないそうなコマンド?はみつかったのですが どうしたらよいかわかりません。 Windowsでvbsを作って自動的にログインさせる事はできますが、 LINUXサーバー内で勝手にログインを行わせたいと思っています。 パールとかPHPとかbashとか何でも良いので、LINUXサーバ内で フリーアドレスへログインするツールを作成できないでしょうか。

  • シェル

    UNIXでの開発を始めたばかりの初心者プログラマです。 バッシュやCシェルなどのカスタマイズ(例えばよく使うコマンドを登録するなど)を行いたいのですが、参考サイトや書籍があったら教えて下さい。

  • シェルとカーネルについて。

    UNIX等ではシェルとカーネルの概念は有名ですが、Windowsにもシェルとカーネルの概念があると聞きましたが、具体的にはどの機能(?)がシェルに当たるのでしょうか? UNIXとかならシェルはコマンドラインの命令をカーネルに伝える、というのでなんとなく分かるのですが、Windowsでは基本的にはGUIで操作するのでどこがシェルなのかな?と疑問に思います。 (コマンドプロンプトで実行する際はWindowsでのシェルの役割が何となく認識できますが) どなたか分かる方、ご意見・ご回答お願いします。 (乱文ですいません)

  • Bシェル内でのユーザー変更

    お世話になっております。 あるBシェルをJP1に登録しジョブ実行しようとしています。 Bシェル内には複数の処理があり、必要に応じてユーザー変更を行う必要があるのですが上手く行きません。 なお、禁止事項にrootユーザーでJP1実行、suid、guidの未指定があり上手く対応が出来ません。 どなたか上手く行く方法をご存知ありませんか? 行いたい処理は以下の通りです。 (1)実行ユーザーで実行 (2)posgreユーザーでログイン (3)ダンプファイルを取得 (4)posgreユーザーをログアウト (5)sshユーザでログイン (6)ダンプファイルを移動 (7)sshユーザをログアウト (8)終了 環境は シェルはBシェル OSはRHEL5.3 です。

  • シェルとは

     シェルとは【ユーザと対話する能力を持ち、カーネルに対して操作のお伺いを立てる仲介役のプログラム】と書かれていました。  また、シェルの機能として【コマンドとして入力された名前のプログラムを探し出して起動する。】ということも書かれていました。 そこで疑問を持ちました。前述では仲介役であると述べられてるのに対して、後述での機能ではプログラムを探し出し、起動する.と書かれていてCPUに指示・命令までしてるのか?と不思議に思いました。 下記のように解釈すればいいのでしょうか? プログラム探し出して起動するという命令をCPUに出すのはカーネルであり、あくまでもシェルとはユーザが打ったコマンドをOSが解釈できる形に翻訳してるプログラムにすぎないのですよね? 一般的なシェルの解釈は→仲介役 機能としてのシェルの解釈は→(カーネル+シェル) と考えればよろしいでしょうか?

  • Cシェル内で自動ログアウトさせたいんです。

    今、私が作っているのは、UNIXコマンドを知らない人達に、 一時的にTera TermよりUNIX機にログインして簡単な作業を してもらう為のCシェルです。 ほとんどコマンドを知らないわけですから、なるべくなら ログイン時にそのCシェルが起動して、作業を終えたら (シェルを終了したら or シェル内部で)自動的にログアウト するような物を作りたいのです!(~Q~;)。 つまり、なるべく変な事して欲しくないと。。。言うことなのですが、 まだ私がCシェル初心者なもので、やり方が解りません。 何か良い方法がありましたらお願い致します<(__)> ちなみに、SunOS 5.6 Solarisです。

  • シェルコマンドについて

    先日自分のPCにやっとLinuxをインストールし、UNIXの勉強に励もうと思って いるのですが、基本的なシェルコマンドがまだよくわからなく苦戦しています。 もし、『シェルコマンド一覧表』みたいなのが、記載されているサイトがあるならば、URLを教えて頂けませんか?  また、効率の良いシェルコマンドの覚え方があったら教えて下さい。  宜しく御願いします!

  • シェルのコマンドの仕組み

    シェルのコマンドの仕組みについて教えてください。 1、シェルのコマンドはシェルのフォルダにコンパイルされて保存されてるのでしょうか? 2、ユーザが打ったコマンドをシェルが解釈するときそのフォルダを検索して目当てのコマンドのプログラム実行してるのでしょうか? 間違えていたら、補足お願いします。