Interpretación 1: un directorio es un subespacio del sistema de archivos. Se puede subdividir aún más en subespacios creando subdirectorios en él. El propietario del directorio foo
debe tener control sobre todo dentro del subespacio: foo/bar
, foo/bar/qux
, etc.
Interpretación 2: un directorio es un subespacio del sistema de archivos. Cada directorio está conectado a otro directorio, llamado padre. El propietario del directorio foo
tiene control sobre todo dentro del subespacio; sin embargo, para un subdirectorio foo/bar
, el propietario de foo
tiene control sobre si bar
se puede adjuntar foo
pero no sobre lo que hay dentro bar
: solo el propietario de bar
tiene control sobre eso.
Evidencia a favor de la interpretación 2: como ha notado, la forma en que funcionan los permisos. Además, el hecho de que algunos sistemas de archivos Unix permiten adjuntar un directorio a más de un padre: esto se llama tener múltiples enlaces duros. (Tener múltiples enlaces duros es común para los archivos normales, pero generalmente se desaconseja o prohíbe para los directorios principalmente debido al riesgo de crear bucles, donde un directorio es su propio abuelo N veces eliminado, por lo que no puede acceder a él desde la raíz directorio, que es una expectativa muy común. También existe el problema de qué hacer si un directorio tiene 0 enlaces duros pero no está vacío: dado que el directorio no está conectado, querrás eliminarlo, pero ¿qué haces con su directorio? ¿contenido?)
Evidencia a favor de la interpretación 1: en la práctica, los directorios tienen un solo padre y, por lo tanto, forman una estructura de árbol. Y no puede acceder a foo/bar/qux
menos que tenga permiso de ejecución foo
y también bar
(bueno, excepto que hay formas algo oscuras de tener acceso bar
sin tener acceso a foo
). Entonces los niveles superiores sí importan.
En una nota más práctica, en su situación, el usuario A puede hacer
basura mkdir
mv foo / bar basura /
rmdir foo