Отказано в доступе при попытке mv (sudo su userName)

Отказано в доступе при попытке mv (sudo su userName)

В настоящее время я работаю над скриптом резервного копирования для входа на мой производственный сервер и извлечения последних дампов SQL на мой промежуточный сервер. У меня нет проблем с извлечением дампов SQL, но у меня есть проблема с перемещением последних файлов резервной копии во временную папку.

Мой пользователь скрипта резервного копирования:mysqlBackupUser

Я использую домашний каталог этого пользователя как место для этого скрипта и для хранения резервных копий. Структура папок следующая:

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

Мой скрипт находится binи резервные копии загружаются в backupsкаталог

В backupsкаталоге также есть другие папки для организации сервера и типа резервных копий. IE:

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

Пока все хорошо и работает как и ожидалось. Проблема в том, что когда я нахожусь в (не ограничиваясь):

/home/mysqlBackupUser/backups/mysql/production1/

когда я создаю каталог tmp с именем _lastBackUpи пытаюсь переместить в него свои предыдущие резервные копии, я получаю:

find: Failed to change directory: Permission denied

Мой код для этого такой:

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

Для ясности:

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

Чтобы понять, как используется скрипт: В настоящее время я являюсь пользователем и я

sudo su mysqlBackupUser

Быть пользователем. Я не уверен, что это проблема, и я не могу проверить, войдя в систему как этот пользователь. Скрипт будет запущен cron и будет действовать как этот пользователь (ключи настроены для облегчения автоматизации для этого пользователя), чтобы выполнить процесс, поэтому я не уверен, что это действительно проблема.

Я проверил, что владельцем и разрешением всех папок, даже _lastBackUpпринадлежит mysqlBackupUser. Я даже установил _lastBackUp777 для тестирования и все равно получил отказ в разрешениях...

Моя полная ошибка:

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

Каждый из них find: Failed to change directory: Permission deniedпредназначен для каждого файла, который я пытаюсь переместить._lastBackUp

Спасибо за любую информацию по этому поводу.

решение1

Похоже, ошибка связана с отсутствием разрешенияизменятькаталог.

  • убедитесь, что у пользователя есть по крайней мере r-xкаждая папка, ведущая к пути, из которого выполняется скрипт.
  • убедитесь, что у пользователя есть как минимум rwxодна папка + файлы, в которых находятся резервные копии.
  • проверьте, есть ли у пользователя оболочка входа, $HOMEи $PATH. Если да, поместите скрипт cdв соответствующее место перед началом работы. Если нет, определите все команды и местоположения, используяабсолютныйпути.

Других возможных причин я придумать не могу.

решение2

Если mkdir работает, а это, похоже, так, если вы запустите ls -al в родительском каталоге, кто является владельцем каталогов? Мне кажется, что-то не так с правами доступа где-то в строке.

Связанный контент