sudoをつけてワイルドカードでlsするとPermission deniedになる

Author:

linuxのターミナルを使っているとまれに遭遇するエラー。

rootしか見れないディレクトリで、普通にlsをすると見えるのに、
ls *とワイルドカードをつけると読めなくなる場合があります。
これ、ワイルドカードの展開においてsudoが消えてしまうのが原因なのですが。
とりあえず対処法を。

sh -cでくくる

これが基本。
sudo sh -c ‘ls -l /var/log/httpd/*0310’とか。
こうすればちゃんと読めます。

シェルスクリプト書く

for inで回してsudoして実行。
悪くはないかも。
手間はかかるけど。

一時的に権限付与する

まあこっちのほうが楽かも。
見終わったら権限戻すとか。

もちろんlsに限らずrmとかでも同様の現象になりますが、同様にsh -cでくくれば動きます。
とりあえず普通にワイルドカード叩いても動いてくれないので覚えておきましょう。

Facebook にシェア
Pocket