¿Cómo funcionan los permisos de las carpetas anidadas?

¿Cómo funcionan los permisos de las carpetas anidadas?

1) No estoy seguro de cómo funcionan los permisos de directorio anidados.

Supongamos que tengo los siguientes directorios/archivos y permisos:

~/Private/ 700
~/Private/Group 770
~/Private/Group/Public 777

¿Es público realmente público?

2) Si quiero que Privado sea realmente privado, ¿importa si uso -R cuando hago 'chmod 700'?

3) He leído que Ubuntu usa una carpeta de inicio legible por Word de forma predeterminada y se niega a arreglarla. Pero cuando hago 'ls -lh' me sale esto: drwx------ (700, ¿verdad?). Entonces ¿cuál es? ¿Han cambiado de opinión sobre la carpeta de inicio?

Nota: estoy en una máquina virtual Ubuntu 12

Respuesta1

~/Private/ 700
~/Private/Group 770
~/Private/Group/Public 777

Un usuario que no es propietario de ~/Private/y ~/Private/Groupno podrá acceder a la carpeta Pública con estos permisos.

En Unix/Linux, debe agregar el bit de ejecución para que un usuario pueda atravesar (cambiar hacia o a través de) un directorio. Pero no es necesario otorgar acceso de lectura. Así que prueba esto en su lugar. Pero tenga en cuenta que el usuario debe saber que los directorios de grupo y público existen; no habrá forma de que los utilice lspara ver si existen a menos que también se le conceda acceso de lectura.

~/Private/ 711
~/Private/Group 771
~/Private/Group/Public 777

¿Importa si uso -R cuando hago 'chmod 700'?

Si ejecuta ese comando, cambiará los permisos de cada archivo en un directorio debajo del directorio de destino; si tiene algo con permisos diferentes, se perderán. Sospecho que también agregarías el bit de ejecución a muchos archivos normales, lo cual generalmente no es deseable.

Es posible que desee utilizar un comando como este en su lugar. Esto solo cambiará los permisos en el directorio y los subdirectorios, sin cambiar los permisos en los archivos.

find {directory_path} -type d -print0 | xargs --null -n 1 chmod 0700

Un comando similar para cambiar sólo los archivos se vería así.

find {directory_path} -type f -print0 | xargs --null -n 1 chmod 0600

información relacionada