Tengo un root cron
trabajo que crea un directorio en un disco duro diferente montado y luego lo uso y rsync
copio todos los archivos de FUENTE a OBJETIVO. El guión se ve así:
date_cmd='date +%Y_%m_%d_%H_%M_%S'
TS_SUFFIX=`eval ${date_cmd}`
SOURCE_DIR=/
TARGET_DIR=/mnt/backup_hdd/system_backup_${TS_SUFFIX}
LOG_DIR=/shared_utils/logs/backupper
LOG_FILE=${LOG_DIR}/backupper_${TS_SUFFIX}.log
mkdir -p ${TARGET_DIR}
chmod 770 ${TARGET_DIR}
rsync -a --append-verify --info=progress2 --exclude-from=${EXCLUDE_LIST} ${SOURCE_DIR} ${TARGET_DIR}
El problema es que chmod 770
no cambia los TARGET
permisos del directorio a 770. Como ve, se crea con permisos 755:
drwxr-xr-x 19 root root 4096 Mar 18 11:47 system_backup_2018_03_18_17_57_01/
Mi root cron
trabajo:
57 17 * * * umask 007; /path/to/script.sh
Como puede ver, configuré umask 007 antes de ejecutar el script. Entonces, falla en 2 frentes:
- Aunque estoy configurando la umask en
007
, los permisos reales no son los esperados. - Aunque estoy cambiando explícitamente los permisos (
chmod 770
) alTARGET
directorio, los permisos todavía no se cambian.
¿Alguna idea de por qué estos 2 casos no funcionan?
ACTUALIZAR
Ejecutar el script con sudo script.sh
tampoco cambia los permisos de TARGET
.
Respuesta1
Gracias a PerlDuck
y Cyrus
el misterio está resuelto.
rsync -a
crea el directorio TARGET con los mismos permisos que SOURCE (en mi caso 755).