Mac OS X altında Apache 2 site dosyaları / klasörleri için sahip / grup / izinler doğru mu?


114

Web'de bu soruya Mac'e özgü cevaplar bulmak zor, bu yüzden birisinin bunu benim için dinlendirmesini umuyorum. Sitelerimdeki izinlerim mahvoldu ve açıkça yanlış olan her şeye yinelemeli bir 777 çarpmadan bunları nasıl düzelteceğimi bilmiyorum.

Teşekkürler!

Yanıtlar:


186

~/my/web/root/Web içeriğiniz için varsayımsal dizin için burada açıklandığı gibi, bulduğum en kısıtlayıcı ve en güvenli yol budur :

  • Web köküne giden her üst dizine için (örneğin ~/my, ~/my/web, ~/my/web/root):
    • chmod go-rwx DIR (içeriğin sahibinden başka hiç kimse içeriğe erişemez)
    • chmod go+x DIR (_www dahil "kullanıcıların" dizine "girmesine" izin vermek için)
  • sudo chgrp -R _www ~/my/web/root (tüm web içeriği artık grup _www)
  • chmod -R go-rwx ~/my/web/root (sahibinden başka hiç kimse web içeriğine erişemez)
  • chmod -R g+rx ~/my/web/root (tüm web içeriği artık _www tarafından okunabilir / çalıştırılabilir / girilebilir)

Diğer tüm çözümler dosyaları diğer yerel kullanıcılara ("personel" grubunun bir parçası ve aynı zamanda açıkça "o" / diğerleri grubunda olan) açık bırakır. Bu kullanıcılar daha sonra, içeriğinizin bir parçasıysa, web yapılandırma dosyalarınızdaki ve komut dosyalarınızdaki DB yapılandırmalarına, kaynak koduna veya diğer hassas ayrıntılara özgürce göz atabilir ve bunlara erişebilir. Bu sizin için bir sorun değilse, o zaman elbette daha basit çözümlerden birini seçin.


3
chmod go+rx DIRLs izin hatası atmayı durdurmadan önce / Users / username dizin seviyesinde x bayrağına ek olarak okuma erişimi vermem gerekiyordu . Neden acaba?
bhavinb

1
@mike, Tüm dosyalar ve dizinler hala size (kullanıcı) ait olacak ve yine de yazılabilir olacaktır. Chgrp yalnızca "_www" grubunun dosyaları okumasına izin verir .
dkamins

2
Web sitesi komut dosyalarının kendi klasörlerini oluşturmasını ve webroot içinde kendi dosyalarını yazmasını bekleyen sistemler için (birçok CMS'nin yaptığı gibi) _www grubuna yazma izinleri vermem gerekiyordu. Böylece son adım olur chmod -R g+rwx ~/my/web/root. Herhangi bir itirazınız veya bunu yapmanın daha iyi bir yolu @dkamins?
Jpsy

1
@Jpsy Uygulamanızın kendi kendine yazması gerekiyorsa bu iyi çalışacaktır. Diğer kod da _www olarak çalışıyorsa (ve CMS kodunu kötü niyetle değiştirebilirse), diğer olası güvenlik sorunlarını ortaya çıkarır, bu yüzden dikkatli olun. Yazılabilirliği (g + w) daha derin bir alt dizinle sınırlayabilirseniz, bu daha da iyidir.
dkamins

1
Bu artık birkaç yaşında, zaman ilerliyor ve OS X, varsayılan Apache sunucusunun zaman zaman çalışma şeklini değiştirmeyi seviyor. Bu nedenle, bu çözüm hala çalışsa da, bu noktada, uygulamalarınızı OS X'in kendisini kullanmak yerine test etmek için yerel VM'ler oluşturmanın alternatif çözümünü şiddetle tavsiye ederim. Bakınız: vagrantup.com
dkamins

30

Terminal'i gerçekten sevmiyorsanız, dkamins yapmanın GUI yolu size şunu söylemektir:

1) Kullanıcı ana dizininize gidin ( ludo benim olabilir) ve Dosya menüsünden denetçide Bilgi Al'ı seçin cmdI:

Bilgi Al penceresi Paylaşım ve İzinler bölümü

2) [+] işaretini alt/optiontıklayarak _www grubunu ekleyin ve salt okunur olarak ayarlayın :

Bilgi Al vurgulanan Kullanıcılar ve Gruplar ve World Wide Web Sunucusu vurgulanmış olarak ekleyin

  • Bu nedenle, kişisel bilgileri kullanıcı ana klasörünüzün (ve sabit diskin) kökünde depolamamayı düşünün (iyi uygulama)!
  • ** Herkes ** grubunun ** salt okunur ** izni varsa bu adımı atlayabilirsiniz, ancak AirDrop ** / Public / Drop Box ** klasörü çoğunlukla yararsızdır ...

