내 서버에서 데스크탑 컴퓨터로 파일을 복사하려고 합니다. 나는 그것을 /var/www/html
(웹 페이지가 있는 곳)에 배치했고, 그것을 다운로드하려고 하면 403 Forbidden
. 파일을 시도해도 chmod 777
해결되지 않습니다.
내가 무엇을 잘못하고 있으며 왜 이 오류가 발생합니까?
답변1
Apache 사용자가 소유하도록 파일을 수정해야 합니다. 기본적으로 Apache는 www-data
사용자(그룹에 있음 www-data
)로 실행됩니다. 를 사용하여 chown
파일 소유자를 수정할 수 있습니다( 와 함께 사용해야 할 수도 있음 sudo
).
chown -R www-data:www-data /var/www/html
마지막으로 파일이 다음 위치에 있는지 확인해야 합니다.최소Apache 사용자에 대한 읽기 및 실행 권한입니다. 말씀하신 대로 이미 이 작업을 수행했지만 모든 권한/파일 소유자를 수정한 후에는 를 실행하여 모든 것이 괜찮은지 확인해야 합니다 ls -l /var/www/html
. 보안 조치로서 다른 사용자의 모든 권한을 제거하는 것도 현명한 방법입니다.
chmod -R 0550 /var/www/html
쓰기 액세스가 필요한 PHP 또는 다른 스크립팅 언어를 사용하는 경우 대신 위의 권한 마스크를 수정해야 할 수도 있습니다 0770
. 예방 조치로 필요한 경우(예: 웹 사이트 캐시 데이터 쓰기 또는 파일 업로드) 디렉토리에서만 해당 마스크를 사용하십시오.
답변2
저는 CentOS 7 + Apache를 사용하고 있습니다. 문제를 해결한 유일한 명령은 다음과 같습니다(이전에 chown+chmod를 시도했기 때문입니다).
sudo setenforce 0 #SELinux 비활성화
그런 다음 파일(제 경우에는 anyfile.zip)을 다운로드할 수 있지만 공격자가 코드를 작성하고 실행할 수 있는 문을 열 수 있습니다.
답변3
아마 당신은SELinux활성화되었습니다. 현재 목적을 위한 가장 간단한 방법은 문제의 파일을 Apache가 실행 중인 사용자 ID로 표시하는 것입니다.