อะไรคือความแตกต่างระหว่าง 'ls' และ 'ls -l' เมื่อฉันไม่ได้รับอนุญาตให้ดำเนินการในไดเรกทอรีนั้น


11

ฉันสร้างไดเรกทอรีที่เรียกว่าfolderและนำสิทธิ์ดำเนินการออกไป

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

ตอนนี้ถ้าฉันทำ

$ ls folder

มันส่งออกรายการไฟล์ แต่เมื่อฉันทำ

$ ls -l folder

ฉันเข้าใจ

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

ทำไมถึงเป็นอย่างนั้น?


4
ตรวจสอบนี้คำตอบ มันมีคำตอบสำหรับคำถามของคุณ
Ramesh

2
"อะไรคือความแตกต่างระหว่าง 'ls' และ 'ls -l' เมื่อฉันไม่ได้รับอนุญาตให้ดำเนินการในไดเรกทอรีนั้น" โดยทั่วไปก็เป็นเช่นเดียวกับความแตกต่างระหว่าง 'LS' และ 'คำสั่ง ls -l' เมื่อคุณไม่ได้รับอนุญาตดำเนินการในไดเรกทอรี
G-Man กล่าวว่า 'Reinstate Monica'

คำตอบ:


18

ls -lในโฟลเดอร์พยายามที่จะstatเนื้อหาในขณะที่lsไม่:

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

ว่าทำไมคุณได้รับอนุญาต "ปฏิเสธ" ด้วยและไม่ได้มีls -lls

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.