Jak mogę chmod 777 wszystkich podfolderów / var / www?

54

Korzystam z serwera WWW i serwera FTP, z którymi /var/wwwjest związany /home/user/www.

Ustawiłem oba katalogi na chmod 777(co jest w porządku, ponieważ służy tylko do testowania).

Mogę przesyłać pliki /home/user/www, ale za każdym razem, gdy tworzę nowy katalog, zawsze muszę uruchamiać chmod 777ten folder.

W przeciwnym razie, gdy próbuję go przeglądać, pojawia się komunikat o błędzie

Nie masz uprawnień dostępu do / testowania / na tym serwerze.

Czy istnieje sposób, aby każdy dostęp do wszystkich podfolderów /var/wwwbył dostępny? A może ich uprawnienia można ustawić automatycznie 777? To denerwujące, że muszę pisać za chmod 777każdym razem.

użytkownik1645034
źródło
12
Zostawię to tutaj PROSZĘ UWAŻAĆ, ŻEBY NIE UŻYWAĆ 777 NA SERWERZE INTERNETOWYM . Lepszym pytaniem jest „Jak sprawić, by mój serwer działał bez korzystania z uprawnień 777?”
Marco Ceppi
12
przepraszam, że to zła praktyka i odmawiam odpowiedzi na to :) Mam nadzieję, że wszyscy się zgadzają :)
Rinzwind

Odpowiedzi:

89

Jest to zła praktyka, ale mam nadzieję, że wykorzystujesz to do rozwoju lub masz inny dobry powód. Możesz określić uprawnienia podczas tworzenia katalogu, korzystając z -mopcji:

mkdir -m 777 dirname

Lub możesz ustawić uprawnienia rekurencyjnie.

sudo chmod -R 777 /var/www

Przed użyciem jednego z nich naprawdę zastanów się, czy chcesz, aby Twój system plików był tak dostępny.


Edycja: Jak wspomniał Rinzwind tutaj, jest to lepszy sposób na osiągnięcie tego, co chcesz.

Sprawdź, do której grupy należy Twój /var/wwwkatalog, i dodaj użytkownika do tej grupy.

sudo adduser yourusername group

Grupa jest prawdopodobnie www-data.

Wtedy będziesz w stanie ustawić swoje uprawnienia na 775.

Dan
źródło
4
Robi to, o co prosiłeś, ale najpierw przeczytaj to. Dlaczego / var / www nie powinien mieć chmod 777 . To naprawdę nie jest zalecana praktyka.
Warren Hill,
8
Proszę nie pomagać ludziom z metodą, która jest złą praktyką. Wolałbym, gdybyś wyjaśnił, jak to zrobić: dodając swojego użytkownika do grupy www-data lub apache;)
Rinzwind
4
Edukacja jest najważniejsza. Pomaganie ludziom w zepsuciu maszyny to nie jest sposób na Linuksa. Więc zdecydowanie się z tobą nie zgadzam.
Rinzwind
2
Pytający powiedział, że to tylko do testowania. Zdecydowanie rozumiem, że twoja strona programistyczna powinna być łatwo dostępna, abyś mógł pracować szybciej. Mam zamiar dać mu wątpliwości, że nie jest wystarczająco głupi, aby zrobić to z serwerem produkcyjnym.
Dan
1
@ dan08 Istnieją lepsze sposoby testowania, w tym korzystanie z katalogu domowego. Zobacz askubuntu.com/questions/46331/... i kimbriggs.com/computers/computer-notes/linux-notes/… . Są bezpieczne sposoby na osiągnięcie tych celów;)
Panther
7

Pliki i katalogi w Uniksie mogą mieć trzy typy uprawnień: read ( r), write ( w) i execute ( x). Każde uprawnienie może dotyczyć onlub offkażdej z trzech kategorii użytkowników: właściciela pliku lub katalogu; inne osoby w tej samej grupie co właściciel; i wszystkie inne. Aby zmienić tryb pliku, użyj polecenia chmod. Ogólna forma to chmod X @ Y plik1 plik2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 
Lokesh Kumar Bandi
źródło
3

Ogłoszenie publiczne:


Nigdy nie używaj chmod 777 do rozwiązywania problemów


  • Jest to poważne zagrożenie bezpieczeństwa, jeśli uruchamiasz jakiekolwiek usługi dostępne publicznie, zwłaszcza aplikacje internetowe (np. PHP).

    Model bezpieczeństwa systemu operacyjnego zakłada, że ​​wiele usług (takich jak serwer WWW) działa z ograniczonymi uprawnieniami, aby uniemożliwić im modyfikowanie plików. Ustawienie 777 dla plików psuje ten projekt.

    Użytkownik zdalny może zapisywać lub przesyłać pliki, a następnie nakłonić serwer (lub inny proces w systemie) do odczytu lub wykonania. Skrypty lub oprogramowanie mogą mieć wady, które na to pozwalają. Bardzo trudno jest zablokować każdy sposób, w jaki może się to zdarzyć, jeśli istnieją katalogi do zapisu na świecie.

  • Używany w niektórych katalogach systemowych (/ usr, / etc, / var itd.) Może zepsuć twój system w zaskakujący sposób.

    Niektóre niezbędne pliki systemowe wymagają specjalnych uprawnień, takich jak uprawnienia setuid / setgid, aby mogły zostać uruchomione. Na przykład sudo. Unikaj zmieniania jakichkolwiek uprawnień do plików w katalogach i plikach skonfigurowanych przez sam system.

  • Nie ma sposobu, aby go cofnąć i odzyskać wszystkie stare uprawnienia.

    Oznacza to, że jeśli wcześniej posiadałeś pliki i foldery o różnych uprawnieniach, nie możesz wrócić do tych konkretnych uprawnień - wystarczy zmienić je wszystkie na to samo, co może spowodować utratę określonych ustawień uprawnień, które były potrzebne dla określonych plików.

  • Zawsze istnieje bardziej odpowiedni sposób na osiągnięcie tego, co chcesz osiągnąć.

W takim przypadku wygląda na to, że chcesz, aby Twój serwer WWW mógł czytać katalog. Zezwolenie na pisanie na całym świecie to o wiele więcej niż trzeba.

Wyśledz, dlaczego serwer WWW nie może odczytać tego katalogu (wskazówka: prawdopodobnie dlatego, że twój katalog domowy nie jest czytelny dla całego świata. Czytelny dla całego świata jest o wiele bezpieczniejszy niż zapisywalny dla całego świata - ustaw swój katalog domowy na 755 lub przenieś ten katalog www poza swój dom w miejsce takie jak / var / www lub / srv).

thomasrutter
źródło
0

To mi nie działa.

sudo chmod -f 777 /path/to/your/file/or/directory

Muszę -fteż użyć .

sudo chmod -R -f 777 /path/to/your/file/or/directory
Janaka Pushpakumara
źródło
0

Jeśli chcesz skopiować uprawnienia i / lub własność z innego pliku, z którego jesteś zadowolony, możesz to zrobić, używając sudo chmod --reference = ścieżka / do / pliku / do / referencji / do / pliku / ciebie / chcesz / do / change / permissino / to

I możesz zrobić to samo dla własności plików.

Amir Khalil
źródło