« 生キャラメルを作ってみた。 | メイン | Capistrano の本格導入 »
2009年6月10日
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」の仕様なのかもしれない。
投稿者 hideki : 2009年6月10日 22:17
トラックバック
このエントリーのトラックバックURL:
http://zephel.com/hideki/cgi-bin/mt/mt-tb.fcgi/2568