• ベストアンサー
  • すぐに回答を!

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

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

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数856
  • ありがとう数6

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

  • ベストアンサー
  • 回答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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

質問者からの補足

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

関連するQ&A

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

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

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

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

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

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

その他の回答 (5)

  • 回答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"

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.4

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早くのアドバイスありがとうございます。あと、説明不足で申し訳ありませんでした。 >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に書けばよい内容が分からなかったためいろいろ探していたのですが、ここにはどのような内容を書けばよかったのでしょうか? すみませんが、よろしくお願いします。

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

返答が遅くなりすみません。 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にプログラムが書かれていないためでしょうか?やり方が間違っているとかではないように思えるのですが… すみませんがよろしくお願いします。

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

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

man chshはしてみましたか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • ログインシェルと対話型シェルの区別について

    ログインシェルと対話型シェルの区別について理解していません。  ログインシェルはpsコマンドで見たときに-bashと表示されると書籍にありました。  テキストログイン(init 3)してpsコマンドをうっても-bashになっていません。  ご存知の方、いらっしゃいますでしょうか?

  • ログインシェルについて

    linuxにて/etc/passwdを閲覧すると、 /sbin/nologinというログインシェルがございります。 これは、ログインができないユーザとして割り当てられていると認識します。 1つ質問ですが、一般ユーザから例えば/sbin/nologinシェルの、 su - shutdownでスイッチするとpassword:とパスワードプロンプトが表示されます。 ということは、ログインが可能ということですか? よろしくお願いします。

  • シェル

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

  • シェルとは

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

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

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

  • シェルの中からシェルを呼び出して判定

    UNIXで以下のようなシェルが動作しております。 #!/bin/sh su abcdef -c './GHI'; err=$? if [! $err -eq 0 ] then echo エラーが発生しました fi exit このシェルは「abcdef」ユーザに移ってカレントディレクトリのシェルコマンド「GHI」の結果を判定するというものです。 UNIX上では問題なく動作しております。 これをLinuxでそのまま動作させると「err」に「su abcdef」というユーザ切替コマンド自身の正否を格納しているようです。 「'」でくくられた範囲内で結果をファイルに格納したりして、その後ファイルの中を見て判断するとうまくいくことは分かっておりますが、出来たらファイルなど使いたくありません。 このような場合、みなさんどうしてるんでしょうか? よく出てくるパタンだと思うのですがどうしても良い対処が見つかりません。 どうか宜しくお願いします。 Linuxは「miracle-Linux2.0」というOSです、いわゆるRedHat系です。

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

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

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

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

  • 自動ログイン(windows2000pro)

    起動後ある特定のユーザー/パスワード/ドメインにて自動起動するにはどのようにすれば良いのでしょうか?  VBで作成可能であれば、プログラムをご教示ください そのプログラム上に、ユーザー/パスワード/ドメインを定数等で持ち自動ログインはできないでしょうか?  その定数(ユーザ/パスワード/ドメイン)を変更することにより、容易に変更したく思っています やはり、ログイン前なので不可能でしょうか? 以上、初歩的な質問では御座いますが宜しくお願いいたします

  • WINDOWS ログイン画面の変更

    ログイン画面の変更を行おうとすると、「最近インストールされたプログラムによってようこそ画面とユーザーの簡易切り替えが無効になりました。変更を加えたプログラムの特定に次のファイル名が役立つ可能性があります・・・・」と出ますが、変更の仕方がわかりません。わかられるかたからの回答お待ちしております。