Не могу получить доступ к каталогу, членом которого я являюсь

9

На моем веб-сервере у меня есть каталог www, который имеет разрешение drwxrwxr--и user: group, root:www-dataчтобы Apache мог получить к нему доступ.

Теперь я добавил свой аккаунт в группу www-data с

sudo usermod -g www-data myuser

и если я это сделаю, groupsто я www-dataсреди них, но когда я пытаюсь просто войти в него, я получаю «Отказано в доступе».

Если я поменяю пользователя на «myuser» или назначу группу другой группой, членом которой я являюсь, я могу войти.

Я что-то пропустил?

Dazz
источник

Ответы:

14

Ваш процесс имеет список групп, установленный во время входа в систему, поэтому вам нужно будет снова войти в систему, чтобы изменения вступили в силу.

Я также хотел бы предложить добавить www-dataв качестве дополнительной группы, а не основной группы (которая настроена на группу, членом которой вы являетесь. Вы можете сделать это с помощью следующих команд:

# Reset to your original primary group
sudo usermod -g myuser myuser
# Add an extra supplementary group
sudo usermod --append -G www-data group

Если вы хотите, чтобы файлы, которые вы создаете, были доступны для чтения другим членам www-dataгруппы, измените ваш umask соответственно:

umask 002

Поскольку членство в основной группе является личной, это не должно влиять на безопасность создаваемых вами файлов.

Также стоит установить setgidбит для каталогов, в которых вы будете создавать файлы: это приведет к тому, что файлы наследуют владение группой родительского каталога:

chmod g+s www/
Джеймс Хенстридж
источник
1
вход в систему сделал свое дело, так глупо. Также очень полезно serverfault.com/questions/6895/…
dazz
Спасибо за упоминание этого Dazz. Я никогда не понимал, почему это не работает для меня XD. Теперь я могу покоиться с миром.
f4der
0

Для меня это было другое, что привело к этой ошибке

одно и то же имя пользователя с двумя разными 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

Надеюсь, это поможет.

Пик Мастер
источник