Eu tenho um root cron
trabalho que cria um diretório em um HDD diferente montado e, em seguida, rsync
estou copiando todos os arquivos de SOURCE para TARGET. O script fica assim:
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}
O problema é que isso chmod 770
não altera as TARGET
permissões do diretório para 770. Como você pode ver, ele é criado com permissões 755.:
drwxr-xr-x 19 root root 4096 Mar 18 11:47 system_backup_2018_03_18_17_57_01/
Meu root cron
trabalho:
57 17 * * * umask 007; /path/to/script.sh
Como você pode ver, configurei umask 007 antes de executar o script. Então, falha em 2 frentes:
- Embora eu esteja definindo umask como
007
, as permissões reais não são as esperadas. - Embora eu esteja alterando explicitamente as permissões (
chmod 770
) para oTARGET
diretório, as permissões ainda não foram alteradas.
Alguma idéia de por que esses 2 casos não funcionam?
ATUALIZAR
A execução do script também sudo script.sh
não altera as permissões de TARGET
.
Responder1
Graças a PerlDuck
e Cyrus
o mistério está resolvido.
rsync -a
cria o diretório TARGET com as mesmas permissões que SOURCE (no meu caso 755).