Autorisation refusée lors d'une tentative de mv (sudo su userName)


1

Je travaille actuellement sur un script de sauvegarde pour me connecter à mon serveur de production et extraire les dernières sauvegardes SQL sur mon serveur de transfert. Je n'ai aucun problème à extraire les images SQL, mais le problème est de déplacer les derniers fichiers de sauvegarde dans un dossier temporaire.

Mon utilisateur de script de sauvegarde: mysqlBackupUser

J'utilise le répertoire personnel de cet utilisateur comme emplacement pour ce script et pour stocker les sauvegardes. La structure du dossier est:

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

Mon script se trouve dans binet les sauvegardes sont téléchargées dans le backupsrépertoire

Le backupsrépertoire contient également d'autres dossiers pour organiser le serveur et le type des sauvegardes. C'EST À DIRE:

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

Jusqu'à présent, tout va bien et fonctionne comme prévu. La question est quand je suis dans (pas limité à):

/home/mysqlBackupUser/backups/mysql/production1/

Lorsque je crée le répertoire tmp nommé _lastBackUpet que j'y déplace les sauvegardes précédentes, je reçois:

find: Failed to change directory: Permission denied

Mon code pour cela est:

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}" {} \+;;

Pour plus de clarté:

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

Pour comprendre comment le script est utilisé: Actuellement, je suis comme utilisateur et je suis

sudo su mysqlBackupUser

Être comme l'utilisateur. Je ne sais pas si c'est le problème et je ne peux pas tester en me connectant en tant qu'utilisateur. Le script sera exécuté par cron et agira comme cet utilisateur (les clés sont configurées pour faciliter l'automatisation de cet utilisateur) pour effectuer le processus, donc je ne suis pas certain qu'il s'agisse bien du problème.

J'ai vérifié que la propriété et la permission de tous les dossiers, même ceux _lastBackUp-ci, appartiennent à mysqlBackupUser. J'ai même mis _lastBackUpà 777 pour les tests et les autorisations ont toujours été refusées ...

Mon erreur complète est:

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

Chacun find: Failed to change directory: Permission deniedest pour chaque fichier que j'essaie de déplacer_lastBackUp

Merci pour tout aperçu de cela.

Réponses:


2

On dirait que l'erreur concerne le fait de ne pas avoir l'autorisation de changer de répertoire.

  • vérifiez que l'utilisateur a au moins r-xsur chaque dossier menant au chemin à partir duquel le script est exécuté.
  • vérifiez que l'utilisateur a au moins rwxsur le dossier + les fichiers où se trouvent les sauvegardes.
  • vérifier si l'utilisateur dispose d'un shell de connexion, $HOMEet $PATH. Si oui, placez le script cdà un emplacement approprié avant de commencer l'opération. Sinon, définissez toutes les commandes et tous les emplacements en utilisant des chemins absolus .

Je ne peux pas trouver d'autres causes possibles.


1
Votre dernière option a fonctionné (cd à l'emplacement approprié)! J'étais initialement en tant qu'utilisateur et quand sudo su mysqlBackupUseril apparaît, il a conservé l'utilisateur dans mon répertoire d'origine. C'est bizarre de télécharger les fichiers là où ils appartiennent et le seul problème était de créer le répertoire tmp, d'autant plus que j'utilise un chemin absolu. De toute façon, cela fonctionne maintenant grâce à votre dernière suggestion! Merci!
Jeremy

Cool, je suis content que ça fonctionne.
woohooyeah

0

Si mkdir fonctionne, ce qui semble être le cas, si vous exécutez un ls -al sur le répertoire parent, qui est le propriétaire des répertoires? Il me semble que quelque chose ne va pas avec les autorisations quelque part dans la suite.


Je reçois:drwxrwxrwx 2 mysqlBackupUser mysqlBackupUser 4096 Jul 21 16:24 _lastBackUp
Jeremy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.