우선 아파치의 기본 서버 실행 경로는 /var/www/html 으로 설정되어있다. 그러던 중 해당 경로가 아닌 다른 경로로 서버를 돌리고자 하는 도중에 문제가 발생했다. 해당 주소로 접속하면 원하는 주소가 아닌 403 Forbidden 에러가 발생하며 권한이 없다고 한다.
구성한 설정은 다음과 같다.
1.sudo vi /etc/httpd/conf/httpd.conf
DocumentRoot /home/ec2-user/test <Directory "/home/ec2-user/test"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
2.apachectl -t
3.sudo systemctl restart httpd
4.echo "<?php phpinfo() ?>" > test/index.php
해당 아이피로 접속하자 다음과 403 권한 없음이 출력되었다.

그러던 중 한 블로그를 발견하였고 SELinux 문제라는 글이 적혀있었다. 따라서 다음 명령어를 통해 httpd가 사용하고 있는 SELinux를 찾아 보았다.
ps -ZC httpd

다음 명령어를 수행했으나 문제는 해결되지 않았다. 즉 SELinux의 문제는 아닌듯 보였다.
chcon -Rv -t httpd_sys_content_t /home/ec2-user/test
아파치 관련 로그가 없나 확인하기 위해서 아파치 파일을 살펴보던 중에 /var/log/httpd/error_log를 찾게 되었고 sudo cat /var/log/httpd/error_log으로 해당 파일을 읽었다.
[Sat Jun 08 08:44:53.269890 2024] [core:error] [pid 30062:tid 30202] (13)Permission denied: [client ] AH00035: access to / denied (filesystem path '/home/ec2-user/test') because search permissions are missing on a component of the path
무엇이 문제인지 몰라 처음에는 그룹 또는 사용자 문제인가 싶었기에 해당 파일에 대한 권한을 전부 바꿔주었다. 그럼에도 권한 문제는 동일하게 발생되었다.
sudo chown -R ec2-user:apache /home/ec2-user/test
sudo chmod 2775 /home/ec2-user/test && find /home/ec2-user/test -type d -exec sudo chmod 2775 {} \;
find /home/ec2-user/test -type f -exec sudo chmod 0664 {} \;
스택오버플로우에 해당 문제를 해결할수 있었다.
chmod +x /home/ec2-user
무엇으로 인해 접근이 가능한지 하기 위해 다음 일련의 과정을 하나씩 수행했다. 이를 통해 SELinux 설정 그리고 chown, chmod와 상관없이 다음 명령어로도 접근이 가능한 것을 확인할 수 있었다.
chmod +x /home/ec2-user
정확히 어떤 것이 차이점인지 알기위해서 두 권한에 대해서 확인을 해보았다. 파일에 대한 접근 그리고 해당 경로에 대한 접근은 동일하지만 ../ 이전 경로에 대한 접근이 다르다는 것을 볼수가 있었다.
/home/ec2-user/test
drwxrwsr-x. 2 ec2-user apache 23 Jun 8 08:26 . drwx------. 4 ec2-user ec2-user 102 Jun 8 09:00 .. -rw-rw-r--. 1 ec2-user apache 19 Jun 8 08:26 index.php
/var/www/html
drwxrwsr-x. 2 ec2-user apache 24 Jun 8 09:02 . drwxrwsr-x. 4 ec2-user apache 33 Jun 8 08:24 .. -rw-rw-r--. 1 ec2-user apache 0 Jun 8 09:02 index.html
경로를 재설정하여 다음 명령어를 수행했다.
sudo chown -R ec2-user:apache /home/ec2-user
sudo chmod 2775 /home/ec2-user && find /home/ec2-user -type d -exec sudo chmod 2775 {} \;
/home/ec2-user/test
drwxrwsr-x. 2 ec2-user apache 23 Jun 8 08:26 . drwxrwsr-x. 4 ec2-user apache 102 Jun 8 09:00 .. -rw-rw-r--. 1 ec2-user apache 19 Jun 8 08:26 index.php
/var/www/html
drwxrwsr-x. 2 ec2-user apache 24 Jun 8 09:02 . drwxrwsr-x. 4 ec2-user apache 33 Jun 8 08:24 .. -rw-rw-r--. 1 ec2-user apache 0 Jun 8 09:02 index.html
그리고 다시 접근하니 index.php에 성공적으로 접근하는 것을 확인했다.
Ref
https://askubuntu.com/questions/1353377/apache2-permission-denied-access-to-denied-because-search-permissions-are-mi
https://blog.naver.com/leons78/221347113463
https://itsjob.tistory.com/33
https://m.blog.naver.com/hanajava/222394006121
https://blog.naver.com/itearth/221941803893
'Linux > web server' 카테고리의 다른 글
아파치 환경변수 mod_env 설정 (0) | 2024.06.25 |
---|---|
AWS EC2 Apache HTTPS 적용하기 aka letsencrypt (0) | 2024.06.08 |