Quelle est la différence entre «ls» et «ls -l» lorsque je n'ai pas l'autorisation d'exécution sur ce répertoire?

11

J'ai créé un répertoire appelé folderet j'ai retiré l'autorisation d'exécution.

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

Maintenant, si je le fais

$ ls folder

il sort une liste de fichiers, mais quand je le fais

$ ls -l folder

Je reçois

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

Pourquoi donc?

Shnd
la source
4
Vérifiez cette réponse. Il a des réponses à votre question.
Ramesh
2
"Quelle est la différence entre 'ls' et 'ls -l' lorsque je n'ai pas l'autorisation d'exécution sur ce répertoire?" En gros, c'est la même que la différence entre « ls » et « ls -l » lorsque vous n'avez l' autorisation d' exécution sur le répertoire.
G-Man dit `` Réintègre Monica ''

Réponses:

18

ls -lsur un dossier essaie statson contenu, alors lsque:

$ 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)
...

C'est pourquoi vous obtenez une "autorisation refusée" avec ls -let non avec ls.

muru
la source