Bir klasörün linux'taki tüm kullanıcılara yazma erişimini nasıl sağlayabilirim?


191

Apache2'yi Ubuntu'ya şimdi yükledim ve / var / www klasörünün korunduğunu fark ettim. Ben sadece sudoher şeyi yapabilirim ama sadece yazma erişimine izin verirdim.

Bunu nasıl yapabilirim?

Denedim sudo chmod 7777 /var/wwwama işe yaramadı.


Bu halka açık bir sunucu mu, yoksa internete doğrudan bağlantısı yok mu? Birincisi, güvenlik kararlarını dikkate almanız önemlidir - İnternet üzerindeki sunucular sürekli saldırı altındadır (/ var / log / mesajlarınıza veya eşdeğerlerinize bakın).
kwutchak

Bu sadece benim laptop, internetten erişilebilir değil.
Carson Myers,

Yanıtlar:


321

Yazabilmesi gereken birden fazla kullanıcıyla en iyi şekilde paylaşabilmek /var/wwwiçin ortak bir gruba atanması gerekir. Örneğin Ubuntu ve Debian'daki web içeriği için varsayılan grup www-data. Yazma erişimi gereken tüm kullanıcıların /var/wwwbu grupta olduğundan emin olun .

sudo usermod -a -G www-data <some_user>

Sonra doğru izinleri / var / www üzerine ayarlayın.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Ayrıca, dizini ve altındaki tüm dizinleri "GID" olarak ayarlamanız gerekir, böylece altında oluşturulan tüm yeni dosya ve dizinler gruba /var/wwwaittir www-data.

sudo find /var/www -type d -exec chmod 2775 {} \;    

Tüm dosyaları bul /var/wwwve sahibi ve grubuna okuma ve yazma izni ekle:

sudo find /var/www -type f -exec chmod ug+rw {} \;

Kendi hesabınıza izin veriyorsanız değişiklik yapabilmek için oturumu kapatıp tekrar giriş yapmanız gerekebilir.


2
bu oldukça sıkıcı ... Sanırım başka bir klasörmiş gibi, kullanıcılara erişim izni veremiyorum?
Carson Myers,

9
Yani bir dosyaya erişimi vermek nasıl. Aynı şeyi yapmak için bir GUI dosya yöneticisinin iletişim kutularını gezinmeye çalışmak yerine komutları kopyalayıp yapıştırmak daha kolaydır. En azından chmod ve chgrp kılavuz sayfalarını okursanız, en azından ("man chmod") size uzun vadede yardımcı olur.
jtimberman

belki de ilk okuduğumda komutları anlamadım ve düzenlemeniz çok daha net bir şekilde anlaşılıyor.
Carson Myers,

1
Apache izinlerini zorlamak için rehber için +1. 027 umask ile iyi çalışır. Bir şeyin erişmesi gerekiyorsa, chmod g + w dir /
LiraNuna

1
Neden grup izni komut sudo chmod -R g+wdeğil g+rwya g+rwX?
14’de

31

Bunu yapmanın daha basit bir yolu var, bu komutu yapmayı deneyin.

sudo chmod -R 757 /var/www

Temel olarak, chmodkomut izinleri değiştirir ve -Ranahtar tüm kullanıcıları etkiler. O zaman sadece kullanmak için doğru izinleri veriyor.


3
OP için komutun ne yaptığı hakkında biraz bilgi verebilir misiniz?
n0pe

11
Açıklama eksikliği için -1. Ayrıca, chmod $permissions -R $filegeçerli değil…
Blacklight Shining

1
O zaman seçenekler değil, izinlerin
tersi olmaz

2
sudo chmod -R 757 /var/www
Bwyss

Lütfen birileri bu konuda kısa bir açıklama içeren bir düzenleme önerebilir.
Adi Prasetyo,

29

+ Yaz Oku:

sudo chmod -R a+rw /var/www

Yürütme + yaz Oku +:

sudo chmod -R a+rwx /var/www

7

Ayrıca, jtimberman'ın erişim kontrolü listelerini kullanarak önerdiği şeyleri de çoğaltabilirsiniz . Setfacl komutu, varolan ACL yerine veya değiştirmek için -m -s kabul eder; Dizin ACL'lerini özyinelemeli yapmak için -R; ve -d, belirtilen ayarları varsayılan yapmak için kullanılır; bu, gelecekteki kullanıcı hesaplarını tahmin ediyorsanız kullanışlıdır.

Bunlar sadece chmod kullanarak kullanıcı, grup, diğer ve maske için izinleri ayarlamanız yeterlidir:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

Ve bu, belirli bir kullanıcı veya grubu için nasıl yapacağınız olabilir:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

Ve elbette, güçlülüğü, grup ayarlarınızı değiştirmek zorunda kalmadan herhangi bir kullanıcıyı, birden fazla kullanıcıyı vb. Atayabilirsiniz. Ve chmod'un aksine, bazı grupların bir dizine ve diğer grupların yalnızca diğerine erişebilmesini istiyorsanız, aslında setfacl ile mümkündür. Son olarak, bir direktörün ACL'lerini görüntülemek için getfacl komutunu çalıştırın :

getfacl DIRECTORY

Alt dizinlerin ACL'lerini görmek için -R'yi veya varsayılanları görmek için -d'yi belirtebilirsiniz.


2

Hızlı ve kolay cevap -

a. (Ekleme -a ) Kullanıcınıza ( user_name grubunda (kadar) -G ) www-data .

sudo usermod -a -G www-data user_name

b. Gruba ( g ) / var / www Recursively ( -R ) sahibi olan Kullanıcı ( u ) ile aynı ( = ) izinleri verin .

sudo chmod -R g=u /var/www

Açıklama: Debian / Ubuntu'daki Apache 2, User & Group www-verilerini / var / www'nin sahibi olarak ayarlar . Kullanıcı için varsayılan izinler "İçeriği Görüntüle ve Değiştir" dir, ancak Grup yalnızca "İçeriği Görüntüle" yapabilir. Bu yüzden kendinizi www-data Grubuna eklemek ve wwww-data Kullanıcısı ile aynı izinleri vermek, gelişmenin hızlı ve kolay bir yoludur. Bunu tüm localhost (PC / Laptop) Web Geliştirme ortamları için yapıyorum.


1

Ben tipik olarak kullanırım

chmod g+w /folder/ -R

Neredeyse kendi kendini açıklıyor.

Bu herkesi ekler garasında RUBU /folder/olması w(ayin erişimi +w,) -Ralt klasörler için özyineleme içindir.


-3

Deneyebilir chmod 0777 /var/wwwmisin

Bir uyarı: Herkesin bu klasöre erişmesine izin verirseniz, bu, sisteminize erişmeleri durumunda bilgisayar korsanlarının bu klasöre erişebileceği anlamına gelir. Bu nedenle, izin verilen bir kullanıcı grubu oluşturmak ve bu gruba yazma erişimi vermek daha iyidir.


Öyleyse neden bunu bir çözüm olarak sunun ve sonra derhal reddedin? -1 oy
Tisch

-3

Önce belirli klasör yolunu girin, sonra bu komutu kullanın…

chmod -R 777 foldername
chown username:username foldername 

7
Vay, bu kötü! -R ile 777 vermezsiniz - özellikle soruyu soran kişi acemiyse ve riskleri anlamıyorsa.
recluze

Yeterince doğru @recluze.
vgoff
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.