Jak przyznać uprawnienia do odczytu zapisu do folderu oraz jego podfolderów i plików?

10

Zmieniłem własność mojego pliku localhost /var/www/i jego podfolderów i dałem mu uprawnienia 777. Jednak za każdym razem, gdy dodam nowy folder, nowy folder nie otrzymuje automatycznie tego uprawnienia. Jak mogę przyznać uprawnienia do folderu 777 na zawsze, aby po dodaniu nowego folderu lub pliku uzyskało to samo uprawnienie?

kamal
źródło
777 to zły pomysł . Ale korzystanie z ACL może pasować bardzo dobrze. Czy zapoznasz się z tym rozwiązaniem w ACL, aby sprawdzić, czy działa ono dobrze dla Ciebie?
1
Podobnie, aby przeskoczyć wszystkie katalogi, możesz użyć find . -type d -exec chmod 777 {} +do zmiany wszystkich katalogów na 777. Pamiętaj, że musisz być zalogowany jako root, aby uzyskać lepsze wyniki i upewnij się, że jesteś w folderze.
Redy S

Odpowiedzi:

1

Uprawnienia dla nowo utworzonych plików są ustawiane przez umask

Vojtech Trefny
źródło
czy możesz napisać polecenie tworzenia / var / www / writable i nadania mu uprawnień, tak że otrzymam takie samo pozwolenie (777) na witrynę, którą ostatnio w nim dodałem.
kamal
1
Udzielenie 777 uprawnień do twojego serwera nie jest dobre.
saji89,
Czy możesz dodać więcej szczegółów.
saji89,
@ Vojtech Trefny. Link nie działa w tej chwili. Mówi, że 404 nie znaleziono.
all4naija,
12

Możesz skorzystać z opcji rekurencyjnej w dowolnym momencie. sudo chown -R username /var/www

BZ1
źródło
Potrzebujesz więcej głosów pozytywnych!
Sheharyar
10

Jak już wspomnieli inni , nadanie uprawnień 777 /var/wwwjest naprawdę złym pomysłem, szczególnie w produkcji.

Lepszym rozwiązaniem byłoby nadanie uprawnień do zapisu tylko użytkownikom, którzy muszą zmodyfikować pliki. Jednym ze sposobów na to jest:

  • utwórz nową grupę

  • dodaj użytkowników, którzy muszą zmodyfikować dane w /var/wwwtej grupie

  • rekurencyjnie zmieniaj własność /var/wwwtej grupy

  • zestaw umaskna /var/wwwtak wszystkich nowo utworzonych plików są własnością grupy, jakie stworzył.

Inną opcją byłoby ponowne użycie ACL, aby dać uprawnienia do zapisu tylko użytkownikom, którzy ich potrzebują.

Oto szczegółowe instrukcje dotyczące błędu serwera .

Zasadniczo serwer WWW lub inne usługi sieciowe lub konta użytkowników systemu nie powinny mieć uprawnień do zapisu do plików obsługiwanych przez serwer WWW, ponieważ otwiera to możliwość wykonania dowolnego kodu.

Siergiej
źródło
2

Powinieneś edytować /etc/apache/envvarsjako root w wybranym edytorze.

Przykład: ALT+F2
gksudo gedit /etc/apache2/envvars

Idź na koniec pliku i dodaj linię umask XXX.

Gdzie umask jest binarnym przeciwieństwem żądanej wartości uprawnień.
Dla 774 byłoby to 003. Dla 777 złego pomysłu byłoby to 000.

Zapisać.

Uruchom ponownie apache.

Przykład: sudo apache2ctl restart

Wpłynie to tylko na pliki / foldery nowo utworzone przez użytkownika apache.

Dodatkowa uwaga, odczyt i zapis to 6 w gnieździe użytkownika, grupy lub dowolnej osoby.

RobotHumans
źródło
0

Ponadto, niektórym rozwiązaniem „od razu po wyjęciu z pudełka” jest skonfigurowanie serwera HTTP do korzystania z innego folderu. Jeśli używasz Apache, po prostu edytuj pliki konfiguracyjne. W ten sposób nie musisz zmieniać uprawnień dla / var / www, co może być złym pomysłem (potencjalne problemy bezpieczeństwa).

A umask jest odpowiedzią na Twoje pytanie. Można go użyć do ograniczenia domyślnych uprawnień dla nowo tworzonych folderów i plików. Programiści dystrybucji często używają go do ograniczania dostępu do niektórych folderów systemowych.

przemo_li
źródło
0

Myślę, że chcesz mieć dostęp do zapisu, /var/wwwaby modyfikować pliki i katalogi. Myślę, że najlepszym rozwiązaniem jest instalacja, apache2-mpm-itkaw pliku konfiguracyjnym hosta wirtualnego dodaj /etc/apache2/sites-available/default:

<IfModule mpm_itk_module>
    AssignUserId your-username your-group
</IfModule>

i uruchom w chown your-username\: /var/www -Rvten sposób apache dla tego wirtualnego hosta będzie działał z twoim UID / GID i będziesz mógł edytować pliki. Nawet pliki utworzone przez PHP będą miały Twój identyfikator UID / GID

Dawid
źródło