14.4. 설정 예
다음 예제에서는 SELinux가 Samba 서버를 보완하는 방법과 Samba 서버의 전체 기능을 관리하는 방법을 보여주는 실제 데모를 제공합니다.
14.4.1. 생성한 디렉토리를 공유 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 새 디렉터리를 만들고 Samba를 통해 해당 디렉터리를 공유합니다.
- samba, samba -common, samba-client 패키지가 설치되어 있는지 확인합니다.
rpm -q samba samba-common samba-client package samba is not installed package samba-common is not installed package samba-client is not installed
~]$ rpm -q samba samba-common samba-client package samba is not installed package samba-common is not installed package samba-client is not installedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 패키지가 설치되지 않은 경우yum유틸리티를 root로 사용하여 설치합니다.yum install package-name
~]# yum install package-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow - root로
Cryostat 유틸리티를 사용하여 Samba를 통해 파일을 공유할 새 최상위 디렉토리를 만듭니다.mkdir /myshare
~]# mkdir /myshareCopy to Clipboard Copied! Toggle word wrap Toggle overflow touch유틸리티 root를 사용하여 빈 파일을 생성합니다. 이 파일은 나중에 Samba 공유가 올바르게 마운트되었는지 확인하는 데 사용됩니다.touch /myshare/file1
~]# touch /myshare/file1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - SELinux를 사용하면
/etc/samba/smb.conf파일 및 Linux 권한이 적절하게 설정된 경우 Samba가samba_share_t유형으로 레이블이 지정된 파일을 읽고 쓸 수 있습니다. root로 다음 명령을 입력하여 레이블 변경 사항을 파일 컨텍스트 구성에 추가합니다.semanage fcontext -a -t samba_share_t "/myshare(/.*)?"
~]# semanage fcontext -a -t samba_share_t "/myshare(/.*)?"Copy to Clipboard Copied! Toggle word wrap Toggle overflow restorecon유틸리티를 root로 사용하여 레이블 변경 사항을 적용합니다.restorecon -R -v /myshare restorecon reset /myshare context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0 restorecon reset /myshare/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
~]# restorecon -R -v /myshare restorecon reset /myshare context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0 restorecon reset /myshare/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/samba/smb.conf를 root로 편집합니다. 이 파일 하단에 다음을 추가하여 Samba를 통해/myshare/디렉터리를 공유합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Samba 파일 시스템을 마운트하려면 Samba 계정이 필요합니다. root로 다음 명령을 입력하여 Samba 계정을 만듭니다. 여기서 username 은 기존 Linux 사용자입니다. 예를 들어 smbpasswd -a testuser 는 Linux
testuser사용자에 대한 Samba 계정을 생성합니다.smbpasswd -a testuser New SMB password: Enter a password Retype new SMB password: Enter the same password again Added user testuser.
~]# smbpasswd -a testuser New SMB password: Enter a password Retype new SMB password: Enter the same password again Added user testuser.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 위 명령을 입력하면 시스템에 존재하지 않는 계정의 사용자 이름을 지정하면 '사용자 이름'! 오류에 대한 Unix 계정을찾을수 없습니다. - Samba 서비스를 시작합니다.
systemctl start smb.service
~]# systemctl start smb.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 입력하여 사용 가능한 공유를 나열합니다. 여기서 username 은 7단계에 추가된 Samba 계정입니다. 암호를 입력하라는 메시지가 표시되면 7단계에서 Samba 계정에 할당된 암호를 입력합니다(버전 번호는 다를 수 있음).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - root로
Cryostat 유틸리티를 사용하여 새 디렉터리를 만듭니다. 이 디렉터리는myshareSamba 공유를 마운트하는 데 사용됩니다.mkdir /test/
~]# mkdir /test/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - root로 다음 명령을 입력하여
myshareSamba 공유를/test/에 마운트하고 사용자 이름을 단계 7의 사용자 이름으로 교체합니다.mount //localhost/myshare /test/ -o user=username
~]# mount //localhost/myshare /test/ -o user=usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 7단계에 구성된 사용자 이름의 암호를 입력합니다. - 다음 명령을 입력하여 3단계에서 만든
file1파일을 봅니다.ls /test/ file1
~]$ ls /test/ file1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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-client 및 wget 패키지가 설치되어 있다고 가정합니다.
- root 사용자로
/var/www/html/file1.html파일을 만듭니다. 다음 콘텐츠를 복사하여 이 파일에 붙여넣습니다.<html> <h2>File being shared through the Apache HTTP Server and Samba.</h2> </html>
<html> <h2>File being shared through the Apache HTTP Server and Samba.</h2> </html>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 다음 명령을 입력하여
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
~]$ 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.htmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 파일은httpd_sys_content_t로 레이블이 지정됩니다. 기본적으로 Apache HTTP 서버는 이 유형에 액세스할 수 있지만 Samba는 이 유형에 액세스할 수 없습니다. - Apache HTTP 서버를 시작합니다.
systemctl start httpd.service
~]# systemctl start httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 사용자가 에 대한 쓰기 액세스 권한이 있는 디렉터리로 변경하고 다음 명령을 입력합니다. 기본 구성을 변경하지 않는 한 이 명령은 성공합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/samba/smb.conf를 root로 편집합니다. 이 파일 하단에 다음을 추가하여 Samba를 통해/var/www/html/디렉터리를 공유합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/www/html/디렉터리는httpd_sys_content_t유형으로 레이블이 지정됩니다. 기본적으로 Samba는 Linux 권한이 허용하더라도 이 유형으로 레이블이 지정된 파일과 디렉터리에 액세스할 수 없습니다. Samba 액세스를 허용하려면samba_export_all_ro부울을 활성화합니다.setsebool -P samba_export_all_ro on
~]# setsebool -P samba_export_all_ro onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 재부팅 시 변경 사항이 유지되지 않도록 하려면-P옵션을 사용하지 마십시오.samba_export_all_ro부울을 활성화하면 Samba가 모든 유형에 액세스할 수 있습니다.- Samba 서비스를 시작합니다.
systemctl start smb.service
~]# systemctl start smb.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow