Sự khác biệt giữa 'ls' và 'ls -l' khi tôi không có quyền thực thi trên thư mục đó là gì?


11

Tôi đã tạo một thư mục được gọi foldervà lấy đi sự cho phép thực thi.

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

Bây giờ nếu tôi làm

$ ls folder

nó xuất ra một danh sách các tập tin, nhưng khi tôi làm

$ ls -l folder

tôi có

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

Tại sao vậy?


4
Kiểm tra câu trả lời này . Nó có câu trả lời cho câu hỏi của bạn.
Ramesh

2
"Sự khác biệt giữa 'ls' và 'ls -l' khi tôi không có quyền thực thi trên thư mục đó là gì?" Về cơ bản, nó giống như sự khác biệt giữa 'ls' và 'ls -l' khi bạn làm thực thi điều khoản trên thư mục.
G-Man nói 'Tái lập Monica'

Câu trả lời:


18

ls -ltrên một thư mục cố gắng với statnội dung của nó, trong khi lskhông:

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

Đó là lý do tại sao bạn nhận được "quyền từ chối" với ls -lvà không với ls.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.