2009年6月アーカイブ

sudo でのroot 権限の有効範囲

Capistrano でsudo でコマンドをリダイレクトするときに、操作がうまくできなかったが
とりあえず動くようになったまでのメモ。

オライリー bash クックブックによると
sudo bash -c 'command1 && command2 || command3'

コマンドのリダイレクトの有効範囲を「' '」の間で可能らしい。

sudo bash -c 'echo 'nrpe 5666/tcp' >> /etc/service'
→nrpe を実行とかいう状態で書き込み失敗。
 どうもスペースが入ってると都合が悪いらしい。スペースの無い内容だと書き込みができる。

たとえば
sudo bash -c 'echo 'root:/dev/null >> /etc/aliases'
の場合は問題なく書き込める。

なので、nrpe 5666/tcp を書いたファイルを/tmp とかにおいて読み込む。
sudo bash -c 'cat /tmp/hoge >> /etc/services'
→問題なく書けた。

sudo bash -c 'echo nrpe\t5666/tcp >> /etc/services'
で書けた。「\t」はtab の文字列。こんなんで良いんだね。

echo じゃなくて他の標準出力とかでやればできるのかもしれない。

これを「su -」 でroot になって同じことをすると書き込めるので 「sudo」の仕様なのかもしれない。

カテゴリ

ウェブページ

Powered by Movable Type 5.2.10

最近のブログ記事