アプリ版:「スタンプのみでお礼する」機能のリリースについて

SunOS 5.10を使っていますが
シェルを実行するのはAやBなど同一グループに属すユーザとしてシェルと作成し、
シェルの中で実行されるコマンドや子シェルはXというAやBと同一グループだけど
単一ユーザにしたいのですがそういう事は可能ですか?

・rootユーザはNG
・パスワードの入力は対話型でするのではなく自動化させたい
・rshやrloginなどは使いたくない
・恒久的にXというユーザのパスワード入力が省略されるのはNG
などが条件です。

要はツールをシェルで作って実行するユーザはマルチユーザ化したいが
シェル内ではパスワード入力などマルチユーザが意識しないで処理が止まる事なく
単一ユーザで処理させたい、出力したファイルなどの所有者も
単一ユーザとなるのようにしたいのですが。
わざと抽象的に書いていますが、なにか方法はありますでしょうか?

A 回答 (4件)

> やってみました。


> A.shlがkshだとうまくいくようですがcshだと
> 「csh 権限がありません」と怒られます。

本来シェルに suid をセットすることはセキュリティ上望ましくありません。なので、OSによってはブロックされる (suid が無視される) ケースがあります。

> ラッパープログラムってなんでしょう?

こんなやつです。

--
#include <unistd.h>
int main (int argc, char *argv[])
{ execv (argv[0], argv[1]); return 0; }
--

あとは、コンパイラがgcc であれば、

# gcc -o suid_wrapper suid_wrapper.c
# chmod u+s suid_wrapper

% ./suid_wrapper /usr/bin/csh ...

とすれば、csh は root ユーザ起動されるので、いけると思います。
くれぐれもセキュリティホールにご注意!!
    • good
    • 0
この回答へのお礼

cshも-bオプションで解消されました。
セキュリティの問題は目的が複数ユーザが特定のシェル(TOOL)を
利用できる事が目的でただし実行は単一ユーザにする事なので
問題ないと思っています。ありがとうございました。

お礼日時:2009/05/04 00:44

su ユーザ名 -c "実行コマンド"


では駄目でしょうか?

この回答への補足

su の場合
・パスワードの入力は対話型でするのではなく自動化させたい
・恒久的にXというユーザのパスワード入力が省略されるのはNG
が満たせないと思うのですが・・・

補足日時:2009/04/21 23:47
    • good
    • 0

シェルもしくはラッパープログラムに setuid を設定するのでダメですか?



プログラムに setuid を設定すると誰が実行してもプログラムの所有者の権
限で動作するようになるので、あとはグループに属さない人がシェルを実行
できないように、other に対して実行権限を与えなければ良い、つまりパー
ミッションを 4750 などにすればように思いますが。

この回答への補足

ラッパープログラムってなんでしょう?
とは別に、例えばA.shlが実際のシェルだった場合に
chmod 4755 A.shl
とするって事ですよね?やってみます。

補足日時:2009/04/20 21:46
    • good
    • 0
この回答へのお礼

やってみました。
A.shlがkshだとうまくいくようですがcshだと
「csh 権限がありません」と怒られます。
シェルの内容は
ksh:
#! /bin/ksh
touch test

csh:
#! /bin/csh
touch test

とtouchをするだけのシェルですが
kshの方はシェルの所有者と別のユーザで実行してもtestファイルが所有者と同じですがcshはそもそも上のエラーが出てしまいます。
なにが違う、いけないのでしょうか?
kshかcshって言語の違いのようなだけだと思っているのですが・・・

お礼日時:2009/04/22 00:00

suid?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!