如果我对该目录没有执行权限,则“ 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说'Resstate Monica'2014/

Answers:


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.