mv (sudo su userName) を実行しようとしたときに権限が拒否されました

mv (sudo su userName) を実行しようとしたときに権限が拒否されました

現在、運用サーバーにログインして最新の SQL ダンプをステージング サーバーに取得するバックアップ スクリプトを作成中です。SQL ダンプを取得することには問題はありませんが、最新のバックアップ ファイルを一時フォルダーに移動する際に問題が発生します。

私のバックアップ スクリプト ユーザー:mysqlBackupUser

このスクリプトの場所として、またバックアップを保存するために、このユーザーのホーム ディレクトリを使用しています。フォルダー構造は次のとおりです。

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

私のスクリプトはそこにありbin、バックアップはbackupsディレクトリにダウンロードされます

ディレクトリbackupsには、サーバーとバックアップの種類を整理するための他のフォルダーもあります。例:

/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。テストのために 777 に設定しました_lastBackUpが、それでも権限が拒否されました...

私の完全な間違いは次のとおりです:

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 を実行すると、ディレクトリの所有者は誰ですか? どこかの段階で権限に問題があるように思われます。

関連情報