На моем веб-сервере у меня есть каталог www, который имеет разрешение drwxrwxr--
и user: group, root:www-data
чтобы Apache мог получить к нему доступ.
Теперь я добавил свой аккаунт в группу www-data с
sudo usermod -g www-data myuser
и если я это сделаю, groups
то я www-data
среди них, но когда я пытаюсь просто войти в него, я получаю «Отказано в доступе».
Если я поменяю пользователя на «myuser» или назначу группу другой группой, членом которой я являюсь, я могу войти.
Я что-то пропустил?
Для меня это было другое, что привело к этой ошибке
одно и то же имя пользователя с двумя разными UID
У меня есть пользователь "apache", настроенный локально с UID = 123 и в каталоге NIS с тем же именем ("apache"), но с другим UID = 456. В зависимости от порядка запуска и зависимости службы, локальный пользователь может быть использован до того, как пользователь NIS станет доступным. Это также означает, что при отображении имен пользователей это будет сбивать с толку, оба будут отображаться как «apache». Только когда вы посмотрите на числовые идентификаторы UID (например, выполнив,
ls -ln
вы увидите разницу. Пример:[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
посмотрите, что UID отличается для file2 (456 вместо 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
другая группа определена в конфиге Apache
Другая проблема, возникшая у меня из-за несоответствия пользователей и полученной ошибки разрешения, заключалась в том, что я ограничивал доступ к файлам с помощью группы «httpd». Это была основная группа пользователей «apache» (которая отображалась с помощью
id
илиgetent
). Apache запускается от имени пользователя root, затем переключается на настроенного пользователя и удаляет разрешение. Пользователь переключается в определяется с/etc/httpd/conf/httpd.conf
помощьюUser
параметра. Однако проблема в том, что группа (GID), в которой будет выполняться процесс, НЕ является основной группой этого пользователя. Группа определяется в том же файле конфигурацииGroup
параметром.Так в моем случае это было ( /etc/httpd/conf/httpd.conf ):
User apache Group apache
И каталог был предоставлен доступ, как это:
drwxr-x--- 4 someuser httpd 88 May 31 17:12 mydir
Поскольку httpd (GID = 444) была основной группой этого пользователя:
[root@somemachine]# id apache uid=48(apache) gid=444(httpd) groups=444(httpd)
Это привело к некоторому времени, потраченному на отладку, пока я не понял, что
Group
в конфигурационном файле есть «apache», а не «httpd».Ошибка из / 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
Надеюсь, это поможет.
источник