Süper kullanıcı / yönetici yerine yeni dosya ve klasör oluşturma www-data sahibi olun


14

Şimdiye kadar izinlerle mücadele ediyorum ve başka bir soru yayınladım, ancak sorunu düzeltmek için herhangi bir yol bulmadan, sorunun ne olduğunu belirledim.

Kurulumum:

  • LAMP yığını ile Ubuntu Masaüstü
  • 5 "kullanıcılar" Ubuntu sunucusunda oluşturduğum sudo useradd -r -s /bin/false USERNAMEve yerel ağ paylaşılan klasörlerine, yani ağımdaki bilgisayarların Samba kullanılarak paylaşılan / var / www klasörüne bağlanması için kullanılan kullanıcıları oluşturdum.
  • DÜZENLEME: Amaç yerel ağımdaki tüm bilgisayarların aynı web sitesinde, yerel olarak çalışabileceği bir "ana localhost" tür oluşturmaktır (statik bir IP adresi bu yüzden sunucu başka bir yerden erişilemez) .

Benim sorunum:

Şu anda /var/www/htmlağın herhangi bir bilgisayarını kullanarak yeni bir klasör oluşturduğumda (ör: / var / www / html / testsite1 klasörü oluşturma), bu klasöre otomatik olarak boris:www-data(ubuntu masaüstü kurulumumdaki ana yönetici kullanıcı olan "boris" ve ls -lyeni oluşturulan klasörde çalışırken gerçekten boris: www-data ) gösterir. Bu durum mevcut kurulumumda sorunlara neden olur (çoğunlukla LifeInTheGrid tarafından wordpress için Duplicator Plugin kullanılarak). Ancak, her iki benim /var/wwwve benim /var/www/htmlaittirwww-data:www-data

Bu nedenle, nasıl yapabileceğimi bilmek istiyorum:

  • Sahipliği www-data olarak değiştirin: / var / www ve / var / www / html altındaki tüm dosyaların VE dizinlerinin www-verileri

  • Ağımın kullanıcılarından herhangi biriyle oluşturacağım dosya veya klasörlerin otomatik olarak www-data: www-data'ya ait olduğundan emin olun (Bu, Duplicator eklentisinin ben yaptığım gibi php komut dosyaları tarafından otomatik olarak oluşturulan dosyaları içerir Yanlış değil).

Bunu yapmanın bir yolu var mı?

Not: Linux ve komut satırlarıyla ilgili şeylere sahip süper bir acemiyim, ancak hızlı bir şekilde yetişiyorum.

Not 2: umask zaten 0002 olarak ayarlanmış

DÜZENLE:

Bunu denedim:

sudo chown -R www-data:www-data /var/www/

Ve sonra bunu yaparak setuid ve setgid bitlerini ayarlayın:

sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html

Daha sonra oturumu kapattı, apache'yi yeniden başlattı ve sunucuma ağ IP'si (statik değil yerel IP) üzerinden bağlı bir Mac kullanarak yeni bir klasör oluşturmaya çalıştı.

Koştum

ls -l on /var/www/html

Çıktı hala:

drwxr-sr-x 2 boris   www-data  testsite1

Not:

Daha önce apache yapılandırmamı zaten kontrol ettim ve envvars, zaten şu şekilde ayarlanmış:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

EDIT: geriye doğru denedim, örneğin her şeyi boris: www-data ait olacak şekilde ayarlamak ve benim envvars apache config benim boris: www-data ayarlayın. İŞE YARADI!

İşte yaptığım şey:

Envvars olarak değiştirildi

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Koştu

sudo chown -R boris:www-data /var/www/

Yeniden başlatıldı Apachem, yeni bir klasör oluşturdu, dosyalarımı ekledi, eklentiyi çalıştırdı, şimdi iyi olduğunu söylüyor !!!


Güvenlik, www-data kullanıcısı veya grubuna ait dosyaları ayarlamak için kötü bir fikirdir, ancak nadir durumlarda web sunucusunun yazma erişimine ihtiyacı olan belirli dosyalar için gerekli olabilir. Neyi başarmaya çalışıyorsunuz?
thomasrutter

Yanıtlar:


12

Soru # 1'in Cevabı: Özyinelemelichown

