Ustaw właściciela nowych plików ORAZ folderów www-data zamiast administratora / administratora

13

Do tej pory walczyłem z uprawnieniami i zadałem kolejne pytanie, ale zidentyfikowałem, na czym polega problem, ale nie ma jeszcze sposobu, aby go naprawić.

Moja konfiguracja:

  • Ubuntu Desktop ze stosem LAMP
  • 5 „użytkowników”. Utworzyłem użytkowników, których utworzyłem na serwerze ubuntu sudo useradd -r -s /bin/false USERNAMEi którzy używają ich do uzyskania dostępu do folderów współdzielonych w sieci lokalnej, tj. Do komputerów w mojej sieci, aby połączyć się z folderem / var / www, udostępnionym przy użyciu Samby.
  • EDYCJA: Celem jest stworzenie czegoś w rodzaju „głównego hosta lokalnego”, w którym wszystkie komputery w mojej sieci lokalnej mogą pracować na tej samej stronie, lokalnie (NIE mam statycznego adresu IP, więc dostęp do serwera jest niemożliwy) .

Mój problem:

Obecnie, kiedy tworzę nowy folder na /var/www/html(np. Tworzenie folderu / var / www / html / testsite1) na dowolnym komputerze w sieci, ten folder jest automatycznie własnością boris:www-data(„boris” jest głównym użytkownikiem administracyjnym w mojej instalacji Ubuntu na pulpicie , i pokazuje rzeczywiście boris: www-data, gdy działa ls -lna nowo utworzonym folderze), co powoduje problemy z moją obecną konfiguracją (głównie używanie Duplicator Plugin do wordpress przez LifeInTheGrid). Jednak zarówno moja, jak /var/wwwi moja /var/www/htmlsą własnościąwww-data:www-data

Dlatego chciałbym wiedzieć, jak mogę:

  • Zmień własność na www-data: www-data wszystkich plików ORAZ katalogów poniżej / var / www i / var / www / html

  • Upewnij się, że każdy plik lub folder, który utworzę u któregokolwiek z użytkowników mojej sieci, będzie automatycznie własnością www-data: www-data (Obejmuje to pliki tworzone automatycznie przez skrypty php, ponieważ to właśnie robi wtyczka Duplicator, jeśli jestem nie źle).

Czy jest na to sposób?

Uwaga: Jestem super nowicjuszem w sprawach związanych z Linuksem i wierszami poleceń, ale szybko nadrabiam zaległości.

Uwaga 2: umask jest już ustawiony jako 0002

EDYTOWAĆ:

Próbowałem tego:

sudo chown -R www-data:www-data /var/www/

A następnie ustaw bity setuid i setgid, wykonując następujące czynności:

sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html

Następnie wylogowałem się, ponownie uruchomiłem apache i próbowałem utworzyć nowy folder za pomocą komputera Mac podłączonego do mojego serwera przez sieć IP (lokalny adres IP, nie statyczny).

I Ran

ls -l on /var/www/html

Dane wyjściowe są nadal:

drwxr-sr-x 2 boris   www-data  testsite1

Uwaga:

Już wcześniej sprawdziłem konfigurację apache i envvars, jest już ustawiona na:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

EDYCJA: Próbowałem wstecz, np. Konfigurując wszystko, co należy do boris: www-data i ustawiłem envvars apache config na boris: www-data. ZADZIAŁAŁO!

Oto co zrobiłem:

Zmieniono envvary na

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Biegł

sudo chown -R boris:www-data /var/www/

Zrestartowałem Apachem, utworzyłem nowy folder, dodałem moje pliki, uruchomiłem wtyczkę, teraz mówi, że jest dobra !!!

Boris Chevreau
źródło
Nie jest dobrym pomysłem dla bezpieczeństwa ustawianie plików, które mają być własnością użytkownika lub grupy danych www, choć w rzadkich przypadkach może być konieczne w przypadku niektórych plików, do których serwer sieciowy potrzebuje dostępu do zapisu. Co próbujesz osiągnąć?
thomasrutter

Odpowiedzi:

11

Odpowiedź na pytanie nr 1: Rekurencyjnechown

