嘗試 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 運行,並將充當該用戶(設定密鑰是為了簡化該用戶的自動化)來執行該過程,因此我不確定這確實是問題所在。

我已經驗證了所有資料夾的所有權和權限,甚至_lastBackUpmysqlBackupUser.我什至設置_lastBackUp為 777 進行測試,但仍然被拒絕權限...

我的完整錯誤是:

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備份所在的資料夾+檔案。
  • 驗證使用者是否有登入 shell,$HOME並且$PATH.如果是,請cd在開始操作之前將腳本放置到某個相關位置。如果沒有,請使用定義所有命令和位置絕對路徑。

我想不出其他可能的原因。

答案2

如果 mkdir 正在工作(看起來是這樣),如果您在父目錄上執行 ls -al ,誰是目錄的擁有者?在我看來,某些地方的權限出了問題。

相關內容