Jaki jest najprostszy sposób edycji i dodawania plików do „/ var / www”?

145

Po zainstalowaniu serwera WWW istnieje prosty sposób na skonfigurowanie przez użytkownika interfejsu graficznego do kopiowania plików i katalogów na lokalny serwer WWW / var / www

Dałem sobie uprawnienia administracyjne w Ubuntu, ale nadal nie pozwala na kopiowanie.

k_graham
źródło
Powiązane: askubuntu.com/questions/45496/…
Marco Ceppi
2
Powiązane (bardziej bezpieczne): Jak uniknąć używania sudo podczas pracy w / var / www?
Lekensteyn,
Próbowałem zrobić to, co powiedział Marcos Roriz Junior. Skopiowałem i wkleiłem, gdy Marcos napisał i zmienił nazwę użytkownika na moją nazwę użytkownika. Ale nie mogę zapisać go w / etc / apache2 / sites-available, ponieważ nie pozwoli mi to zapisać w tym folderze. ???

Odpowiedzi:

222

Jeśli ustawisz / var / www do zapisu przez jego grupę i dodasz użytkownika do grupy, ten użytkownik nie będzie musiał używać sudo. Spróbuj tego:

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

Użytkownik powinien wtedy móc bezproblemowo edytować pliki / var / www /.

Pierwszy wiersz dodaje użytkownika do grupy danych www, drugi wiersz usuwa wszystkie pliki z błędnym prawem własności, a trzeci sprawia, że ​​wszyscy użytkownicy, którzy są członkami grupy danych www, mogą czytać i zapisywać wszystkie pliki w / var / www.

Jeśli jesteś zalogowany, ponieważ <username>musisz się wylogować i zalogować ponownie, aby członkostwo w grupie zaczęło obowiązywać.

