«前の日記(2009-09-20) 最新 次の日記(2009-09-23)» 編集

ポケットを空にして。

1985|10|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2100|01|

「人の心に残るというのが大事」と言う話。

何か連絡がある場合はメールでどうぞ(過去の日記へのツッコミは基本的にみていません)
プレゼントは随時受け付けております :-) ここ最近のツッコミ/トラックバックリスト。

  1. Henrich (10-05)
  2. kmuto (10-03)
  3. Henrich (10-03)


2009-09-21 [長年日記]

sudo sh -c "hoge"?? と sudo "hoge" の違い

あー sudo sh -c "hoge" と sudo hoge だと挙動が変わってくるのか…

$ sudo cat > /opt/hoge << _EOF_
hoge
fuga
hoge
fuga
_EOF_ 
 
bash: /opt/hoge: 許可がありません

と sudo cat だとダメでしたが

$ sudo sh -c "cat > /opt/hoge << _EOF_
hoge
fuga
hoge
fuga
_EOF_"
[sudo] password for user:
$ cat /opt/hoge
hoge
fuga
hoge
fuga

とできました。この違いがどこから来ているのか、いまいち理解できてない…

本日のツッコミ(全2件) [ツッコミを入れる]
_ tach (2009-09-22 01:46)

sudo cat > /opt/hosts < /etc/hosts の場合、リダイレクトを処理しているのは今起動している(sudo を起動する)ユーザのシェル。なので、そのユーザが書き込めない場所を指定すると、Permission denied になる。<br>一方、sudo sh -c "cat > /opt/hosts < /etc/hosts" の場合、リダイレクトを処理するのは sudo で起動されている sh となる。そのため、sudo 後のユーザ(おそらく root)が書き込める場所ならば書き込むことができる。

_ Henrich (2009-09-22 02:07)

リダイレクトがユーザのシェルが処理してるのか…それでは無理だ…