
Cuando lo uso mkdir -pm 764 a/b/c
, solo c
obtuve ese permiso 764, mientras que a
tengo b
el permiso predeterminado. ¿Por qué es así? ¿Por qué no todos los directorios obtienen el permiso 764?
Respuesta1
La mkdir
utilidad crea un directorio único. Cuando se usa con -m
él, se crea el directorio y se ejecuta efectivamente chmod
en él con los permisos otorgados (aunque esto no sucede en dos pasos, lo que podría ser importante en algunas circunstancias).
Con -p
, se crean los directorios intermedios que aún no existen. El modo dado -m
todavía solo se aplica al apellido en la ruta, ya que ese es el directorio que desea crear (los directorios intermedios se crean para permitir la creación de ese directorio con el modo dado).
ElEstándar POSIX paramkdir
decir que cada directorio intermedio debe crearse con el modo (S_IWUSR|S_IXUSR|~filemask)&0777
donde filemask
está el valor de umask de su shell.
En la sección "Uso de la aplicación", dice
[...] Para los componentes de nombre de ruta intermedios creados por
mkdir
, el modo es el predeterminado modificado poru+ wx
para que los subdirectorios siempre se puedan crear independientemente de la máscara de creación del modo de archivo; Si se desean permisos finales diferentes para los directorios intermedios, se pueden cambiar posteriormente conchmod
.
Esto significa que el modo para los directorios intermedios está configurado para permitirle crear un directorio que potencialmente no tiene permisos de escritura o ejecución de usuario. Si a los directorios intermedios tampoco se les otorgaran permisos de ejecución y/o escritura, no se podrían crear los últimos componentes de la ruta del directorio.
En su caso específico, utilice
mkdir -p -m 764 a/b/c
chmod 764 a/b
chmod 764 a
Si está seguro de que ninguno de los directorios existía anteriormente, utilice
mkdir -p -m 764 a/b/c
chmod -R 764 a