“/ Var / www” ye dosya düzenlemenin ve eklemenin en basit yolu nedir?


145

Web sunucusunu kurmuş olmak, dosyaları ve dizinleri yerel web sunucusuna / var / www'ye kopyalamak için grafik arayüzünü kullanabilecek bir kullanıcı ayarlamanın basit bir yoludur.

Kendime Ubuntu'da yönetici ayrıcalıkları verdim ama yine de kopyalara izin vermiyor.




Marcos Roriz Junior'ın söylediklerini yapmaya çalıştım. Marcos yazıp kullanıcı adımı kullanıcı adıma değiştirdiğinde kopyaladım ve yapıştırdım. Ama / etc / apache2 / sites-available içine kaydedemem çünkü bu klasöre kaydetmeme izin vermiyor. ???

Yanıtlar:


222

/ Var / www grubuna göre yazılabilir hale getirir ve kullanıcıyı gruba eklerseniz, söz konusu kullanıcının sudo kullanması gerekmez. Bunu dene:

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

Kullanıcı daha sonra / var / www / dosyalarını uğraşmadan düzenleyebilmelidir.

İlk satır kullanıcıyı www-data grubuna ekler, ikinci satır karışmış mülkiyete sahip tüm dosyaları temizler ve üçüncü satır www-data grubunun üyesi olan tüm kullanıcıların tüm dosyaları okuyabilir ve yazabilmesini sağlar. / var / www.

Eğer oturum <username>açtıysanız, grup üyeliğinin geçerli olması için oturumu kapatıp tekrar açmanız gerekir.


37
Bunu, ayrıca bir kaç kat daha yapıyorum: sudo adduser <username> www-data; sudo chgrp -R www-data /var/www; sudo chmod -R g+rw /var/www; find /var/www -type d -print0 | sudo xargs -0 chmod g+s yeni grubunuzu almak için oturumu kapatıp tekrar giriş yapın. Yapmam chmod g+sbenim izinleri yayar değiştirmek emin olarak grup sahibi (www-data) almak için yeni dosyalar ve dizinleri zorlamak için.
Don Faulkner

15
@DonFaulkner Güvenlik nedeniyle, muhtemelen root'a /var/wwwait olmak daha iyidir : root, bunun yerine sudo chgrp -R www-data /var/wwwdaha iyi olması sudo chgrp -R www-data /var/www/*.
Desmond Hume

2
Tuhaftır ki bu 3 komutları çalıştırdıktan sonra, bazı benim alt klasörler ve dosyalar (benzeri composer.jsonve LICENSE) ikili simgesini kullanarak görüntülenir. Açılış composer.jsonhiçbir şans @DonFaulkner tarafından ve yine önerilen gibi bir metin düzenleyicisinde Boş bir dosya gösterir ve en kötü şey ben de alt klasörler bazılarına göz olamaz yani, ben bile ek komutu çalıştı. Eğer terminali root olarak kullanırsam her şey olması gerektiği gibi olur. Bunun neden olduğu hakkında fikri olan var mı?
Alix Axel

5
@ itsols oturumu kapatmanız ve sonra çalışması için oturum açmanız gerekir.
jini

1
@DonFaulkner - Root'un sahip olduğu dosyaların nasıl bir saldırı vektörü olabileceğine dikkat eder misiniz? (Tüm bunlara yeniyim ve kafam karıştı çünkü bazıları güvensiz, kökten kötüye yaklaşımı savunurken, bazıları ise kesin olarak kendi kökünce olmadığını söylüyor. )
Andrew Cheong,

25

Yapabilirsin chown, bu o klasörün chöfkesi own. Bu, kullanıcıyı ve klasör grubunu değiştirmenize izin vererek, kullanıcının üzerine dosya eklemesini / kaldırmasını sağlar. Bunu yapmak yourusernameiçin adınızla değiştirin ve çalıştırın:

sudo chown yourusername.users /var/www

Ve bu kadar.


Ancak, ana klasörümde bir sanal ev sahibi oluşturmayı tercih ediyorum, çok daha kolay.

Temelde herhangi bir klasörü apache sunum klasörü olarak kullanmanıza izin verir. Bunun ne kadar basit olduğunu göstermek için, kullanıcı adınızın kullanıcı adı olduğunu ve sunmak istediğiniz klasörün / home / username / www olduğunu varsayalım.

