Permissão negada ao tentar mv (sudo su userName)

Permissão negada ao tentar mv (sudo su userName)

Atualmente, estou trabalhando em um script de backup para fazer login em meu servidor de produção e extrair os dumps SQL mais recentes para meu servidor temporário. Não tenho problemas em extrair os dumps SQL, mas tenho problemas ao mover os últimos arquivos de backup para uma pasta temporária.

Meu usuário de script de backup:mysqlBackupUser

Estou usando o diretório inicial deste usuário como local para este script e para armazenar os backups. A estrutura da pasta é:

/home
   |- mysqlBackupUser
       |- .ssh
       |- backups
       |- bin

Meu script entra bine os backups são baixados no backupsdiretório

O backupsdiretório também possui outras pastas para organizar o servidor e tipo de backups. Ou seja:

/backups
   |-mysql
       |- production1
       |- production2
   |-misc
       |- production1
       |- production2

Até agora está tudo bem e funcionando conforme o esperado. O problema é quando estou (não limitado a):

/home/mysqlBackupUser/backups/mysql/production1/

quando eu crio o diretório tmp nomeado _lastBackUpe tento mover meus backups anteriores para ele, recebo:

find: Failed to change directory: Permission denied

Meu código para isso é:

local tmpBackUpDir="${LOCAL_LOCATION_DIR}/_lastBackUp/"

# Ensure the directory exist
mkdir -p "${tmpBackUpDir}"

# move any previous files to bak
find "${LOCAL_LOCATION_DIR}/" -type f -exec mv -t "${LOCAL_BAKUP_DIR}" {} \+;;

Para maior clareza:

LOCAL_LOCATION_DIR = /home/mysqlBackupUser/backups/mysql/production1
tmpBackUpDir = /home/mysqlBackupUser/backups/mysql/production1/_lastBackUp/

Para entender como o script está sendo usado: Atualmente estou como meu usuário e estou

sudo su mysqlBackupUser

Ser como o usuário. Não tenho certeza se esse é o problema e não posso testar fazendo login como este usuário. O script será executado pelo cron e atuará como este usuário (as chaves são configuradas para facilitar a automação para este usuário) para executar o processo, então não tenho certeza se esse é realmente o problema.

Eu verifiquei que a propriedade e permissão de todas as pastas, até mesmo a _lastBackUpque pertence a mysqlBackupUser. Até configurei _lastBackUppara 777 para teste e ainda tive permissões negadas...

Meu erro completo é:

find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: Failed to change directory: Permission denied
find: failed to restore initial working directory: Permission denied

Cada um find: Failed to change directory: Permission deniedé para cada arquivo para o qual estou tentando mover_lastBackUp

Obrigado por qualquer visão sobre isso.

Responder1

Parece que o erro é não ter permissão paramudardiretório.

  • verifique se o usuário possui pelo menos r-xcada pasta que leva ao caminho de onde o script é executado.
  • verifique se o usuário possui pelo menos rwxa pasta + arquivos onde estão localizados os backups.
  • verifique se o usuário possui um shell de login $HOMEe $PATH. Se sim, faça o script cdpara algum local relevante antes de iniciar a operação. Caso contrário, defina todos os comandos e locais usandoabsolutocaminhos.

Não consigo encontrar outras causas possíveis.

Responder2

Se o mkdir estiver funcionando, o que parece estar, se você executar um ls -al no diretório pai, quem é o proprietário dos diretórios? Parece-me que algo está errado com as permissões em algum momento.

informação relacionada