Na moim serwerze internetowym mam katalog „www” z uprawnieniami drwxrwxr--
i użytkownik: grupa root:www-data
, aby Apache mógł uzyskać do niego dostęp.
Teraz dodałem swoje konto do grupy www-data za pomocą
sudo usermod -g www-data myuser
a jeśli to zrobię, groups
to www-data
będzie wśród nich, ale kiedy spróbuję po prostu w nią zapisać, dostaję komunikat „Odmowa zezwolenia”.
Jeśli zmienię użytkownika na „mój użytkownik” lub ustawię grupę na inną, do której należę, mogę się przyłączyć.
Czy coś brakuje?
źródło
Dla mnie było to coś innego, co skutkowało tym błędem
ta sama nazwa użytkownika z dwoma różnymi identyfikatorami UID
Mam użytkownika „apache” skonfigurowanego lokalnie z UID = 123 oraz w katalogu NIS o tej samej nazwie („apache”), ale innym UID = 456. W zależności od kolejności uruchamiania i zależności od usługi, użytkownik lokalny może być używany, zanim użytkownik NIS będzie dostępny. Oznacza to również, że kiedy wyświetlasz nazwy użytkowników, będzie to mylące, oba pojawią się jako „apache”. Tylko gdy spojrzysz na numeryczne identyfikatory UID (na przykład
ls -ln
zobaczysz różnicę. Przykład:[root@mymachine]# ls -l drwxr-x--- 4 apache ggg1 88 May 31 17:12 file1 drwxr-x--- 4 apache ppp2 88 May 31 17:12 file2
zobacz, że identyfikator UID jest inny dla pliku 2 (456 zamiast 123):[root@mymachine]# ls -ln drwxr-x--- 4 123 48 88 May 31 17:12 file1 drwxr-x--- 4 456 48 88 May 31 17:12 file2
inna grupa zdefiniowana w konfiguracji Apache
Innym problemem, który miałem z niedopasowaniem użytkownika i wynikającym z niego błędem uprawnień, było ograniczenie dostępu do plików za pomocą grupy „httpd”. To była podstawowa grupa użytkowników „Apache” (która była wyświetlana przy użyciu
id
lubgetent
). Apache uruchamia się jako root, następnie przełącza się na skonfigurowanego użytkownika i upuszcza uprawnienia. Użytkownik przełącza się definiuje się/etc/httpd/conf/httpd.conf
przezUser
parametr. Oto jednak problem - grupa (GID), którą proces będzie działał, NIE jest podstawową grupą tego użytkownika. Grupa jest zdefiniowana w tym samym pliku konfiguracyjnym za pomocąGroup
parametru.Tak więc w moim przypadku było to ( /etc/httpd/conf/httpd.conf ):
User apache Group apache
A katalogowi przyznano dostęp w następujący sposób:
drwxr-x--- 4 someuser httpd 88 May 31 17:12 mydir
Ponieważ httpd (GID = 444) był podstawową grupą tego użytkownika:
[root@somemachine]# id apache uid=48(apache) gid=444(httpd) groups=444(httpd)
Spowodowało to trochę czasu debugowania, dopóki nie zdałem sobie sprawy, że
Group
w pliku konfiguracyjnym jest „apache”, a nie „httpd”.Błąd z / var / log / httpd / error_log :
[Fri May 31 17:13:40.070343 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of Require all granted: granted [Fri May 31 17:13:40.070367 2019] [authz_core:debug] [pid 2527] mod_authz_core.c(809): [client 11.22.32.21:53824] AH01626: authorization result of <RequireAny>: granted [Fri May 31 17:13:40.070396 2019] [core:error] [pid 2527] (13)Permission denied: [client 11.22.32.21:53824] AH00132: file permissions deny server access: /var/www/html/somedir/otherdir/css/file1.txt
Mam nadzieję, że to pomoże.
źródło