Aşağıdaki dosyayı (örneğin mywebprojects) / etc / apache2 / sistes-available içinde kullanıcı adını ve klasör yolunu değiştirerek oluşturun (temel olarak sadece #CHANGE HERE içinde kopyalayıp yapıştırın ve değiştirin):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    # CHANGE HERE
    DocumentRoot /home/username/www

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    # CHANGE HERE
    <Directory /home/username/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Şimdi wwwklasörü oluşturalım, basit bir merhaba dünyası ekleyelim, varsayılan web sitesini ( /var/www) devre dışı bırak, web sitemizi etkinleştir mywebprojectsve apache'yi yeniden başlat.

mkdir ~/www 
echo "<html><h1>Hello World</h1></html>" > ~/www/test.html
sudo a2dissite default #
sudo a2ensite mywebprojects
sudo service apache2 restart

Ve o, şimdi gitmenize gerek yok /var/www, sadece dosyalarınıza www(veya diğer verilen adınıza) dosya eklersiniz ve zaten oradadır :).


tam olarak ne yaptım. Bunun için bir artı, dizini paylaşılan bir sürücüye değiştirebilmenizdir; böylece Windows / OSX'te önyüklendiğinde tüm dosyalar kullanılabilir olacaktır.
Jason

9

Yöntem 1:

  • ALT+ F2Tuşlarına basın ve gksudo nautilus yazıp Çalıştır'ı tıklatın.

    alt metin

  • Nautilusu kök önlenmeleri ile açacaktır.
  • Goto Dosya Sistemi var www ve şimdi dosyalarınızı ekleyebilir / kopyalayabilir / yapıştırabilirsiniz.

Yöntem 2:

  • Nautilus-gksu yükleyin Nautilus-gksu yükleyin
  • nautilus -qTerminalinize yazı kurduktan sonra sağ tıklayın menüleri yenilemek için.
  • Artık, nautilus sağ tıklama menüsünde 'Yönetici olarak aç' girişini göreceksiniz.
  • Kök iznine sahip herhangi bir dosyayı açmanız gerektiğinde, o dosya / klasöre sağ tıklamanız ve 'Yönetici Olarak Aç'ı seçmeniz yeterlidir.
  • Bu dosya / klasörü root izniyle açacak.

    alt metin


1
Bu kesinlikle gitmenin doğru yolu! Bunun neden seçilen cevap olmadığını merak ediyorum. Diğer yöntemler izinleri karıştırmayı içerir ve bunu yaparak sistemimi riske atmam. Cevabınız için +1.
itsols 11:12

5
@itsols: Tamamen aynı fikirde değilim - Nautilus'un dosya sisteminize tam erişim izni vererek erişimi sağlayacak izinleri uygun şekilde yapılandırmak yerine sisteminizi riske atarsınız /var/www. Kazara bir [delete]tuşa basarsanız, engellenemez bir sistemle sonuçlanabilir.
Nathan Osman

@GeorgeEdison Ancak bu yalnızca izni ayarlamak içindir . Ve bu yapıldıktan sonra, nautilus'u kapatıyoruz ve her zamanki gibi çalışıyoruz. Bu gerçekten o kadar kötü mü? Buradaki cehaletim için afedersiniz. 5.x sürümünden beri Ubuntu kullanıcısı olmama rağmen, oldukça zorlu bir geliştirme makinesi kurmaya devam ediyorum ve bunu yapmanın net bir yolu yok gibi görünüyor (benim için en azından ...
itsols

@ itsols: Bu cevabın ikinci kısmı tercih edilen yöntem ve kullandığım yöntem.
Nathan Osman

6

sudo usermod -a -G developers $usernameACL kullanmak kadar basit olabilir .

Yine de başlamak için biraz çalışma gerekiyor. Bu en azından Ubuntu 10.10 içindir. İlk önce dosya sistemlerini / etc / fstab içindeki acl seçeneğiyle bağlayın.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 varsayılanları, acl 0 1

sudo mount -o remount,acl /

Ardından, kullanıcının bu amaç için ait olabileceği bir grup oluşturun.

sudo groupadd developers
sudo usermod -a -G developers $username

