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

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

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

sudo usermod -g www-data myuser

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

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

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

Ответы [ 2 ]

13 голосов
/

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

Я бы также предложил добавить 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/
0 голосов
/

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

одно и то же имя пользователя с двумя разными UID

У меня есть пользователь "apache", настроенный локально с UID = 123 и в каталоге NIS с тем же именем ("apache"), но с другим UID = 456. В зависимости от порядка запуска и зависимости службы локальный пользователь может быть использован до того, как пользователь NIS станет доступным. Это также означает, что при отображении имен пользователей это будет сбивать с толку, оба будут отображаться как «apache». Только когда вы посмотрите на числовые идентификаторы (например, набрав 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), в которой будет выполняться процесс, является NOT основной группой этого пользователя. Группа определяется в том же файле конфигурации параметром 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

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

...