• 締切済み

制限付きシェルについて

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

みんなの回答

  • heilel
  • ベストアンサー率100% (1/1)
回答No.4

質問日付的にあまり意味をなさないと思いますが、回答させて頂きます。 AIXの場合は、Rsh(restricted shell)を使います。 ※kシェル環境の場合、rksh Rshを使用すると仮定して、手順概要を下記します。 ※1:krshの場合は、置き換えて考えてください。 ※2:ユーザーの詳細設定やパスワード設定などは省いていますのでご了承ください。 1. login.cfgの確認  # cat /etc/security/login.cfg |grep Rsh  shellsに「/usr/bin/Rsh」が含まれていることを確認する。  ※無い場合は、追記する。 2.Rsh用ユーザーの作成。※以後、Rshuserとする。  初期プログラム を /usr/bin/Rsh にする。 3.Rshuserのhomeディレクトリの整備。※/home/Rshuserをホームと仮定する。  bin ディレクトリを作成する。  権限などの属性については/usr/binと同じにすること。  *1:chmod 755 bin  *2:chown bin:bin bin 4./home/Rshuser/binに使用させたいコマンドのシンボリックリンクを張る。  例)# ln -s /usr/bin/ls /home/Rshuser/bin  ※コピーでも可能だが、容量を食うのでお勧めしません。 5.Rshuserの「.profile」の PATH を以下参考例のように編集する。 例)PATH = /etc:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin ※$HOME/binは必須です。他は、ケースバイケース。 6.Rshuserにスイッチし、確認。 ・先ほどシンボリックリンクを張ったコマンドが使用できること。 ・それ以外のコマンドは実行できないこと。 ・組み込みコマンドも実行できないこと。 以上です。 また、質問のrmを使用制限させたいとのことですが、やはり認めてあげたほうが良いかと思います。 このRshを使用すれば、自分のいるパスのファイル・ディレクトリしか消せませんので。 最後に。 制限シェル以外でも、「chroot/jail」でも要件を満たせるかもしれません。

  • jpss7280
  • ベストアンサー率55% (5/9)
回答No.3

rm の制限はあまりお勧めしません。 smit やその他 シェルスクリプトで構成されたコマンドの中には rm で一時ファイルを削除するものが多数あります。 通常自分で作ったファイルを削除しますので rm の失敗は想定して折らず、 エラーもハンドリングしていないことが考えられます。 ファイルへのアクセス権限(mod や ACL)でカバーするほうが良いかと思います。 サポートに問い合わせして対応を相談したほうが良いかと。 AIX5.1はサポート終了していますが、深く調査が必要なもので無い限りは ある程度話を聞いてくれるのでは無いかと思います。

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.2

rが大文字のRshというのがあるみたいですよ。 http://publib16.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/cmds/aixcmds4/brsh.htm

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.1

全てを説明するのは面倒なので、IBMのドキュメントを openssh with AIX chroot http://www.ibm.com/developerworks/aix/library/au-settingupchroot/?S_TACT=105AGY06& binディレクトリで必要なものだけをコピーする

saido7
質問者

お礼

早い回答ありがとうございます。 とりあえず、調べてみようと思うのですが…難しそうですね… 何から手をつけていいかよく分からないですがやってみようと思います。

関連するQ&A

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

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

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

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

  • kshについて

    現在AIXなどのUNIX系のシステムの運用(AIXがほとんどです。)をやっているものです。 AIXのコマンドを勉強しようと思い、その一環でというか、シェルを作ったり、作られたシェルを 解析することでコマンドの勉強になると思い、シェルについて勉強しようと思っています。 そこで、シェルについての本を探しているのですがどのような本が良いでしょうか? 皆さんが実際に読んでみてよいと思った本を教えてください。 ちなみにkshです。 探してみたのは、 入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界 ブルース ブリン (著) UNIXシェルスクリプトハンドブック 関根 達夫 (著) です。 よろしくお願いします。

  • AIX/HP-UXでパスワード変更シェルを作成したい

    AIX/HP-UXで一括でパスワード変更を実行するシェルを 作成したいと考えております。 (最終的には複数サーバの複数ユーザのパスワードを  一括変更したい) そこで、AIXで以下の様なシェルを作成したのですが、 パスワード変更することができませんでした。 -------------------------------------- PASS=$1   "新パスワード USER=$2   "パス変するアカウント名 passwd $USER sleep 5 $PASS sleep 5 $PASS -------------------------------------- passwdコマンド自体は実行されるのですが、 その後の新パスワードが入力されておらず、 passwdコマンドタイムアウト後に新パスワードが 実行され、"新パスワードの文字列"が見つかりません。 となってしまいます。 インターネット等で検索した結果、linuxであれば expectコマンドを使用して、passwdコマンドを実行した 際に出力される「新パスワード:」を待ってから 入力すればよいということがわかったのですが、 linuxでexpectコマンドに相当するものを、AIXでは 見つけることができませんでした。 AIX/HP-UXにおいて、シェルスクリプトにてパスワード 変更を実現する方法をご存知の方がいましたら、 教えてください。 よろしくお願いします。

  • Solaris rmコマンドをシェルで実行するとうまくいかない

    オラクルのアーカイブログを定期的に削除するシェルを作ったのですが、rmコマンドがうまくいきません。使っている環境はkshで、業務の都合上rootユーザでシェルを実行しています。 コマンド:/bin/rm -fr /mnt01/arch01/*.log ちなみに、rootユーザでプロンプトからコマンドを手で実行すると削除ができます。 何が原因なのか見当がつかない状況に陥っています。宜しくお願いします。

  • コマンド制限・コマンド履歴

    こんにちは。 システム管理のお仕事をし始めて4ヶ月ほどの新米です。 課題ということで、Solaris上でのコマンド制限について調べています。 特定のIDに対してコマンドを制限し、さらに履歴もとるという内容。履歴に関してはリアルタイムでなくても良いということです。 一般ユーザのコマンド制限になります。 一番いいのはrbashのようなものなのですが、共通環境がCシェルなので、rbashの使用は難しいようです。 質問も頼りないものですが、よろしくお願いいたします。

  • シェルとは

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

  • シェルスクリプトのbashとperlについて

    シェルスクリプトのbashとperlについて 今さら気づいたのですが、PerlもUNIXのコマンドやシェルスクリプトとして使用できるということでしょうか。 RubyやPHPをUNIXのコマンドやシェルスクリプトとして使用することはできますでしょうか。 学ぶとしたら、bashとPerlのどちらが良いでしょうか。 また、シェルスクリプトはどんな用途や利点がありますでしょうか。 Webアプリケーションによるバックアップやログをタイマーでセットして自動的に取得したりすることは可能でしょうか。

  • リモートシェルでファイルをrootで実行させる方法

    UNIX1マシンから一般ユーザーで、ramshを使って UNIX2マシンのシェルをrootで実行させる、という仕組みを 自動化させたいのですが、パスワードが聞かれるためうまくいきません。 何か良い方法はあるでしょうか? もしくは一般ユーザーがUNIX2のシェルを実行し、その中で suコマンドを使ってrootであるファイルを実行する、というパターン でもいいのですが。 宜しくおねがいします。

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

    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系です。