Kullanıcı, geliştirici grubunun bir üyesi olmak için oturumu kapatıp tekrar açmalıdır.

Tabii ki, / var / www dizininde istediğiniz içeriğe sahipseniz bunu yapmayın, sadece başlaması için ayarlamayı gösterin:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root:developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Sonra bir yapılandırma dosyasında "/ var / www" referanslarını "/ var / www / public" ile değiştirin ve yeniden yükleyin.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Dosyayı oluşturan kullanıcı dışında silme ve yeniden adlandırma kısıtlama yapmak istiyorsak:

sudo chmod +t /var/www/public

Bu şekilde, Apache belge kökü dışında kalan çerçeveler için dizinler oluşturmak veya belki de sunucu tarafından yazılabilir dizinler oluşturmak istiyorsak, yine de kolaydır.

Apache yazılabilir günlükler dizini:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Apache tarafından okunabilen kütüphane dizini:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs

Çizginin neyle ilgili olduğunu açıklayabilir misin UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx? Kelimenin tam anlamıyla eklenmesi mi gerekiyor yoksa kullanıcının satırı bulup arkasındaki seçenekleri düzenlemesini istiyor musunuz?
MadMike

Neden sudo rm -rf /var/www-step'i atlamıyorsun? Gerçekten gerekli gözükmüyor.
MadMike

@MadMike onaltılık rakamlarla doldurulmalıydı. Çeşitli bölümlerinizin etiketlendiğini öğrenmek için, çalıştırınsudo blkid
Azendale

1
@Azendale Yorumu yazdığımda cevabın nasıl geliştirileceğine dair bir öneri olarak ifade edildi. Bugün bunu daha doğrudan önermem gerektiğini biliyorum. Beğenme: Lütfen UUID=xxxx-artıların a ile nasıl doldurulacağını ekle sudo blkid.
MadMike

0

Bunu yapmanın en kolay yolu, aşağıda verilen adımları izlemektir: -

  1. Alt+ Ctrl+ TTuşlarına bastığınızda terminal açılır ve sudo -sşifrenizle yazıp giriş yapın.
  2. Şimdi olarak giriş yaptınız root.
  3. Şimdi yazın nautilusve ana klasörü sizin için root olarak açacaktır. Artık dosyaları kolayca düzenleyebilir ve ne istersen yapabilirsin.

Bu yardımcı olur umarım. :)


1
Nautilus gibi grafik uygulamaları çalıştırmak için uygun bir kök kabuğunun elde sudo -iedilmesi sudo -siçin, aynı nedenden dolayı tek bir grafik uygulamasının çalıştırılması sudo -Htercih edilir sudo. ( sudo -ssıfırlamaz HOME, bu yüzden kullanıcı kendi dizininde kendilerine ait olması gereken fakat bunun yerine
root'a

Kök hesabını, özellikle sunucularda kullanmaktan kesinlikle vazgeçiyorum . sudo devs sağlamak için zanaat politikasına sistem yöneticisinin izin verirken yeterli erişim kontrolleri daha fazlasını sağlar ve tasarımcılar kendi ateş tabanca teslim edilmez ayağını (ve onların şirketlerini!)
Shayne

0

/var/www folderköke aittir .. Bu klasördeki dosyaları değiştirmek için mülkiyeti kendi kullanıcı adınızla değiştirmeniz gerekir. Bunun için aşağıdaki komutları deneyebilirsiniz ..

sudo -i // kök konsoluna geçmek için

sudo chown -R <username> <path> // for eg. sudo chown -R scott /var/www/html (scott is the username, -R indicates recrusive)

Artık klasörün mülkiyeti /var/www/html willkullanıcıya atanır scott. Şimdi scott bu klasördeki dosyaları kopyalayabilir / taşıyabilir.


-1

Sunucu sürümünü kullanıyorsanız, webmin'i deneyin. Harika bir web arayüzü ve dosya yöneticisi var. Ya o ya da Filezilla


4
"Sunucu sürümünü kullanıyorsanız" açıklayabilir misiniz? Ubuntu Sunucusuna kurulabilecek herhangi bir paket, Ubuntu'nun masaüstü versiyonuna kurulabilir.
Eliah Kagan
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.