3) Kullanıcı Siteler klasörünüzün Bilgi Alma denetçisini gösterin ve 2. adımı yeniden oluşturun, ardından dişli eylemi alt menüsünden Ekteki Öğelere Uygula'yı seçin ... :

Bilgi Al eylem alt menüsü Ekteki Öğelere uygula ... vurgulanır

Voilà 3 adım ve GUI tek yol ...


2
Bana burada yardımcı olmadı, ama ALT + [+]numarayı bilmek güzel . Teşekkürler.
Tom

1
Şimdiye kadarki en iyi yol budur, alt + tıklama doğru şekilde _www kullanıcısını gösterir
CoolArts

Bu, konuk dosya paylaşımını etkinleştirdiyseniz veya kötü amaçlı bir php komut dosyası yüklediyseniz geçerlidir… Yalnızca herkes tarafından "okunabilen" Genel ve Siteler klasörünün bulunduğundan emin olun. 3. Adım yalnızca "Siteler" klasörü için geçerlidir ... Bu nedenle normalde diğer klasörler değiştirilmemelidir ...
llange

Buna gerek olmamalı. _www herkes grubunda.
DarkNeuron

Bu alt [+] hakkında bilmek güzel !! Thx
Remi Grumeau

12

Bunun eski bir gönderi olduğunu biliyorum, ancak Mountain Lion'a (10.8) yükseltme yapan ve benzer sorunları yaşayan herkes FollowSymLinksiçin, {username} .conf dosyanıza (/ etc / apache2 / users / içine) eklemek benim için hile yaptı. Yani dosya şuna benziyor:

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

Kullanmadığım bir "git" kullanıcısı yarattım ve bu dizinde düzenlemek için mevcut olan tek şey buydu (git.conf). Dosyayı yukarıda git kullanıcısı için açıklandığı gibi güncellediğimde - kurduğum dizin apache tarafından doğru bir şekilde sunuldu. Bu bana mantıklı gelmiyor çünkü git kullanıcımın oluşturulan dizinlerle veya apache ile ilgisi yok.
ktamlyn

9

2 aylık iş parçacığı, ama geç olması hiç olmamasından iyidir! 10.6'da, web sunucusu belgeleri klasörüm şu şekilde ayarlandı:

owner:root
group:_www
permission:755

_www, Mac OS X altında apache çalıştıran kullanıcıdır. Daha sonra Administrators grubuna tam izinlere izin vermek için bir ACL ekledim. Bu şekilde, yönetici kullanıcımla, kök kimliğimi doğrulamak zorunda kalmadan yine de herhangi bir değişiklik yapabilirim. Ayrıca, web sunucusunun bir klasöre yazmasına izin vermek istediğimde, kök: _www dışındaki herkesi yalnızca okuma / yürütme izinleriyle bırakarak 775'e chmod yapabilirim (uyguladığım ACL'ler hariç)


Sahibini 'kök' olarak ayarlamanıza gerek yoktur, ancak zararsızdır. Sahip olduğunuz o + rx izinlerine kesinlikle ihtiyacınız yok - bu, herhangi bir yerel kullanıcının tüm web içeriğinize göz atmasına ve okumasına izin verir (muhtemelen DB şifreleri ile yapılandırmalar vb.
Dahil

1
(güvenlik konusunda daha paranoyak olanlar için ilginç olabilecek bu cevabın çok daha karmaşık bir versiyonu olan aşağıdaki soruya
cevabıma bakın

Terminalde, wordpress'in kendi medya yüklemelerini yazabilmesini istediğimden, örneğin wordpress'in (kendi dosya izinleriyle ilgili olarak) neyle yüklendiğini nasıl görebiliriz ...
indi

5

10.6 sistemimde:

vhosts folder:
 owner:root
 group:wheel
 permissions:755

vhost.conf files:
 owner:root
 group:wheel
 permissions:644

1
Harika, teşekkürler Steve ve web dosyalarının kendisi için? / Library / WebServer / Documents / Library / WebServer / Documents / [dosya] / Library / WebServer / Documents / [dizin]
Fo.

0

Benim için kullanıcı sahibi yönetici kullanıcı ve grup _www ve dir için 775 ve dosyalar 664 için izinlerle çalışıyor


0

Catalina Güncelleme / Masaüstü İzinleri

Buna macOS'ta yılda bir kez rastlıyorum. Masaüstümde bir klasör barındırmak için genellikle apache2 kullanıyorum.

desktopKlasöre erişim sağlamaya çalışıyorsanız, httpd'nin tüm klasörlere erişmesine izin vermek için bunu izlemeniz gerekir: https://apple.stackexchange.com/a/373139/353465


-3

Önce terminali açın ve ardından web sunucusunun dizinine gidin

cd /Library/WebServer/Documents

ve sonra bunu yazın ve yapacağınız şey, izin vermek readve writeizin vermek

sudo chmod -R o+w /Library/WebServer/Documents

Bu kesinlikle işe yarayacak!

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.