Azendale
źródło
37
Robię to, a także kilka zwrotów akcji: 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 wyloguj się i zaloguj ponownie, aby odebrać nową grupę. Robię to, chmod g+saby zmusić nowe pliki i katalogi do odebrania właściciela grupy (www-data), upewniając się, że moja zmiana uprawnień się rozprzestrzenia.
Don Faulkner
15
@DonFaulkner Ze względów bezpieczeństwa lepiej być /var/wwwwłasnością root: root, więc sudo chgrp -R www-data /var/wwwlepiej być sudo chgrp -R www-data /var/www/*.
Desmond Hume,
2
Co dziwne, po uruchomieniu tych 3 poleceń niektóre z moich podfolderów i plików (jak composer.jsoni LICENSE) są wyświetlane za pomocą ikony binarnej. Otwarcie composer.jsonw edytorze tekstu pokazuje pusty plik, a najgorsze jest to, że nie mogę przeglądać niektórych podfolderów, nawet wypróbowałem dodatkowe polecenie zgodnie z sugestią @DonFaulkner i nadal nie mam szczęścia. Jeśli użyję terminala jako root, wszystko będzie tak, jak powinno. Czy ktoś ma jakieś pomysły, dlaczego tak się dzieje?
Alix Axel
5
@itsols musisz się wylogować, a następnie zalogować, aby działało.
jini
1
@DonFaulkner - Czy mógłbyś zastanowić się nad tym, w jaki sposób posiadanie plików należących do roota może być wektorem ataku? (Jestem nowy w tym wszystkim i jestem zdezorientowany, ponieważ niektórzy opowiadają się za podejściem do bezpieczeństwa w przypadku wątpliwości, gdy użytkownik ma root, a inni stanowczo twierdzą, że nie należy do roota. )
Andrew Cheong,
25

Możesz chown, to jest chkoniec owntego folderu. Umożliwi to zmianę użytkownika i grupy folderu, umożliwiając użytkownikowi dodawanie / usuwanie plików z niego. Aby to zrobić, zamień na yourusernameswoje imię i uruchom:

sudo chown yourusername.users /var/www

I to wszystko.


Jednak wolę utworzyć virtualhost w moim folderze domowym, jest to o wiele łatwiejsze.

Zasadniczo pozwala na użycie dowolnego folderu jako folderu obsługującego apache. Aby pokazać, jak to jest proste, załóżmy, że twoja nazwa użytkownika to nazwa użytkownika i że folder, który chcesz udostępnić, to / home / nazwa użytkownika / www

Utwórz następujący plik (na przykład mywebprojects) w / etc / apache2 / sistes-available, zastępując nazwę użytkownika i ścieżkę folderu (w zasadzie po prostu skopiuj i wklej i zamień w #CHANGE TUTAJ):

<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>

Teraz możemy utworzyć wwwfolder, dodać prosty świat cześć, wyłączyć domyślną stronę internetową ( /var/www), włączyć naszą stronę internetową mywebprojectsi ponownie uruchomić apache.

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

I to wszystko, teraz nie musisz już iść /var/www, po prostu dodajesz pliki do www(lub innej nazwy) i już tam jest :).

Marcos Roriz Junior
źródło
dokładnie to, co zrobiłem. Zaletą tego jest to, że możesz zmienić katalog na dysk udostępniony, aby wszystkie pliki były dostępne po uruchomieniu w systemie Windows / OSX.
Jason
9

Metoda 1:

  • Naciśnij ALT+ F2i wpisz gksudo nautilus, a następnie kliknij Uruchom.

    alternatywny tekst

  • Otworzy on nautilusa z korzeniami poprzednimi.
  • Przejdź do System plików var www, a teraz możesz dodawać / kopiować / wklejać swoje pliki.

Metoda 2:

  • Zainstaluj nautilus-gksu Zainstaluj nautilus-gksu
  • Po zainstalowaniu wpisz nautilus -qw swoim terminalu, aby odświeżyć menu prawym przyciskiem myszy.
  • Teraz znajdziesz menu „Otwórz jako administrator” w menu prawym przyciskiem myszy nautilus.
  • Aby otworzyć dowolne pliki z uprawnieniami administratora, wystarczy kliknąć prawym przyciskiem myszy ten plik / folder i wybrać opcję „Otwórz jako administrator”.
  • Otworzy ten plik / folder z uprawnieniami administratora.

    alternatywny tekst

karthick87
źródło
1
To zdecydowanie właściwa droga! Zastanawiam się, dlaczego nie była to wybrana odpowiedź. Inne metody obejmują bałagan z uprawnieniami i nie ryzykowałbym tym systemem. +1 za twoją odpowiedź.
itsols
5
@itsols: Całkowicie się nie zgadzam - ryzykujesz, że twój system przyznaje Nautilusowi pełny dostęp root do twojego systemu plików zamiast poprawnie konfigurować uprawnienia, aby umożliwić dostęp /var/www. Jedno przypadkowe naciśnięcie [delete]klawisza i możesz skończyć z systemem, którego nie można uruchomić.
Nathan Osman,
@GeorgeEdison Ale to tylko w celu ustawienia pozwolenia. Po tym zamykamy nautilus i pracujemy jak zwykle. Czy to naprawdę takie złe? Przepraszam za moją ignorancję tutaj. Pomimo tego, że jestem użytkownikiem Ubuntu od wersji 5.x, wciąż uważam, że konfiguracja maszyny programistycznej jest dość trudna i wydaje się, że nie ma jednoznacznego sposobu na zrobienie tego (dla mnie przynajmniej ...
itsols
@itsols: Druga część tej odpowiedzi to preferowana metoda i ta, której używam.
Nathan Osman
6

Może to być tak proste, jak sudo usermod -a -G developers $usernameużycie ACL.

To jednak wymaga trochę pracy. Dotyczy to przynajmniej Ubuntu 10.10. Najpierw zamontuj systemy plików z opcją acl w / etc / fstab.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 domyślne, acl 0 1

sudo mount -o remount,acl /

Następnie utwórz grupę, do której użytkownik może należeć w tym celu.

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

Użytkownik musi się wylogować i zalogować ponownie, aby zostać członkiem grupy programistów.

Oczywiście nie rób tego, jeśli masz zawartość w katalogu / var / www, którą chcesz, ale tylko w celu zilustrowania konfiguracji, aby rozpocząć:

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

Następnie zamień odniesienia do „/ var / www” na „/ var / www / public” w pliku konfiguracyjnym i załaduj ponownie.

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

Jeśli chcemy ograniczyć usuwanie i zmianę nazwy dla wszystkich oprócz użytkownika, który utworzył plik:

sudo chmod +t /var/www/public

W ten sposób, jeśli chcemy stworzyć katalogi dla frameworków, które istnieją poza katalogiem głównym Apache, lub może stworzyć katalogi do zapisu na serwerze, jest to nadal łatwe.

Katalog dzienników zapisywalnych w Apache:

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

Katalog bibliotek czytelny dla Apache:

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

źródło
Czy możesz wyjaśnić, co słychać w linii UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx? Czy to ma być dodane dosłownie, czy chcesz, aby użytkownik znalazł linię i edytował dostępne opcje?
MadMike,
Dlaczego nie pominiesz sudo rm -rf /var/www-step. To naprawdę nie wydaje się konieczne.
MadMike,
@MadMike ma być zapisany cyframi szesnastkowymi. Aby dowiedzieć się, jakie są twoje różne partycje, uruchomsudo blkid
Azendale,
1
@Azendale Kiedy pisałem komentarz, miał on sugerować, jak poprawić odpowiedź. Dziś wiem, że powinienem zasugerować to znacznie bardziej bezpośrednio. UUID=xxxxPolub : proszę dodać, jak wypełnić część jak za pomocą sudo blkid.
MadMike,
0

Najłatwiejszym sposobem jest wykonanie poniższych czynności: -

  1. Naciśnij Alt+ Ctrl+, Ta terminal otworzy się, a następnie wpisz sudo -shasło i zaloguj się.
  2. Teraz jesteś zalogowany jako root.
  3. Teraz wpisz nautilusi otworzy folder domowy jako root. Teraz możesz łatwo edytować pliki i robić, co chcesz.

Mam nadzieję że to pomoże. :)

Mitayshh Dhaggai
źródło
1
Aby uzyskać powłokę główną odpowiednią do uruchamiania aplikacji graficznych, takich jak Nautilus, sudo -ilepiej jest sudo -sz tego samego powodu sudo -Hniż sudouruchamiać pojedynczą aplikację graficzną. ( sudo -snie resetuje się HOME, więc użytkownik może pobrać pliki konfiguracyjne do swojego katalogu domowego, które powinny do nich należeć, ale zamiast tego należeć do roota .)
Eliah Kagan
Zdecydowanie odradzam korzystanie z konta root, szczególnie na serwerach. sudo zapewnia więcej niż wystarczającą kontrolę dostępu, jednocześnie pozwalając sysadminowi opracować politykę, aby zapewnić, że deweloperzy i projektanci nie otrzymają pistoletu do strzelania z własnej (i ich firm!) stopy
Shayne
0

/var/www folderjest własnością użytkownika root. Aby zmienić pliki w tym folderze, musisz zmienić własność na własną nazwę użytkownika. W tym celu możesz wypróbować następujące polecenia ...

sudo -i // zmiana na konsolę główną

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

Teraz własność folderu /var/www/html willzostanie przypisana użytkownikowi scott. Teraz Scott może kopiować / przenosić pliki w tym folderze.

Anoop
źródło
-1

Jeśli używasz wersji serwerowej, spróbuj webmin. Ma świetny internetowy interfejs użytkownika i menedżera plików. Albo to, albo Filezilla

John Hallquist
źródło
4
Czy możesz wyjaśnić „Jeśli używasz wersji serwerowej”? Każdy pakiet, który można zainstalować na Ubuntu Server, można zainstalować na komputerowej wersji Ubuntu.
Eliah Kagan