Rekursywny chownpozwoli Ci ustawić własność i grupę do tego, czego chcesz /var/www/.... Oto polecenie, którego powinieneś użyć:

sudo chown -R www-data:www-data /var/www/

Dzięki temu każdy plik i folder zostanie tam ustawiony jako taki z tymi uprawnieniami własności.


Pół odpowiedzi na pytanie nr 2: setgidbit

Jeśli chcesz domyślnej własności grupy do plików, ustaw setgidbit w /var/www/htmlfolderze. Następnie należy utworzyć nowe pliki z tą grupą, jak podano w folderze.

sudo chmod g+s /var/www/html

Musisz jednak ustawić uprawnienia do zapisu, jeśli jakikolwiek użytkownik INNY niż www-datapisze do katalogów, i może to otworzyć cię na lukę bezpieczeństwa, jeśli nie będziesz ostrożny.

Kończy się to posiadaniem uprawnień $USER:www-data; aby zmienić właściciela, użyj następnie chownmetody wskazanej w metodzie nr 1 (która mówi, że w prawidłowej konfiguracji powinieneś polegać na uprawnieniach grupy, a nie uprawnieniach właściciela użytkownika na dostęp do plików internetowych).


Problem z powielaczem PHP Wordpress

Problem z uprawnieniami polega na tym, że użytkownik / grupa PHP działa zgodnie z potrzebami zapisu i odczytu oraz prawdopodobnie +xw katalogu do edycji struktury katalogu i tym podobnych.

PHP działa www-datadomyślnie w instalacjach Ubuntu, które używają domyślnych konfiguracji. Najlepiej byłoby, gdyby powyższe kroki rozwiązały problem, ponieważ utknąłeś przy wtyczce Duplicator jako wtyczce PHP.

Idealnie powinieneś również sprawdzić dokumentację wtyczki Duplicator, aby sprawdzić, jakie uprawnienia są potrzebne do uruchomienia i pracy.

