Jak sprawdzić, której grupy Apache mogę użyć do zapisu na serwerze WWW?

13

Staram się, aby Wordpress działał. Obecnie mam ten komunikat o błędzie:

Could not create directory. /var/www/html/wp-content/upgrade/theme_name

podczas próby przesłania motywu. To są uprawnienia ustawione na/var/www/html/wp-content/upgrade/

drwxrwxr-x 3 ec2-user apache 4096 Jun 21 00:30 upgrade

chmod 777 upgradeusuwa błąd. Ale nie jest to uważane za najlepszą praktykę. Myślę jednak, że to też powinno działać ... dlaczego nie?

Wydaje mi się, że powyższe uprawnienia nie obejmują serwera WWW. Jakiej grupy należy użyć, aby umożliwić serwerowi internetowemu pisanie?

(Moja konfiguracja to Amazon EC2, Amazon Linux AMI z httpd)

Jeff Schaller
źródło

Odpowiedzi:

16

Nic nie wiem o Amazon EC2, ale powinieneś być w stanie:

  1. Pobierz nazwę użytkownika uruchamiającego Apache za pomocą polecenia podobnego do tego:

    ps aux | grep apache # The username should be in the first column.
    
  2. Pobierz grupy, w których ten użytkownik jest częścią, za pomocą groups(1)polecenia:

    groups [USERNAME]
    
rahmu
źródło
Pierwsza kolumna to apache, a grupy apache zwracają apache: apache. Linia z pierwszego polecenia wygląda następująco: apache 11171 0,0 3,4 39984 21516? S Jun20 0:02 / usr / sbin / httpd
1
Apache użytkownika ma wyraźnie uprawnienia do zapisu w katalogu. Mówisz, że chmod 777rozwiązuje problem, więc zgaduję, że używasz innego użytkownika do przesyłania swoich motywów. Nie znam zbyt dobrze Wordpress. Zgodnie z tą odpowiedzią spróbuj zmienić własność na użytkownika www-data.
rahmu
Dziękujemy za poświęcenie czasu na przejrzenie artykułu i wszystkiego. To był rzeczywiście inny użytkownik, ponieważ zdałem sobie sprawę, że Wordpress używał FTP do wykonania swojej pracy. Dowiedziałem się o tym użytkowniku na podstawie tego, co zostało zasugerowane poniżej, a następnie dodałem do niego apache grupowe, które zostało odkryte w kroku 1. To rozwiązało.
2

Możesz spróbować użyć następującej metody wiersza polecenia, aby znaleźć nazwy grup Apache:

WWW_GROUP=`ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | cut -d\  -f 2| uniq`
echo Apache group is: $WWW_GROUP

Aby uzyskać użytkownika, zaznacz: Jak określić użytkownika Apache z wiersza poleceń?

kenorb
źródło
1

Aktualizacja chmod 777 usuwa błąd.

Cóż, w takim przypadku ls -ld /var/www/html/wp-content/upgrade/theme_namenależy ujawnić poświadczenia twórcy, których można użyć do precyzyjnego przyznania dostępu.

I lepiej jest używać 1777(jak na /tmp), ponieważ przynajmniej gwarantuje, że tylko właściciel pliku będzie mógł go odłączyć.

poige
źródło
1
Spraw, by błąd zniknął! Ciekawe podejście do rozwiązywania problemów. To nie jest rozwiązanie, to kłamstwo.
iharob
Jak nazywasz „kłamstwo” - powołując się na oryginalny tekst autora? :) czy sugestia co najmniej użycia 1777 zamiast 777? :) lub dowiedzieć się, kto jest właścicielem twórcy, i użyć go do „precyzyjnego udzielania dostępu”
poige
To kłamstwo dla systemu, ponieważ 777nie jest poprawne w żadnym kontekście, jaki znam.
iharob