こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

お世話になっております。

あるBシェルをJP1に登録しジョブ実行しようとしています。
Bシェル内には複数の処理があり、必要に応じてユーザー変更を行う必要があるのですが上手く行きません。
なお、禁止事項にrootユーザーでJP1実行、suid、guidの未指定があり上手く対応が出来ません。
どなたか上手く行く方法をご存知ありませんか?

行いたい処理は以下の通りです。
(1)実行ユーザーで実行
(2)posgreユーザーでログイン
(3)ダンプファイルを取得
(4)posgreユーザーをログアウト
(5)sshユーザでログイン
(6)ダンプファイルを移動
(7)sshユーザをログアウト
(8)終了


環境は
シェルはBシェル
OSはRHEL5.3
です。

投稿日時 - 2010-02-22 14:54:42

QNo.5697258

すぐに回答ほしいです

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

- sudoを使う(/etc/sudoersの設定を細かく)
- 自分のホストに対してssh、rsh によるネットワーク接続
 ssh -l posgre localhost
 みたいな感じ。ssh の場合はRSA 認証にする必要あり。
- expectでパスワード入力を自動化
 →どこかにposgreユーザのパスワードを書いておく必要あり。

どれも root ユーザで JP1 起動や suid、sgid と比べて
いまいちな方法ですね。suid、sgid は危険と言われますが、
うまく使えば非常にセキュアに実装できるわけですから、
それと比較するのも無理がありますけど。

私ならまずはルール決めした人に相談してみて、実装方法について
それなりの回答をいただくかことを検討しますかね。

こういったケースでどのような実装をすることを想定してルール決めを
行われたのでしょうか?と。

ルール決めした人が答えられないならルールを覆すしかないわけですから。

ただ、他のチームが同様の処理を既に実装している場合は、
それを参考にするのがベターだと思います。

余談ですが、suid、sgidを使う場合、シェルスクリプトファイルに
直接設定することは望ましくありません。

C などで書かれたラッパープログラムを用意して、そこに suid なり
sgid などを設定し、ラッパープログラムでは seuid を行ったり、
exec してシェルを起動したりするように実装するのがよいでしょう。

投稿日時 - 2010-02-23 08:34:06

お礼

丁寧な回答ありがとうございました。
参考にさせていただきます。

投稿日時 - 2010-02-24 10:42:04

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>なお、禁止事項にrootユーザーでJP1実行、suid、guidの未指定があり上手く対応が出来ません。


suid,guidの未指定が禁止なら指定すればいいという話ですが、これはきっと、

>なお、禁止事項にrootユーザーでJP1実行、suid、guidの指定があり上手く対応が出来ません。

の間違いですね。

suとexpectを使うというのはあり得ないと思うので、sudo を使うんでしょうね。

投稿日時 - 2010-02-22 22:57:19

お礼

ご回答ありがとうございます。
参考にさせて頂きます。

投稿日時 - 2010-02-24 10:43:23

あなたにオススメの質問