そのディレクトリに対する実行権限がない場合の「ls」と「ls -l」の違いは何ですか?


11

というディレクトリを作成し、folder実行権限を奪いました。

$ mkdir folder
$ touch folder/innerFile
$ mkdir folder/innerFolder
$ chmod -x folder

今なら

$ ls folder

ファイルのリストを出力しますが、そうすると

$ ls -l folder

私は得る

ls: innerFile: Permission denied
ls: innerFolder: Permission denied

何故ですか?


4
この答えを確認してください。あなたの質問に対する答えがあります。
Ramesh 2014年

2
「そのディレクトリに対する実行権限がない場合の「ls」と「ls -l」の違いは何ですか?」基本的に、それはあなたが「LS」と「LSは-l」の違いと同じだディレクトリに実行権限を持っています。
G-Manは 'Reinstate Monica'を

回答:


18

ls -lフォルダーではstatコンテンツにアクセスしようとしますが、lsそうではありません。

$ strace ls folder -l
...
lstat("folder/innerFolder", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
getxattr("folder/innerFolder", "system.posix_acl_access", 0x0, 0) = -1 ENODATA (No data available)
getxattr("folder/innerFolder", "system.posix_acl_default", 0x0, 0) = -1 ENODATA (No data available)
lstat("folder/innerFile", {st_mode=S_IFDIR|0755, st_size=40, ...}) = 0
getxattr("folder/innerFile", "system.posix_acl_access", 0x0, 0) = -1 ENODATA (No data available)
getxattr("folder/innerFile", "system.posix_acl_default", 0x0, 0) = -1 ENODATA (No data available)
...

そのため、ではls -lなくで「アクセスが拒否されました」と表示されlsます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.