그룹에 속한 디렉토리에 액세스 할 수 없습니다


10

내 웹 서버에는 Apache가 액세스 할 수 있도록 권한 drwxrwxr--과 user : group 이있는 'www'디렉토리가 root:www-data있습니다.

이제 계정을 www-data 그룹에 추가했습니다.

sudo usermod -g www-data myuser

내가 할 경우 groups다음 www-data그 중 하나입니다,하지만 난 그것으로 간단하게 CD하려고 할 때 나는 '거부 권한을'얻을.

사용자를 'myuser'로 변경하거나 그룹을 내가 속한 다른 그룹으로 설정하면 들어갈 수 있습니다.

뭔가 빠졌습니까?

답변:


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를 가진 동일한 사용자 이름

UID = 123을 사용하여 로컬에 "apache"사용자를 구성하고 동일한 이름 ( "apache")을 가진 NIS 디렉토리에 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 file2의 UID가 다른 것을 참조하십시오 (123 대신 456). [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 config에 정의 된 다른 그룹

사용자가 불일치하고 권한 오류가 발생하는 또 다른 문제는 "httpd"그룹을 사용하여 파일에 대한 액세스를 제한 할 때 발생했습니다. 이것은 (하여 표시하고, 사용자 "아파치"의 주 그룹이었다 id또는 getent) 아파치 다음 루트로 시작 구성된 사용자로 전환 허가 방울. 사용자는 휴대폰에 정의되는 전환 /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구성 파일에서 "httpd"가 아닌 "apache" 라는 것을 깨달을 때까지 디버깅에 시간이 걸렸습니다 .

/ 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

이게 도움이 되길 바란다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.