2013-01-19 26 views
5

INTO OUTFILEコマンドを使用しているときに問題が発生し続ける理由を理解しようとしています。Errcode 13、SELECT INTO OUTFILE問題

私はいつもこのerroro取得:

ERROR 1 (HY000): Can't create/write to file '/var/www/p1.txt' (Errcode: 13) 


SELECT password FROM mysql.user WHERE user='root' INTO OUTFILE '/var/www/p1.txt'; 

便利な詳細:

  • Webアプリケーション:DVWA(ローカルホスト)(研究目的)

  • サーバー:Apacheの/ 2.2。 14(Ubuntu) - PHP/5.3.2

  • MySQLバージョン5.1.63

  • オペレーティングシステムLinux Backtrack 5r3。

私はrootとしてコマンドを実行しています。また、/ var/www /に自由にフォルダやファイルを作成することができます

Errcode 13私は、許可が拒否されたことを知っていますが、問題を解決するにはどうすればよいですか?

ご協力いただければ幸いです。

+0

'p1.txt'は既に存在していますか? 'mysqld'プロセスが'/var/www'ディレクトリに書き込む権限を持っていますか? – eggyal

答えて

4

chownコマンドは/ var/WWWのファイルを書き込もうとしたユーザ、またはchmodの777は/ var/WWW

に、これはおそらくそれを行うための安全な方法ではありません、あなたは他の場所

ファイルを入れて検討したいと思うかもしれません
+0

それはうまくいきます...セキュリティ上の理由から、私はそれをしてはいけないと知っています。しかし、私はMySQLデータのexfiltrationの例をテストしたいと思っていました。たくさんのことがあります.. – user1990170

+0

は機能しません! :@ – Hasan

7

rootとしてMySQLにログインしても、実際のMySQLデーモンを実行しているユーザーとしてファイル書き込みが実行されます。

つまり、どのユーザーがmysqldを実行しているかを確認し、そのユーザーのディレクトリに対して書き込み権限を与える必要があります。

+0

非常に直観的ではありませんが、どこでも盲目的に777を設定するよりもずっと良い答えです。ありがとう! – miken32

5

ユーザーmysqldのアクセス許可を変更する必要があります。まず、次のコマンドsudo aa-statusを実行して、ユーザーの状態と許可されたディレクトリを確認します。権限を変更する場合は、/etc/apparmor.d/usr.sbin.mysqldを編集して、必要なディレクトリを挿入します。

あなたは、SELinuxの事は、良くない再生されているCentOSの上でAppArmorのsudo /etc/init.d/apparmor restart

+1

これは合法です。投稿ありがとう!辛抱強く、そして/またはクイックコマンドを実行したい人のために、例えば 'mysqldump -T'、' service apparmor teardown'はそれをオフにします。完了したら、あなたは 'サービスアパルターのスタート'と生活を正常に戻すことができます。 –

0

を再起動する必要があります。

$ getenforce 
Enforcing 

$ setenforce 0 
Permissive 

これは基本的なことですが、私にとってはうまくいっています(再起動してから再びオンになります)。 この一時的な対策が有効な場合は、selinuxを適切に設定する方法についてGoogleに問い合わせる必要があります。

+0

ありがとう、これも私の問題の原因でした! –

関連する問題