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

1

В настоящее время я работаю над сценарием резервного копирования для входа на рабочий сервер и загрузки последних дампов 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

Спасибо за понимание этого.

Джереми
источник

Ответы:

2

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

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

Я не могу придумать какие-либо другие возможные причины.

woohooyeah
источник
1
Ваш последний вариант сработал (перейдите к соответствующему месту)! Первоначально я был моим пользователем, и, когда sudo su mysqlBackupUserон появился, он сохранил пользователя в моем первоначальном каталоге. Странно, что он будет загружать файлы, к которым они принадлежат, и единственной проблемой было создание каталога tmp, тем более что я использую абсолютный путь. В любом случае, теперь это работает благодаря вашему последнему предложению! Спасибо!
Джереми
Круто, я рад, что это сработало.
woohooyeah
0

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

Сэм Беттс
источник
Я получаю:drwxrwxrwx 2 mysqlBackupUser mysqlBackupUser 4096 Jul 21 16:24 _lastBackUp
Джереми