2011-08-15 4 views
0

ここには奇妙な問題があります。残念ながら私はベンダーに属しているのでコードをここに掲載するのは自由ではありませんが、うまくいけば十分な情報を提供できるので、必要ではありません。UNIX/Linuxシェルスクリプトは、現在のユーザーを「終了」してログアウトすることはできますか?

ここで誰かが「bob」が「some_script.sh」を実行することが可能かどうかを確かに判断でき、そのセッションのMIDセッションから出て残りの部分のスクリプトは、ユーザー 'pete'(元々 'ボブ'と偽装されたsu'd)として続行します。

私はこれが不可能だと確信していますが、心に留めておくべき

もの:

  1. scriptA.shは、これらが10.sqlに至る01.sqlであると仮定することができますデータベース
    • に変更を加え、複数の他のプロセス(シリアル)を実行します。
    • 適切な引数を指定して 'sqlplus'を実行すると、これが実行されます。
  2. 'sqlplus'バイナリは、ユーザー 'bob'では使用できますが、ユーザー 'pete'では使用できません。
  3. ユーザーpeteは現在、ユーザーのbobにsu'dされています。これは、peteにPATHにsqlplusがないためです。
  4. スクリプト/データベースで見た出力は、'01 .sql 'が正常に実行されたが、他のものは正常に実行されていないことを示唆しました。' sqlplusコマンドが見つかりません 'というエラーで失敗しました。 UIDを切り替えるしようとするスクリプトを使用して

乾杯は、

+0

彼はそれが唯一の理由ですか?ちょうど 'slapate sqlplus | grep bin'をパスに追加してください – Dave

+0

すごい高速応答:)残念なことに、それは私たちのためのオプションではありません - 'bob'は実際にはsqlplusを実行するために必要なすべてのアクセス権とパスエイリアスを持つ機能的なユーザーです他にもいくつかのユーザーが共有しています。 – Sandipan

+0

それであなたは既に問題を発見したようです。 peteはsqlplusを実行することができません。シェルスクリプトが彼に欲しい場合、問題があります。どうしてボブはすべてを動かすことができないのですか? – Dave

答えて

2

あなたが与えた情報から、「いいえ、不可能です。」

ユーザー 'pete' suが 'bob'になっている場合、彼は 'bob'として新しいシェルを作成します。その新しいシェルから開始されたプロセスはすべて 'bob'として実行されます。 'bob'として実行されるスクリプトは、そのユーザー/ UIDを 'pete'に変更することはできません。 'bob'として開始されたプロセスは、そのユーザー/ UID(実行可能ファイルのsetuidビットがない)を変更することはできません。

スクリプトの一部は、シェル環境を変更し、スクリプト内のPATHやその他のエラーを変更している可能性が非常に高いです。

+0

優秀 - 答えてくれてありがとう。オフィスのここでのコンセンサスは、何らかの理由でスクリプトにexitコマンドが多すぎることがあったため、ユーザーを切り替えていたことです...しかし、スクリプト内にいくつのコマンドがあるとしても(トラップにもかかわらず)出口1 "....")、これは基本的に不可能です。あなたの答えは他のコメントと一緒に私の理解を確認し、問題は他のところにある。 – Sandipan

1

失敗する運命にあります。共有ログインを必要とするアクセス権システムは、定義上は安全ではありません。

意図したとおりにAIX許可システムを使用してください。タスクを実行するためにbobの資格情報が必要な場合は、Sandipanが実行できるプログラムを用意してください。このプログラムは、bobの資格情報が必要なものだけのbob権限に昇格します。

これはPrinciple of Least Privilegeで、ジョブの処理方法です。共有パスワードはハックを悪化させる悪いハックです。

+0

+1の原則 – zellio

+0

入力していただきありがとうございます。私はあなたが100%言っていることに同意します - 私は決してそのようなスクリプトを書いてはいけません....しかし、明確にするために、これは何ですか?良い/悪いデザイン。私たちは、スクリプトがUIDをAIX上で切り替えることができるかどうかを知る必要があります - 不注意に、あるいはそうでなければ - スクリプトの途中で。これは、これが可能なのかどうか、私たちの調査を助けるための私自身の好奇心のためです。 – Sandipan

+0

フェア 'ナフ、それは私が他の答えをupvoted理由です。 – msw

関連する問題