Thomas Ward
źródło
Lubię
Właśnie tego szukałem !!!! Jedyny problem: nie działało :-( Utworzyłem folder na moim komputerze Mac (tj. NIE z komputerem stacjonarnym z Ubuntu), uzyskując dostęp do mojego serwera poprzez jego lokalny adres IP. Kiedy uruchomiłem ls -l, nadal własnością Boris: www- dane: - /
Boris Chevreau
Czy to dlatego, że ustawiłem prawo własności do plików, ale nie do folderów? Czy tylko dlatego, że folder, który tworzę NIE MOŻE być automatycznie własnością www-data: www-data?
Boris Chevreau
Mac różni się od Linuksa, a jeśli naprawdę masz pecha, ta metoda nie będzie działać i będziesz musiał zadzierać z czymś więcej niż zwykłymi uprawnieniami (takimi jak listy ACL i inne rzeczy) w celu skonfigurowania domyślnych plików . Również „nie działało” jest dwuznaczne. Zdefiniuj nie działało i dołącz wyniki jako zmiany w pytaniu.
Thomas Ward
1
setuid zastosowany do katalogów jest zawsze ignorowany w Linuksie, iirc
muru
6

Aby mieć pewność, że każdy utworzony plik lub folder /var/www/htmlautomatycznie staje się własnością www-danych, których możesz użyć inotify, to jest jak cron, ale monitoruje foldery / pliki pod kątem zmian atrybutów, tworzenia plików, modyfikacji i wielu innych.

Najpierw zainstaluj go za pomocą:

$ sudo apt-get install incron

Pozwól rootowi używać incron, otwierając za /etc/incron.allowpomocą:

$ sudo vim /etc/incron.allow

i dodaj rootdo pliku, a następnie zapisz i wyjdź.

Edytuj swój incrontab za pomocą:

$ sudo incrontab -u root -e

i dodaj do niego następujący wiersz:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

Zapisz i wyjdź.

Teraz, jak tylko plik zostanie utworzony w katalogu bezpośrednim /var/www/html, automatycznie ustawi onwership na www-data:www-data.

Objaśnienie wiersza w incrontab:

/var/www/html to katalog, który będzie monitorowany.

IN_CREATEbędzie wyszukiwał utworzone pliki. To maska ​​zmiany pliku .

/bin/chown -R www-data:www-data /var/www/html/ to polecenie / akcja do wykonania.

krt
źródło
Mogą osiągnąć coś takiego bez inotify i setgid - własność użytkownika prawdopodobnie nie powinna się często zmieniać i same mogą zresetować własność użytkownika ... lub skorzystać z list ACL, co może być uciążliwe
Thomas Ward
Głównym celem tego serwera jest dla nas wykorzystanie go jako „głównego hosta lokalnego”, np. Tworzenie witryn localhost i możliwość łatwej edycji / wymiany / przenoszenia i tworzenia stron testowych w locie. Jeśli muszę ręcznie zresetować wszystko, to zabija cały cel: - /
Boris Chevreau
Czy ten „incron” jest jedynym sposobem? Nie rozumiem, dlaczego to musi być takie skomplikowane. To, czego szukam, to prosty sposób, aby wszystkie moje komputery w sieci mogły utworzyć stronę internetową na tym serwerze. Ostatecznie, skoro nie mam statycznego adresu IP (a zatem bezpieczeństwo nie stanowi problemu), czy miałbyś na myśli kolejną zmianę?
Boris Chevreau
dzięki, działa jak urok!
trurl
3

Zmień własność na www-data: www-data wszystkich plików ORAZ katalogów poniżej / var / www i / var / www / html

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html jest sugerowane tutaj (jako część / var / www /)
  • -Rsprawia, że ​​jest rekurencyjny (więc przejdzie przez wszystkie katalogi /var/www/).

Upewnij się, że każdy plik lub folder, który utworzę u dowolnego użytkownika mojej sieci, będzie automatycznie własnością www-data: www-data

  • Zakładam, że wewnątrz / var / www / html /

Ustaw konfigurację apache na www-data. Widzieć/etc/apache2/envvars

# envvars - default environment variables for apache2ctl

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Musisz ponownie uruchomić Apache po edycji ( sudo service apache restart).

Obejmuje to pliki tworzone automatycznie przez skrypty php, ponieważ robi to wtyczka Duplicator, jeśli się nie mylę).

Problemem tutaj prawdopodobnie nie jest wtyczka, ale php. Użytkownik powinien być tym samym procesem, w którym działa PHP. Prawdopodobnie więc musisz ustawić to również na dane www, jeśli jest to użytkownik i grupa ( /etc/php5/apache2/php.ini).

Rinzwind
źródło
Domyślnie Ubuntu uruchamia procesy / procesy PHP www-data, podobnie jak Debian, jak sądzę.
Thomas Ward
Problemem /var/www/htmljest także własność grupy oraz uprawnienia do odczytu / zapisu. Innym problemem jest to, że chcą, aby każdy plik utworzony przez użytkownika miał www-data:www-data, i sądzę, że są to użytkownicy sieci , a nie użytkownicy Wordpress, więc musisz postępować zgodnie z uprawnieniami do plików Linuksa.
Thomas Ward
Rzeczywiście są to użytkownicy sieci, to użytkownicy, których utworzyłem na serwerze ubuntu, używając sudo useradd -r -s / bin / false USERNAME i którzy mają dostęp do lokalnych folderów współdzielonych w sieci lokalnej
Boris Chevreau
Co się stanie, jeśli zmienię prawa własności i uprawnienia do zapisu wszystkich folderów i plików z powrotem do boris: www-data, a następnie zmienię warunki dla apache na boris: www-data? Czy to może rozwiązać problem, skoro za każdym razem, gdy tworzę nowy plik, ustawia się go jako właściciela Boris: www-data?
Boris Chevreau
2

Rozwiązałem to! Nadal uważam, że był to problem związany z apaczami Apache, ale nie jestem pewien, czy właśnie to rozwiązało problem ... W każdym razie oto, co zrobiłem:

Zmieniono envvary na

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Biegł

sudo chown -R boris:www-data /var/www/

Teraz działa do tej pory. Testuje dalej ...

Boris Chevreau
źródło