Якщо користувач не може отримати доступ /a/b
, він не може отримати доступ до жодного файлу в розділі /a/b/c
. Дозволи на не /a/b/c
мають значення, оскільки обхід каталогів зупиняється на /a/b
.
Якщо все, що ви хочете, - це не допустити, щоб каталог /a/b
не був перелічений, але ви добре, якщо користувачі отримують доступ до файлів, /a/b
якщо вони здогадуються ім'я файлу, то ви можете зробити /a/b
виконуваним, але не читабельним. У каталозі дозвіл на читання контролює лише перелік вмісту каталогу, тоді як дозвіл на виконання контролює доступ до записів цього каталогу.
# 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 …
Якщо ви не хочете, щоб інші користувачі мали доступ до файлів за /a/b
винятком випадків /a/b/c
, ви можете експонувати їх /a/b/c
через інший вигляд, через кріплення прив’язки .
# 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