Apa perbedaan antara 'ls' dan 'ls-l' ketika saya tidak memiliki izin mengeksekusi pada direktori itu?

11

Saya membuat direktori yang dipanggil folderdan mengambil izin eksekusi.

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

Sekarang jika saya lakukan

$ ls folder

itu mengeluarkan daftar file, tetapi ketika saya lakukan

$ ls -l folder

saya mendapat

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

Mengapa demikian?

Shnd
sumber
4
Periksa jawaban ini . Itu memiliki jawaban untuk pertanyaan Anda.
Ramesh
2
"Apa perbedaan antara 'ls' dan 'ls-l' ketika saya tidak memiliki izin mengeksekusi pada direktori itu?" Pada dasarnya, itu sama dengan perbedaan antara 'ls' dan 'ls -l' ketika Anda tidak memiliki mengeksekusi izin pada direktori.
G-Man Mengatakan 'Reinstate Monica'

Jawaban:

18

ls -lpada folder mencoba statisinya, sedangkan lstidak:

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

Itu sebabnya Anda mendapatkan "izin ditolak" dengan ls -ldan tidak dengan ls.

muru
sumber