Apache giriş dizinine bağlandı - İzin Hataları


15

im benim ana klasör içinde /var/www/yeni bir Webrootdizine symlinking birkaç sorun yaşıyorum . Sanırım bunlar linux izinlerini anlamamdan kaynaklanıyor.

Bildiğim kadarıyla im bağlantıları, bağlanmak istediğiniz dizinin biçimini ve bağlanmak istediğiniz dizini almalıdır, bu yüzden benim durumumda koştum:

sudo ln -s ~/Webroot/* /var/www/

i çalıştırırsanız bu tür, çalıştı lsüzerinde /var/www/benim tüm dosyaları görebilirsiniz Webrootdizinde.

WebrootKlasörümdeki bir dosyayı çalıştırmayı denediğimde , 403 izin hatası alıyorum, çünkü Webroot dizinimdeki dosyalar benim tarafımdan oluşturuldu ve apache örneği www-veri olarak çalıştırılıyor mu?

Bu durumda, çalıştırmak için oluşturduğum her dosyadaki izinleri değiştirmem gerekir mi?

Önceden Webrootklasöre benim varsayılan vhost dizin kökünü işaret benim yerel apache örneği çalıştırdım , bu durumda herhangi bir izin değiştirmek zorunda değildi. Herhangi bir yardım mutluluk duyacağız.


apache symlinks izlemek için yapılandırılmamış olduğundan emin olmak için kontrol .... bir kez bu sorun vardı. başka bir forumda ilgili bir konu burada olabilir: linuxforums.org/forum/servers/…
RobotHumans

Yanıtlar:


15

Bu iyi bir uygulama değil, Weboide'a katılıyorum. Ancak bu hedefe ulaşmanın basit bir yolu var.

1). apache userdir modülünü etkinleştirin.

sudo  a2enmod userdir

bu apache userdir modülünü etkinleştirecektir. Artık web sitesinin içeriğini ~/Webroot/ana dizininizin içine ya da içindeki herhangi bir yere koyabilirsiniz .

Not: Varsayılan klasör ~/public_html

2). İçin gerekli değişiklikleri yapın /etc/apache2/mods-enabled/userdir.conf.

3). Apache'yi yeniden başlatın

sudo /etc/init.d/apache2 restart

Artık siteye tarayıcınızı http: // ip-adres / ~ kullanıcı adı 'na giderek erişebilirsiniz . Bu site için bir sanal ana bilgisayar da ayarlayabilirsiniz.

Eğer php dosyalarını çalıştırmak için arıyorsanız bir adım daha yapmanız gerekir

/etc/apache2/mods-enabled/php5.confaşağıdaki satırları düzenleyin ve yorum yapın:

 <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Ardından apache'yi yeniden başlatın.

Bu kadar. Bitirdiniz.

Ref: https: //wiki.ubuntu.com/UserDirectoryPHP

Bu yardımcı olur umarım. Eğer herhangi bir zorlukla karşılaşırsanız, buraya göndermekten çekinmeyin.


7

Bu, istediğinizi başarmak için iyi bir uygulama değildir.

PHP kullanarak iseniz, bir göz atmak isteyebilirsiniz suexec , suPHP veya php-fpm ve fastcgi .


Sorununuzla ilgili haklısınız, bu Webrootdosyalarınızın farklı bir kullanıcıya ait olması nedeniyle bir izin sorunudur www-data.

Sorununuzu çözmek için o kadar da kötü olmayan bir çözüm. Muhtemelen sudo kullanmanız veya root olarak giriş yapmanız gerekecektir. Gerçekleştireceğiniz tüm komutları tam olarak anladığınızdan emin olun !!

Senin değiştirin Webrootgrup sahiplik kümesine sahip klasörü ve alt klasörleri ve dosyaları www-datauygun izinlere ve ayarlayın:

# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x

Düzenleme: Normal kullanıcı hesabınızı kullanarak dosya / klasör eklerseniz bu komutları tekrar çalıştırmanız gerekecektir.


2

Debian Lenny ile aynı şeyi yaptım, ancak hax olmayan moda geçtim, apache'yi doğru şekilde yapılandırdım. Ancak symlink ile:

$ ll /home
drwxr-xr-x  8 root   root   4,0K nov 14 14.59 .
drwxrwxrwx  7 root   root   4,0K nov 14 21.24 www -> /var/www

Ben ~ ve ~ / Webroot izinlerini kontrol gerektiğini düşünüyorum , dir (~) okunan korumalı olduğunu düşünüyorum , yani, bunu çalıştırmak zorunda:

$ ls -la /home

Doğru izinleri ayarlamak için şunu kullanın:

# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot

Sanırım, yardımcı olmalı, ama bana bu konuda daha fazla bilgi verin. Webroot'u direktörünüzden çıkarmanız için öneriyorum, ör. için / home benim gibi , bu güvenlik sorununa yol açabilir çünkü.

"#" kök izni anlamına gelir , ör. komutlardan önce sudo yazın ; "$" tek kullanıcı izni anlamına gelir


0

İzinleri yalnızca hedefinizle ilgili değil aynı zamanda ebeveynleri ile de kontrol etmelisiniz.


Neden? Bu bir Apache sınırlaması mı yoksa dosya sistemi sınırlaması mı?
Flimm

Afedersiniz. Bilgileri kontrol etmedim, sadece kişisel bir deneyime dayanıyor.
zVictor

0

Bu sorunla karşı karşıya kaldım. Ancak ana dizinimin grubunu www-data olarak değiştirme fikrinden hoşlanmadım. Bu sorun, virtualHost için yapılandırma dosyası değiştirilerek çözülebilir. Dizin etiketini bunları içerecek şekilde yapılandırmanız yeterlidir

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

Require all grantedSanırım yeni bir özelliktir; varsayılan değeri olan denied.

Referans için bu sayfaya bakın: http://httpd.apache.org/docs/current/mod/core.html#directory

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.