プロが教える店舗&オフィスのセキュリティ対策術

全く同じ起動シェルなのに、
なぜか/etc配下に置かれた起動シェルからは起動できません。
原因は何でしょうか?

# diff /usr/share/mysql/mysql.server /etc/init.d/mysql
# /etc/init.d/mysql start
Starting MySQL....................[FAILED]
# /usr/share/mysql/mysql.server start
Starting MySQL [ OK ]

RedHatLinux4.0へMySQL5.0のパッケージを入れただけなのですが。。

A 回答 (3件)

はじめまして。



RedHatは良くわからなくて申し訳ありませんが、
スクリプトをデバッグオプションで実行してみたらどうでしょうか?

恐らくBシェルでかかれていると思いますので、

# /bin/sh -x /etc/init.d/mysql start
(パスは適宜換えてください)

と実行してみてはどうですか?
エラーが出てれば見てわかると思いますよ。

外していたらごめんなさい。

参考URL:http://www.atmarkit.co.jp/flinux/rensai/linuxtip …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
シェルのデバッグをする方法があるとは知りませんでした。

早速比較したところ、原因まではわからなかった為、
原因は不明ですが、下記手順を行った所、
/etc/配下でも起動させることができました(汗)
ファイルIDを変えるという裏技でした。
OSはLinuxですが、こんなこともあるのですね。

# cp /etc/init.d/mysql /tmp/mysql
# rm /etc/init.d/mysql
# cp /tmp/mysql /etc/init.d/mysql
# /etc/init.d/mysql start

お礼日時:2007/06/04 17:49

自己レスです;;



間違った事を書いていました。
質問者さんから反応が無かったので放置していました。
ごめんなさい。

> 恐らく、スクリプトファイルの内容は同じであっても、所有者が違ってなおかつスティッキービットと呼ばれるフラグが立っていたのかもしれません。

SUIDもしくはSGIDというフラグでした。
このフラグは、実行時にファイルの所有者権限で実行するものです。

お詫びして訂正します。
    • good
    • 0

対処された内容を聞いて、思い当たったことがあります。



それは、スクリプトの所有者です。
削除されたとのことで、今となっては判らないような気がしますが、
恐らく、スクリプトファイルの内容は同じであっても、所有者が違ってなおかつスティッキービットと呼ばれるフラグが立っていたのかもしれません。

それを確認するには、コマンドラインから

# ls -l

と実行すれば違いが判ります。(削除されたので今は判りませんが)

/usr/share/mysql/mysql.server ⇒ MySQLの実行を許可されたユーザ
/etc/init.d/mysql       ⇒ MySQLの実行を許可されていないユーザ

だったのでは無いかと思われます。

許可されていないユーザーでMySQLを実行しようとしてエラーになったのではないでしょうか。
そして、一方を削除してコピーするということは、同じファイル属性のコピーを作る事なので、そのスクリプトファイルでも実行が許可されるようになったと思われます。

もっと詳しく情報を求めていたら、判ったのですが・・・申し訳ありません。

ちなみに、恐らく今のMySQLはroot権限で動いているのではないかと推察しますが、外部公開していたらセキュリティホールになり、かなり危ないと思います。
ローカルで構築している分には気にすることは無いでしょう。

あくまでも推測ですので、間違っていたらご容赦ください。
    • good
    • 0
この回答へのお礼

犯人は、SELinuxでした。
SELinuxを無効とすることで無事起動しました。
ありがとうございます。

お礼日時:2007/06/18 12:44

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