Jaka jest różnica między „ls” a „ls -l”, gdy nie mam uprawnień do wykonywania tego katalogu?

11

Utworzyłem katalog o nazwie folderi zabrałem uprawnienia do wykonywania.

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

Teraz jeśli to zrobię

$ ls folder

wyświetla listę plików, ale kiedy to robię

$ ls -l folder

dostaję

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

Dlaczego?

Shnd
źródło
4
Sprawdź odpowiedź. Zawiera odpowiedzi na twoje pytanie.
Ramesh
2
„Jaka jest różnica między„ ls ”a„ ls -l ”, gdy nie mam uprawnień do wykonywania tego katalogu?” Zasadniczo, to jest taka sama, jak różnica między „ls” i „ls -l”, gdy nie mają uprawnienia do wykonywania w katalogu.
G-Man mówi „Przywróć Monikę”

Odpowiedzi:

18

ls -lna folderze próbuje uzyskać statjego zawartość, lsale nie:

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

Dlatego dostajesz „odmowę dostępu” z, ls -la nie z ls.

muru
źródło