Saya membuat direktori d
dan file f
di dalamnya. Saya kemudian memberi diri saya hanya membaca izin pada direktori itu. Saya mengerti ini seharusnya berarti saya dapat membuat daftar file (misalnya di sini ), tetapi saya tidak bisa.
will@wrmpb /p/t/permissions> ls -al
total 0
drwxr-xr-x 3 will wheel 102 4 Oct 08:30 .
drwxrwxrwt 16 root wheel 544 4 Oct 08:30 ..
dr-------- 3 will wheel 102 4 Oct 08:42 d
will@wrmpb /p/t/permissions> ls d
will@wrmpb /p/t/permissions>
Jika saya mengubah izin untuk menulis dan mengeksekusi, saya dapat melihat file.
will@wrmpb /p/t/permissions> chmod 500 d
will@wrmpb /p/t/permissions> ls d
f
will@wrmpb /p/t/permissions>
Kenapa ini? Saya menggunakan MacOS.
Sunting: dengan mengacu pada jawaban @ ccorn, relevan bahwa saya menggunakan ikan dan type ls
memberikan yang berikut:
will@wrmpb /p/t/permissions> type ls
ls is a function with definition
function ls --description 'List contents of directory'
command ls -G $argv
end
permissions
osx
fish
wrgrs
sumber
sumber
alias ls='ls -G'
, yang saya pikir banyak orang lakukan.Jawaban:
Beberapa persiapan, hanya untuk memastikan bahwa
ls
tidak mencoba lebih banyak hal daripada yang seharusnya:Demonstrasi
r
izin direktori:Dalam sistem file Unix tradisional, direktori hanyalah daftar pasangan (nama, nomor inode). Nomor inode adalah integer yang digunakan sebagai indeks ke dalam tabel inode filesystem tempat sisa file metadata disimpan.
The
r
izin pada direktori memungkinkan untuk daftar nama-nama di dalamnya, tetapi tidak untuk mengakses informasi yang tersimpan dalam tabel inode, yaitu, mendapatkan jenis file, panjang file, hak akses file dll, atau membuka file. Untuk itu Anda memerlukanx
izin pada direktori.Inilah sebabnya mengapa
ls -l
,ls -F
,ls
dengan output kode warna dll gagal tanpax
izin, sedangkan hanyals
berhasil.The
x
izin saja memungkinkan akses inode, yang, diberi nama eksplisit dalam direktori tersebut,x
memungkinkan untuk mencari inode dan akses yang metadata direktori entri:Oleh karena itu, untuk membuka file
/a/b/c/f
atau daftar metadata-nya, direktori/
,/a
,/a/b
, dan/a/b/c
harus diberikanx
izin.Tidak mengherankan, membuat entri direktori memerlukan keduanya
w
danx
izin:Wikipedia memiliki ikhtisar singkat dalam sebuah artikel tentang izin sistem file .
sumber
/bin/ls d
menunjukkan isinya untuk saya. Terima kasih!-G
untuk keluaran berwarna, yang membutuhkan metadata, sehinggax
perms). Karena itu persiapan saya denganunalias ls
danunset CLICOLOR
. Saya seharusnya menambahkanunset -f ls
untuk menghapus definisi fungsi seperti itu juga. Diedit.Untuk membaca direktori, Anda juga harus dapat melintasinya (x bit). Jadi, paling tidak Anda perlu rx agar direktori dapat mengaksesnya dengan cara apa pun.
sumber
ls
seharusnya masih dapat membuat daftar file dalam direktori, bahkan jika direktori tidak dapat dieksekusi.