Jika pengguna tidak dapat mengakses /a/b
, maka mereka tidak dapat mengakses file apa pun di bawah /a/b/c
. Izin pada /a/b/c
tidak relevan karena direktori traversal berhenti di /a/b
.
Jika semua yang Anda inginkan adalah untuk mencegah direktori /a/b
tidak terdaftar, tetapi Anda baik-baik saja dengan pengguna mengakses file /a/b
jika mereka menebak nama file, maka Anda dapat membuat /a/b
executable tetapi tidak dapat dibaca. Pada direktori, izin baca hanya mengontrol daftar isi direktori, sedangkan izin eksekusi mengontrol akses ke entri direktori itu.
# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# echo 'hello' >/a/b/existingfile
# su bob -c 'ls -l /a/b'
ls: /a/b: Permission denied
# su bob -c 'cat /a/b/nosuchfile'
cat: /a/b/nosuchfile: No such file or directory
# su bob -c 'cat /a/b/existingfile'
hello
# su bob -c 'ls -l /a/b/c'
… contents of /a/b/c …
Jika Anda tidak ingin pengguna lain dapat mengakses file /a/b
kecuali /a/b/c
, Anda dapat mengekspos /a/b/c
melalui tampilan lain, melalui bind mount .
# chmod u=rwx,go=x /a/b
# chmod u=rwx,go=rx /a/b/c
# mkdir /c
# mount --bind /a/b/c /c
# su bob -c 'ls /a/b/c'
ls: /a/b/c: Permission denied
# su bob -c 'ls -l /c'
… contents of /a/b/c …
chmod +x /a/b