Özyinelemeli chown, sahiplik ve grubu istediğiniz gibi ayarlamanıza olanak tanır /var/www/.... Kullanmanız gereken komut budur:

sudo chown -R www-data:www-data /var/www/

Bununla birlikte, her dosya ve klasör bu sahiplik izinlerine sahip olacak şekilde orada ayarlanacaktır.


2.Sorunun Yarı Cevabı: setgidbit

Dosyalarda varsayılan grup sahipliği istiyorsanız, setgidbiti /var/www/htmlklasörde ayarlayın. Daha sonra klasörde belirtildiği gibi bu grupla yeni dosyalar oluşturulmalıdır.

sudo chmod g+s /var/www/html

Bununla birlikte, www-datadizinlere yazmaktan başka bir kullanıcı varsa yazma izinlerini ayarlamanız gerekir ve bunu yapmak, dikkatli değilseniz sizi bir veya iki güvenlik deliğine açabilir.

Sonunda izinler olmakla $USER:www-data; daha sonra sahibini değiştirmek için chownyöntem 1'de belirtildiği gibi bir a kullanırsınız (bu, uygun bir kurulumda web dosyalarına erişim için kullanıcı sahibi izinlerine değil, grup izinlerine güvenmeniz gerekir).


PHP Wordpress Çoğaltıcı Sorunu

İzinler ile ilgili sorun kullanıcı / grup PHP ihtiyaç ve yazma ve +xdir yapısını düzenlemek için dizinde muhtemelen ihtiyaç olarak çalışır .

PHP www-data, varsayılan yapılandırmaları kullanan Ubuntu yüklemelerinde varsayılan olarak çalışır . İdeal olarak, Duplicator Eklentisi'nin bir PHP eklentisi olması nedeniyle yukarıdaki adımlarınız sorunu çözecektir.

İdeal olarak, çalıştırmak ve çalışmak için gereken izinleri doğrulamak için Duplicator Eklentisi belgelerine de bakmanız gerekir.


Bana setuid yöntemini seviyor :)
Rinzwind

Bu tam olarak ne aradığını !!!! Tek sorun: işe yaramadı :-( Yerel IP üzerinden sunucuma erişerek benim mac (yani ubuntu masaüstü bilgisayar ile değil) bir klasör oluşturdu. Ls -l çalıştırdığımda, hala boris: www- verileri: - /
Boris Chevreau

Bunun nedeni dosyalarda kullanıcı sahipliği ayarladığım için değil klasörlerde değil mi? Sadece oluşturduğum klasörün www-data: www-data'ya otomatik olarak sahip OLMAMASI nedeniyle mi?
Boris Chevreau

Mac Linux'tan farklıdır ve eğer gerçekten şanssızsanız bu yöntem işe yaramaz ve varsayılan dosyaları ayarlamak için basit izinlerden (ACL'ler ve diğer şeyler gibi) çok daha fazlasını karıştırmanız gerekir. . Ayrıca, 'işe yaramadı' belirsizdir. işe yaramadı tanımlamak ve çıktıları soruya düzenleme olarak dahil etmek.
Thomas Ward

1
Linux, iirc
muru

6

Oluşturduğunuz herhangi bir dosya veya klasörün /var/www/htmlotomatik olarak kullanabileceğiniz www verilerine ait olduğundan emin olmak için inotifycron gibidir, ancak klasörlerde / dosyalarda nitelikler, dosya oluşturma, değişiklikler ve çok daha fazlası için klasörleri / dosyaları izler.

Önce aşağıdakileri yükleyin:

$ sudo apt-get install incron

Kökün aşağıdakilerle incronaçarak kullanmasına izin ver /etc/incron.allow:

$ sudo vim /etc/incron.allow

ve rootdosyaya ekleyin , ardından kaydedin ve çıkın.

İncrontab'ınızı aşağıdakilerle düzenleyin:

$ sudo incrontab -u root -e

ve aşağıdaki satırı ekleyin:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

kaydet ve çık.

Şimdi /var/www/htmldirecotry'de bir dosya oluşturulur oluşturulmaz otomatik olarak üzerine ayarlanacaktır www-data:www-data.

Incrontab'da hattın açıklaması:

/var/www/html izlenecek dizindir.

IN_CREATEoluşturulan dosyaları izleyecektir. Bu var dosya değişikliği maskesi .

