2013-01-19 11 views
5

INTO OUTFILE komutunu kullanırken sorun yaşamaya devam etmenin nedenini anlamaya çalışıyorum.Errcode 13, OUTFILE DIŞI BIRAKIN.

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'; 

Faydalı ayrıntıları:

  • web uygulaması:

    Her zaman bu erroro olsun DVWA (localhost) (çalışma amaçlı)

  • Sunucusu: Apache/2.2. 14 (Ubuntu) - PHP/5.3.2

  • MySQL sürüm 5.1.63

  • İşletim sistemi Linux Backtrack 5r3.

Komutu root olarak çalıştırıyorum. Ayrıca,/var/www/ Errcode 13 klasörlerini veya dosyalarını serbestçe oluşturabilirim İzin reddedildiğini biliyorum, ancak sorunu çözmek için ne yapmalıyım?

Herhangi bir yardım çok takdir edilecektir.

+0

'p1.txt' zaten var mı (yapmamalı)? 'Mysqld' sürecinin altındaki kullanıcının'/var/www' dizinine yazma izni var mı? – eggyal

cevap

4

chown/var/www, başka bir yerde

dosyayı koyarak incelemek ister
+0

İyi çalışıyor ... Güvenlik nedeniyle bunu yapmamam gerektiğini biliyorum ... ama sadece bir MySQL verisini test etmek istedim exfiltrasyon örneği .. çok fazla .. – user1990170

+0

çalışmıyor! : @ – Hasan

7

Kök olarak MySQL'e giriş yapmış olsanız bile, dosya yazımı gerçek MySQL arka planını çalıştıran kullanıcı olarak gerçekleştirilecektir. Diğer bir deyişle, hangi kullanıcının mysqld çalıştırdığını kontrol etmeli ve bu kullanıcının dizinine yazma izni vermelisiniz. Dosya yazılmaya çalışılırken kullanıcı veya chmod 777/var/www

bu muhtemelen bunu yapmanın güvenli bir yol değildir için

+0

Çok karşı sezgisel, ama bu, her yerde 777'nin körü körüne ayarlanmasından çok daha iyi bir cevap. Teşekkürler! – miken32

5

mysqld için kullanıcı izinlerini değiştirmeniz gerekir. Kullanıcı durumunuzu ve yetkili dizinleri kontrol etmek için aşağıdaki komutu sudo aa-status çalıştırarak başlayın. izinleri değiştirmek isterseniz, /etc/apparmor.d/usr.sbin.mysqld'u düzenleyin ve istediğiniz dizinleri ekleyin.

sonra AppArmor selinux şey-hoş değil oynuyor centos üzerinde sudo /etc/init.d/apparmor restart

+1

Bu yasaldır. Gönderdiğiniz için teşekkürler! Sabırsız ve/veya hızlı bir komut yapmak isteyenler için, 'mysqldump -T', örneğin servis apparmor teardown 'bunu kapatacaktır.Bittiğinde, "hizmet başlatıcısı" hizmetini çalıştırabilir ve hayatı normale döndürebilirsiniz. –

0

yeniden başlatmanız gerekir.

$ getenforce 
Enforcing 

$ setenforce 0 
Permissive 

Şimdi bu ham, ama benim için çalıştı (yeniden başlatma kadar, o zaman geri döner). Bu geçici önlem çalışırsa, selinux'un nasıl düzgün yapılandırılacağı konusunda Google'a ihtiyacınız vardır.

+0

Teşekkürler, bu benim de sorunumun sebebi oldu! –

İlgili konular