Jak mogę przyznać dostęp do zapisu folderu wszystkim użytkownikom w systemie Linux?

191

Właśnie zainstalowałem apache2 na Ubuntu i zauważyłem, że folder / var / www jest chroniony. Mogę tylko sudowszystko, ale wolę po prostu dać dostęp do zapisu.

Jak mogę to zrobić?

Próbowałem, sudo chmod 7777 /var/wwwale to nie zadziałało.

Carson Myers
źródło
Czy jest to serwer publicznie dostępny, czy też nie ma bezpośredniego połączenia z Internetem? Jeśli to pierwsze, ważne jest, aby wziąć pod uwagę decyzje dotyczące bezpieczeństwa - serwery w Internecie są stale atakowane (spójrz na / var / log / messages lub równoważny).
kwutchak
to tylko mój laptop, nie jest dostępny z Internetu.
Carson Myers,

Odpowiedzi:

321

Aby jak najlepiej dzielić się z wieloma użytkownikami, którzy powinni mieć możliwość pisania /var/www, należy mu przypisać wspólną grupę. Na przykład domyślną grupą dla treści internetowych w Ubuntu i Debian jest www-data. Upewnij się, że wszyscy użytkownicy, którzy potrzebują dostępu do zapisu, /var/wwwznajdują się w tej grupie.

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

Następnie ustaw odpowiednie uprawnienia na / var / www.

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

Dodatkowo powinieneś ustawić katalog i wszystkie znajdujące się pod nim katalogi na „ustaw GID”, aby wszystkie nowe pliki i katalogi utworzone pod /var/wwwbyły własnością www-datagrupy.

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

Znajdź wszystkie pliki /var/wwwi dodaj uprawnienia do odczytu i zapisu dla właściciela i grupy:

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

Być może będziesz musiał się wylogować i zalogować ponownie, aby móc wprowadzać zmiany, jeśli edytujesz uprawnienia do swojego konta.

jtimberman
źródło
2
to dość nużące ... Nie mogę po prostu dać użytkownikom dostępu do niego, tak jakby to był jakikolwiek inny folder?
Carson Myers,
9
W ten sposób dajesz do niego dostęp. Szybsze jest kopiowanie i wklejanie poleceń niż próba poruszania się po oknach dialogowych menedżera plików GUI, aby zrobić to samo. W dłuższej perspektywie pomaga ci to, jeśli przynajmniej czytasz strony podręcznika dla chmod i chgrp („man chmod”).
jtimberman
być może nie zrozumiałem poleceń za pierwszym razem, gdy je czytam, a twoja edycja sprawia, że ​​jest to bardziej przejrzyste.
Carson Myers,
1
+1 dla guid, aby wymusić uprawnienia apache. działa dobrze z umask 027. Jeśli coś wymaga zapisu, jest tak proste jak chmod g + w dir /
LiraNuna
1
Dlaczego to polecenie pozwolenie grupa sudo chmod -R g+w, a nie g+rwczy g+rwX?
detly
31

Jest na to prostszy sposób, spróbuj wykonać to polecenie.

sudo chmod -R 757 /var/www

Zasadniczo chmodpolecenie zmienia uprawnienia, a -Rprzełącznik wpływa na wszystkich użytkowników. To po prostu daje prawidłowe uprawnienia do użycia.

Krishna Modi
źródło
3
Czy możesz podać wgląd w to, co robi polecenie dla PO?
n0pe
11
-1 z powodu braku wyjaśnienia. Poza tym chmod $permissions -R $filejest nieważny…
Blacklight Shining
1
są to opcje, a następnie uprawnienia, a nie na odwrót
Moataz Elmasry
2
sudo chmod -R 757 /var/www
Bwyss
proszę ktoś doświadczony zasugerować edycję z krótkim wyjaśnieniem na ten temat.
Adi Prasetyo
29

Czytaj + Napisz:

sudo chmod -R a+rw /var/www

Czytaj + Napisz + Wykonaj:

sudo chmod -R a+rwx /var/www
paivaric
źródło
7

Możesz także zreplikować to, co sugerował jtimberman, używając list kontroli dostępu . Komenda setfacl akceptuje -s w celu zastąpienia istniejącej listy ACL lub -m w celu jej modyfikacji; -R, aby listy ACL katalogu były rekurencyjne; i -d, aby ustawić określone ustawienia jako domyślne, co jest przydatne, jeśli oczekujesz nadchodzących kont użytkowników.

Te po prostu ustawiają uprawnienia dla użytkownika, grupy, innych i maski za pomocą chmod:

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

I może to być sposób, w jaki zrobiłbyś to dla określonego użytkownika lub jego grupy:

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

Oczywiście siłą jest to, że możesz wyznaczyć dowolnego konkretnego użytkownika, wielu użytkowników itp. Bez konieczności modyfikowania ustawień grupy. I w przeciwieństwie do chmod, jeśli chcesz, aby niektóre grupy miały dostęp do jednego katalogu, a inne grupy miały dostęp tylko do innego, to tak naprawdę jest to możliwe dzięki setfacl. Na koniec, aby wyświetlić listy ACL katalogu, uruchom getfacl :

getfacl DIRECTORY

I możesz podać -R, aby zobaczyć listy ACL dla podkatalogów lub -d, aby zobaczyć wartości domyślne.

Nikhil Chelliah
źródło
2

Szybka i łatwa odpowiedź -

za. Dodaj ( -a ) swojego użytkownika ( nazwa_użytkownika ) do danych www grupy ( -G ) .

sudo usermod -a -G www-data user_name

b. Nadaj grupie ( g ) te same uprawnienia ( = ), co właścicielowi ( u ) w / var / www Rekurencyjnie ( -R ).

sudo chmod -R g=u /var/www

Objaśnienie: Apache 2 na Debianie / Ubuntu ustawia dane www użytkownika i grupy jako właściciela / var / www . Domyślne uprawnienia dla użytkownika to „Przeglądaj i modyfikuj zawartość”, jednak grupa może tylko „wyświetlać zawartość”. Tak więc dodanie się do grupy www-data i nadanie jej takich samych uprawnień, jak użytkownikowi wwww-data, to szybki i łatwy sposób na rozwój. Robię to dla wszystkich moich środowisk programistycznych localhost (PC / Laptop).

użytkownik1138
źródło
1

Zazwyczaj używam

chmod g+w /folder/ -R

To prawie samo wyjaśniające się.

Dodaje, że wszyscy w grupie /folder/mają wdostęp do rite access ( +w), -Rsą przeznaczone do rekursji dla podfolderów.

Arda
źródło
-3

Możesz po prostu spróbować chmod 0777 /var/www?

Słowo ostrzeżenia: jeśli pozwolisz wszystkim na dostęp do tego folderu, oznacza to, że hakerzy mogą uzyskać dostęp do tego folderu, jeśli uzyskają dostęp do twojego systemu. Dlatego lepiej jest utworzyć grupę dozwolonych użytkowników i dać tej grupie dostęp do zapisu.

czerstwypretzel
źródło
dlaczego więc oferować to jako rozwiązanie, a następnie natychmiast zdyskredytować? -1 głos
Tisch
-3

Najpierw wprowadź konkretną ścieżkę folderu, a następnie za pomocą tego polecenia…

chmod -R 777 foldername
chown username:username foldername 
marimuthu
źródło
7
Wow, to źle! Nie dajesz 777 z -R - szczególnie, jeśli osoba zadająca pytanie jest nowicjuszem i nie rozumie ryzyka.
recluze
Wystarczająco prawda @recluze.
vgoff,