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

1

Atualmente, estou trabalhando em um script de backup para efetuar login no meu servidor de produção e extrair os dumps SQL mais recentes para o meu servidor de armazenamento temporário. Eu não tenho nenhum problema de puxar os dumps SQL, mas eu tenho um problema com a transferência dos últimos arquivos de backup para uma pasta temporária.

Meu usuário do script de backup: mysqlBackupUser

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

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

Meu script fica em bin e os backups são baixados no diretório backups

O diretório backups também possui outras pastas para organizar o servidor e o tipo de backups. I.E.:

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

Até agora, tudo está bem e funciona como esperado. A questão é quando estou em (não limitado a):

/home/mysqlBackupUser/backups/mysql/production1/

quando eu crio o diretório tmp chamado _lastBackUp e tento mover meus backups anteriores para ele, obtenho:

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

Para ser como o usuário. Não tenho certeza se esse é o problema e não posso testar efetuando login como este usuário. O script será executado pelo cron e ele agirá como esse usuário (as chaves são configuradas para facilitar a automação desse usuário) para fazer o processo, portanto, não tenho certeza se esse é realmente o problema.

Verifiquei que a propriedade e a permissão de todas as pastas, até mesmo o _lastBackUp , pertencem a mysqlBackupUser . Eu até defini _lastBackUp para 777 para testes e ainda tenho 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 find: Failed to change directory: Permission denied é para cada arquivo que estou tentando mover para _lastBackUp

Obrigado por qualquer ideia sobre isso.

    
por Jeremy 21.07.2014 / 22:32

2 respostas

2

Parece que o erro é sobre não ter permissão para alterar o diretório .

  • verifique se o usuário tem pelo menos r-x em cada pasta que leva ao caminho de onde o script foi executado.
  • verifique se o usuário tem pelo menos rwx na pasta + arquivos em que os backups estão localizados.
  • verifique se o usuário possui um shell de login, $HOME e $PATH . Se sim, faça o script cd para algum local relevante antes de iniciar a operação. Caso contrário, defina todos os comandos e locais usando caminhos absolutos .

Não consigo encontrar outras possíveis causas.

    
por 21.07.2014 / 22:56
0

Se o mkdir estiver funcionando, o que parece ser, se você executar um ls -al sobre o diretório pai que é o proprietário dos diretórios? Parece-me que algo está errado com permissões em algum lugar abaixo da linha.

    
por 21.07.2014 / 22:48