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?


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.