Si un usuario no puede acceder /a/b
, no puede acceder a ningún archivo en /a/b/c
. Los permisos en /a/b/c
son irrelevantes ya que el recorrido del directorio se detiene en /a/b
.
Si todo lo que desea es evitar que el directorio /a/b
aparezca en la lista, pero está bien que los usuarios accedan a los archivos /a/b
si adivinan un nombre de archivo, entonces puede hacer que sea /a/b
ejecutable pero no legible. En un directorio, el permiso de lectura solo controla el listado del contenido del directorio, mientras que el permiso de ejecución controla el acceso a las entradas de ese directorio.
# 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 …
Si no desea que otros usuarios puedan acceder a los archivos, /a/b
excepto /a/b/c
, puede exponer a /a/b/c
través de otra vista, a través de un montaje de enlace .
# 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