[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:45822] Re: suid したスクリプトからのscp ssh



柴田(あ)です。

中間報告です。
とりあえず、希望することは達成しました。
が、試したりあるべき状態にするなどを終えて
まとめを報告したいと思います。

<20060201191027.098B.MASAKI@xxxxxxxxxxxx> の、
   "[debian-users:45762] Re: suid したスクリプトからのscp ssh" において、
   "Wed, 1 Feb 2006 19:38:41 +0900" 発信のメイルで
   "Masaki Ikeda <masaki@xxxxxxxxxxxx>"さんは書きました:

> 池田@オレンジです。
> 
> > 柴田(あ)です。
> 
> > スクリプトが setuid できないのは、承知しており、
> > perl だけはできると見つけて、今回はそのパッケージを
> > いれて使っております。
> 
> そうですか。
> 元のメールを良く読んでみたんですが(って今頃かぃ(^^;)perlのスクリプトは
> 
> #!/usr/bin/perl
> $ENV{PATH}="";
> system('/usr/bin/scp $FILE admin@$MSA:$DIR/');
> system('/usr/bin/ssh -l hoge REMOTE−SERVER sh /home/hoge/script/STEP3.sh');
> 
> これで全てなんでしょうか?

えぇ、これだけです。
転送して、リモートのスクリプトを実行するだけです。
変えているのはファイル名だけです。


> setuidすると、実効UIDは変わりますが、実UIDは変わりません。
> sshは、実効UIDではなく実UIDを見てるのではないでしょうか?

ということがわかりかけて途方にくれていたのでした。


> って事で、
> 
> #!/usr/bin/perl
> $<=$>;				←ココ追加
> すると良い・・・カモ
> 実UID($<)を実効UID($>)にセット

すばらしいです。
希望通りの動作になりました。


> ついでに言えば、
> -rwsr-xr-x  1 root staff 553 2006-02-01 11:16 /usr/local/bin/STEP2.general.pl
> というのもおかしい。
> root権限ではなく、hogeユーザの権限で実行したいのであれば、ownerをrootで
> はなくhogeにしとかないと・・・

確かにおかしいですね。
が、うまく動いちゃった(多分 hoge よりも
root 権限のほうが大きい権限だから?)ので、
権限をこれから締め付けていこうと思います。


これからの予定としては、
・斉藤さんのご指摘の「 HostBase 認証でやるパターンは試してない」ので、
  試してみたいです。
・土屋さんのご指摘の「  command="リモートで実行するコマンド" ssh-rsa ... 」
  はあるべき姿だと思いますので、いまの状態は仮の姿として移したいです。


また、仕組みとして root 権限で実行するスクリプトと
同じなので現在は root 権限で実行するスクリプトの
ラッパーとしてあります。
-r-x------  1 root staff /usr/local/bin/STEP2.sh 
という実行ファイルにして
-rwsr-xr-x  1 root staff  /usr/local/bin/STEP2.wrapper
というようにし、
#!/usr/bin/perl
$<=$>;
$ENV{PATH}=""; 
system('/usr/local/bin/STEP2.sh ');
というスクリプトにしました。


それでもって、 /usr/local/bin/STEP2.sh はというようにしました。
ひとつにまとめたのはメンテナンス性を考えたからです。
一般ユーザから root に suid して sudo -u hoge という
あたりがカナリ怪しいのですが、 6000 回ほどまわしても
問題がでないくらいなので、概ねいい感じです。

#! /bin/sh
FILE=/tmp/honyahonya
REMOTE-SERVER=www.example.jp
DIR=/tmp/queue
/usr/bin/sudo -u hoge /usr/bin/scp $FILE admin@$REMOTE-SERVER:$DIR/
/usr/bin/sudo -u hoge /usr/bin/ssh -l hoge $REMOTE-SERVER sh /home/hoge/script/STEP3.sh

# 実はリモートで動く /home/hoge/script/STEP3.sh は
# ルート権限で動くスクリプトをキックするための中身は
# sudo /usr/local/bin/STEP4.sh な変態スクリプトです (^^;
-- 
SHIBATA Akira      ケーブルテレビはまちづくり
shibata@xxxxxxxxxxxxxx   phone : +81-429-74-3611