Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

14.4.2. 웹 사이트 공유

예를 들어 /var/www/html/ 디렉터리에서 웹사이트를 공유하려는 경우 samba_share_t 유형으로 파일 레이블을 지정할 수 없습니다. 이러한 경우 samba_export_all_ro 부울을 사용하여 파일 또는 디렉터리(현재 레이블이 없는 경우)를 공유하고 읽기 전용 권한 또는 samba_export_all_rw 부울을 사용하여 모든 파일 또는 디렉터리(현재 레이블이 없는 경우)를 공유하고 읽기 및 쓰기 권한을 허용합니다.
다음 예제에서는 /var/www/html/ 에 웹 사이트에 대한 파일을 만든 다음 Samba를 통해 해당 파일을 공유하여 읽기 및 쓰기 권한을 허용합니다. 이 예제에서는 httpd,samba,samba-common,samba-clientwget 패키지가 설치되어 있다고 가정합니다.
  1. root 사용자로 /var/www/html/file1.html 파일을 만듭니다. 다음 콘텐츠를 복사하여 이 파일에 붙여넣습니다.
    <html>
    <h2>File being shared through the Apache HTTP Server and Samba.</h2>
    </html>
    
  2. 다음 명령을 입력하여 file1.html의 SELinux 컨텍스트를 확인합니다.
    ~]$ ls -Z /var/www/html/file1.html
    -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1.html
    
    파일은 httpd_sys_content_t 로 레이블이 지정됩니다. 기본적으로 Apache HTTP 서버는 이 유형에 액세스할 수 있지만 Samba는 이 유형에 액세스할 수 없습니다.
  3. Apache HTTP 서버를 시작합니다.
    ~]# systemctl start httpd.service
  4. 사용자가 에 대한 쓰기 액세스 권한이 있는 디렉터리로 변경하고 다음 명령을 입력합니다. 기본 구성을 변경하지 않는 한 이 명령은 성공합니다.
    ~]$ wget http://localhost/file1.html
    Resolving localhost... 127.0.0.1
    Connecting to localhost|127.0.0.1|:80... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 84 [text/html]
    Saving to: `file1.html.1'
    
    100%[=======================>] 84          --.-K/s   in 0s      
    
    `file1.html.1' saved [84/84]
    
  5. /etc/samba/smb.conf 를 루트로 편집합니다. 이 파일의 맨 아래에 다음을 추가하여 Samba를 통해 /var/www/html/ 디렉토리를 공유합니다.
    [website]
    comment = Sharing a website
    path = /var/www/html/
    public = no
    writable = no
    
  6. /var/www/html/ 디렉터리에는 httpd_sys_content_t 유형으로 레이블이 지정됩니다. 기본적으로 Samba는 Linux 권한이 허용하더라도 이 유형으로 레이블이 지정된 파일과 디렉터리에 액세스할 수 없습니다. Samba 액세스를 허용하려면 samba_export_all_ro 부울을 활성화합니다.
    ~]# setsebool -P samba_export_all_ro on
    재부팅 시 변경 사항이 유지되지 않도록 하려면 -P 옵션을 사용하지 마십시오. samba_export_all_ro 부울을 활성화하면 Samba가 모든 유형에 액세스할 수 있습니다.
  7. Samba 서비스를 시작합니다.
    ~]# systemctl start smb.service