Linux 'ls' コマンドおよびディレクトリ権限 - "/tmp/restricted/foo* にアクセスできません: そのファイルまたはディレクトリがありません。"

Linux 'ls' コマンドおよびディレクトリ権限 -

あるコマンドが機能し、他のコマンドが機能しないのはなぜですか?リモートで関連記事を見つけましたが、わかりません。

$ sudo ls -la /tmp/restricted
total 12
drwxr-x---.  2 root root    42 Mar 17 17:40 .
drwxrwxrwt. 12 root root 12288 Mar 17 17:37 ..
-rwxrwxr-x.  1 root tms      0 Mar 17 17:22 foo1
-rwxrwxr-x.  1 root tms      0 Mar 17 17:22 foo2
-rwxrwxr-x.  1 root tms      0 Mar 17 17:22 foo3

$ sudo ls -a /tmp/restricted/foo*
ls: cannot access /tmp/restricted/foo*: No such file or directory

/tmp/restrictedの権限を750ではなく755に変更すると、両方のコマンドが成功します。

$ sudo chmod 755 /tmp/restricted/

$ sudo ls -la /tmp/restricted
total 12
drwxr-xr-x.  2 root root    42 Mar 17 17:40 .
drwxrwxrwt. 12 root root 12288 Mar 17 17:37 ..
-rwxrwxr-x.  1 root tms      0 Mar 17 17:22 foo1
-rwxrwxr-x.  1 root tms      0 Mar 17 17:22 foo2
-rwxrwxr-x.  1 root tms      0 Mar 17 17:22 foo3

$ sudo ls -a /tmp/restricted/foo*
/tmp/restricted/foo1  /tmp/restricted/foo2  /tmp/restricted/foo3

ベストアンサー1

を実行すると、sudo ls -la /tmp/restrictedルートlsとして実行してアクセスできます/tmp/restricted

を実行すると、sudo ls -a /tmp/restricted/foo*シェル(ルートとしては実行されません)が拡張を試みます/tmp/restricted/foo*。あなたの場合は、主張を無視することはできません。ls引数を使用してrootとして実行すると、/tmp/restricted/foo*その名前のファイルが存在しないため、表示されるエラーメッセージで失敗します。

シェルがglobを使用しないように強制すると、同じエラーが表示されることがあります(現在のディレクトリにls "*"実際に名前が付けられたファイルがない場合)。*

おすすめ記事