人生最悪の忘れ物

現在、hetemlというレンタルサーバでバックアップ用のシェルをcron登録しているのですが、
権限エラーが出てしまいます。何の権限エラーなのか解らないのですが、
どなたかご存知ないでしょうか?

[エラーメッセージ]
/bin/sh: /home/sites/heteml/users/xxx/db_bakkup.sh: Permission denied

[シェル]
#!/bin/sh

# ---------- 設定 ----------
# バックアップ元のデータベース
db_host=xx
db_name=xx
db_user=xx
db_pass=xx

# バックアップ先のディレクトリ・ファイル
bk_file=/xx/bak.sql

# ---------- ファイル名を設定 ----------
# ファイル名を設定
file_temp=$bk_file.sql

# ---------- バックアップ処理 ----------
# バックアップ先のディレクトリに移動
cd $bk_dir
if [ $? != 0 ]; then
echo "Backup directory does not exist."
exit 1
fi


# データベースをダンプ
mysqldump -h$db_host $db_name -u$db_name -p$db_pass --opt > $bk_file
if [ $? != 0 -o ! -e $file_temp ]; then
echo "Cannot dump database."
exit 1
fi

exit 0
------------------------------------

有識者の方、ご教授お願い致します。

A 回答 (2件)

だれが吐き出しているエラーであるか記載しなとだめですよね。



cronデーモンのログに出ているのか、OSのシステムログなのか?

ちなみにそれぞれ見ましたか?

それによって「権限が無い」の意味合いが違うと思います。

cronであれば、実行者権限の設定を変えること。

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF …

で設定の仕方がでていますね。設定された実行ユーザーで行うので、その設定されているユーザーに実行権がないと、cronデーモンでは「権限が無い」とでると思われるが・・・・

db_bakkup.sh=[シェル]
の内容であれば、SHでこのシェルファイルの実行で「権限が無い」と言っている。つまり、No1さんが言うとおり

777
755
775

にすればいいことになる。いずにせよ、私ならまず設定をしっかり把握する事からお勧めする。それからでも遅くはないですよ。
    • good
    • 0
この回答へのお礼

#1さん,#2さんレス有難うございます。

権限エラーに関してはshファイルのパーミッションを777に設定することで解決しました!
その後もハマリましたが、
・shファイルをFTPソフトで転送時にアスキーモードで転送する
・mysqldump構文の-pの後ろにスペースを入れない
(mysqldump -h $db_host $db_name -u $db_name -p$db_pass --opt > $bk_file
)

という対処を行ったところ、無事バックアップが取れるようになりました。

この度はどうも有り難うございました!

お礼日時:2011/09/28 10:46

/home/sites/heteml/users/xxx/db_bakkup.sh のパーミッションが不足している?


取りえず、全ての権限を与える「777」を与えてcronで実行したらどうなります?

>mysqldump -h$db_host $db_name -u$db_name -p$db_pass --opt > $bk_file
「mysqldump」のパスが指定されていないのも気になりますが、777でどうなるかです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報