IT 관련/리눅스

사용자별 홈페이지 부여하기

돌고래78 2025. 5. 17. 13:31

다음은 설정 단계입니다.

1. mod_userdir 활성화

가장 먼저 mod_userdir 모듈을 활성화해야 합니다.

2. mod_userdir 설정 파일 수정

Ubuntu에서는 mod_userdir의 기본 설정 파일이 /etc/apache2/mods-available/userdir.conf 에 있습니다. 이 파일을 수정하여 사용자 디렉토리 설정을 변경할 수 있습니다.

기본 설정은 다음과 유사할 수 있습니다.

  • UserDir public_html: 이 지시어는 각 사용자의 홈 디렉토리 내에 있는 public_html 이라는 이름의 디렉토리를 웹 루트로 사용하도록 지정합니다. 즉, ~username으로 접속하면 /home/username/public_html/ 디렉토리의 내용이 보이게 됩니다. 다른 이름(예: www, htdocs)으로 변경할 수도 있습니다.
  • UserDir disabled root: 보안상의 이유로 root 사용자의 userdir는 비활성화하는 것이 좋습니다.
  • <Directory /home/*/public_html>: 이 섹션은 /home 아래 모든 사용자의 public_html 디렉토리에 적용될 설정을 정의합니다.
    • AllowOverride FileInfo AuthConfig Limit Indexes: 사용자가 자신의 public_html 디렉토리 내에 .htaccess 파일을 사용하여 특정 설정을 변경할 수 있도록 허용합니다 (예: 인증, 파일 정보, 인덱싱).
    • Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec:
      • MultiViews: 콘텐츠 협상을 통해 확장자 없는 파일 접근을 허용합니다.
      • Indexes: 디렉토리 내에 index.html 등의 기본 파일이 없을 경우 파일 목록을 보여줍니다. 보안상 원치 않으면 제거할 수 있습니다.
      • SymLinksIfOwnerMatch: 심볼릭 링크의 소유자와 대상 파일의 소유자가 같을 경우에만 심볼릭 링크를 허용합니다.
      • IncludesNoExec: 서버 측 포함(SSI)을 허용하되, CGI 실행은 허용하지 않습니다.
    • Require method GET POST OPTIONS: Apache 2.4 이상 버전에서는 접근 제어를 이렇게 설정합니다. 모든 사용자에게 GET, POST, OPTIONS 메소드를 허용합니다. (Apache 2.2에서는 Order allow,deny 와 Allow from all 을 사용했습니다.)

3. PHP 사용 설정 (선택 사항)

만약 사용자들이 PHP 스크립트를 사용하기를 원한다면, PHP가 userdir에서 실행되도록 설정해야 합니다. 때때로 PHP 모듈 설정 파일 (/etc/apache2/mods-available/phpX.Y.conf, 여기서 X.Y는 PHP 버전)에서 userdir에 대한 PHP 실행이 기본적으로 비활성화되어 있을 수 있습니다.

해당 PHP 설정 파일을 열어서 다음 부분을 확인하거나 수정합니다.

파일 내에서 mod_userdir 관련 부분을 찾습니다. 만약 다음과 같이 php_admin_flag engine Off로 되어 있다면 PHP가 비활성화된 것입니다.

PHP를 활성화하려면 php_admin_flag engine Off를 php_admin_flag engine On으로 변경하거나, 해당 줄을 주석 처리(#) 또는 삭제합니다. 만약 저런 블록 자체가 없다면 PHP가 전역적으로 활성화되어 있을 가능성이 높습니다.

4. 사용자별 디렉토리 생성 및 권한 설정

각 사용자 계정에 대해 웹 콘텐츠를 저장할 디렉토리(예: public_html)를 생성하고 올바른 권한을 설정해야 합니다.

예를 들어 newuser라는 사용자를 위해 설정한다면:

  • /home/username 디렉토리는 Apache 프로세스(보통 www-data 사용자)가 접근(실행)할 수 있어야 합니다. chmod 711 /home/username (소유자:rwx, 그룹:–x, 기타:–x) 또는 chmod 701 /home/username (소유자:rwx, 그룹:—, 기타:–x) 권한은 Apache가 public_html 디렉토리로 들어갈 수 있게 하면서 다른 사용자가 홈 디렉토리 내용을 나열하는 것을 방지합니다.
  • /home/username/public_html 디렉토리는 Apache가 읽을 수 있도록 chmod 755 (소유자:rwx, 그룹:r-x, 기타:r-x) 권한을 설정합니다.
  • public_html 내부의 파일들은 일반적으로 644 권한을 갖습니다.

5. 아파치 재시작

모든 설정 변경 후에는 아파치를 재시작하여 변경 사항을 적용합니다.

6. 테스트

웹 브라우저에서 http://yourdomain.com/~newuser (또는 설정한 다른 사용자명)로 접속하여 “Welcome to newuser’s Homepage!” 메시지가 보이는지 확인합니다.

보안 고려 사항:

  • .htaccess 제한: AllowOverride 지시어를 통해 사용자들이 .htaccess 파일로 어떤 설정을 변경할 수 있는지 제어할 수 있습니다. 필요에 따라 더 제한적인 설정을 사용할 수 있습니다 (예: AllowOverride None).
  • Options 지시어: Options Indexes는 디렉토리 리스팅을 허용하므로, 민감한 파일이 노출될 수 있습니다. 필요 없다면 제거하는 것이 좋습니다. Options FollowSymLinks는 보안 위험이 있을 수 있으므로 SymLinksIfOwnerMatch를 사용하는 것이 더 안전합니다.
  • PHP 설정: 만약 사용자들이 PHP를 사용한다면, php.ini 설정 (예: disable_functions, open_basedir)을 통해 보안을 강화하는 것을 고려하십시오. 각 사용자별로 open_basedir을 설정하여 자신의 public_html 디렉토리 외부로의 파일 접근을 막을 수 있습니다. 이는 userdir.conf 내의 <Directory> 블록이나 .htaccess에서 php_admin_value open_basedir "/home/username/public_html:/tmp" 와 같이 설정할 수 있지만, 관리가 복잡해질 수 있습니다.
  • Suhosin 또는 SELinux/AppArmor: 추가적인 보안 계층을 위해 Suhosin (PHP 확장), SELinux, 또는 AppArmor와 같은 보안 모듈 사용을 고려할 수 있습니다.

이제 각 사용자들은 자신의 홈 디렉토리 내 public_html 폴더에 파일을 업로드하여 개인 홈페이지를 운영할 수 있게 됩니다.

'IT 관련 > 리눅스' 카테고리의 다른 글

음악 서버 만들기  (0) 2025.05.22
파일 압축하기, 풀기  (0) 2025.04.11
DNS를 사용 내부 네트워크 꾸미기  (0) 2025.04.10
SSH server  (0) 2025.04.10
리눅스 기본 명령어 모음  (0) 2025.03.27