/bin/chown -R www-data:www-data /var/www/html/ yürütülecek komut / eylemdir.


İnotify ve setgid olmadan böyle bir şey başarabilirler - kullanıcı sahipliği büyük olasılıkla sık sık değişmemelidir ve kullanıcı sahipliğini kendileri sıfırlayabilirler ... ya da acı çekebilecek ACL'leri kullanabilirler
Thomas Ward

Bu sunucunun tüm amacı, onu "ana yerel ana bilgisayar" olarak kullanmamızdır, örn. Localhost web siteleri oluşturmak ve çok kolay bir şekilde test sitelerini düzenlemek / değiştirmek / taşımak ve oluşturmak. Her şeyi manuel olarak sıfırlamak zorunda kalırsam, tüm amacı öldürür: - /
Boris Chevreau

Bu "incron" yolu tek yol mu? Neden bu kadar karmaşık olması gerektiğini anlamıyorum. Ne arıyorum ağdaki tüm bilgisayarlarım için bu sunucuda bir web sitesi oluşturmak için basit bir yoludur. Sonuçta statik bir IP'ye sahip olmadığım için (dolayısıyla güvenlik bir sorun değil), aklınızda başka bir geri dönüş var mı?
Boris Chevreau

teşekkürler, bir cazibe gibi çalışır!
trurl

3

Sahipliği www-data olarak değiştirin: / var / www ve / var / www / html altındaki tüm dosyaların VE dizinlerinin www-verileri

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html burada ima edilmektedir (/ var / www / 'nin bir parçası olarak)
  • -Rözyinelemeli hale getirir (böylece içindeki tüm dizinleri geçecektir /var/www/).

Ağımın kullanıcılarından herhangi biriyle oluşturacağım dosya veya klasörlerin otomatik olarak www-data: www-data'ya ait olduğundan emin olun

  • İçinde / var / www / html / varsayalım?

Apache yapılandırmanızı www-data olarak ayarlayın. Görmek/etc/apache2/envvars

# envvars - default environment variables for apache2ctl

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Bunu düzenledikten sonra apache'yi yeniden başlatmanız gerekir ( sudo service apache restart).

Bu yanlış değil eğer Duplicator eklentisi ne yapar gibi php komut dosyaları tarafından otomatik olarak oluşturulan dosyaları içerir).

Buradaki sorun muhtemelen eklenti değil php. Kullanıcı PHP'nin çalıştığı işlemle aynı olmalıdır. Dolayısıyla, kullanıcı ve grubunuz ( /etc/php5/apache2/php.ini) ise, muhtemelen www-data olarak ayarlamanız gerekir .


Ubuntu www-data, Debian'ın yaptığı gibi PHP süreçlerini / işçilerini varsayılan olarak çalıştırıyor .
Thomas Ward

Ayrıca, konu /var/www/htmlaynı zamanda grup sahipliği ve okuma / yazma özelliğidir. Diğer sorun, bir kullanıcı tarafından oluşturulan herhangi bir dosyanın olmasını istiyorlar www-data:www-datave tahminim, bunların Wordpress kullanıcıları değil, kullanıcıları olması, bu yüzden Linux dosya izinlerinden sonra gitmeniz gerekiyor.
Thomas Ward

Bunlar gerçekten ağ kullanıcıları, ubuntu sunucusunda sudo useradd -r -s / bin / false USERNAME kullanarak oluşturduğum ve yerel ağ paylaşılan klasörlerine erişmek için kullanılan kullanıcılar
Boris Chevreau

Tüm klasörlerin ve dosyaların sahipliklerini ve izinlerini tekrar boris: www-data olarak değiştirirsem, apache'nin boris: www-data olması için envvarları değiştirirsem ne olur? Yeni bir dosya oluşturduğumdan beri sahibi boris: www-data olarak ayarlandığından bu sorunu çözebilir mi?
Boris Chevreau

2

Çözdüm! Hala bir Apache envvars sorunu olduğunu düşünüyorum, ama bu sorunu çözen belirli bir şey olup olmadığından emin değilim ... Yine de burada yaptığım şey:

Envvars olarak değiştirildi

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Koştu

sudo chown -R boris:www-data /var/www/

Şimdi şimdiye kadar çalışıyor. Daha fazla test edecek ...

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.