如果我对该目录没有执行权限,则“ ls”和“ ls -l”之间有什么区别?

申德

我创建了一个名为的目录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

这是为什么?

muru

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章