14.4. 配置示例
					以下示例提供了 SELinux 如何补充 Samba 服务器以及如何维护 Samba 服务器功能的实际演示。
				
14.4.1. 共享您创建的目录
复制链接链接已复制到粘贴板!
						以下示例创建新目录,并通过 Samba 共享该目录:
					
- 确认已安装 samba 、samba-common 和 samba-client 软件包:rpm -q 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 installedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果没有安装这些软件包,请以 root 用户身份使用yum工具安装它们:yum install package-name ~]# yum install package-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 以 root 用户身份使用mkdir工具来创建一个新的顶级目录,以通过 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 允许 Samba 对标有samba_share_t类型的文件进行读写,只要/etc/samba/smb.conf文件相应地设置了 Linux 权限。以 root 用户身份输入以下命令,将标签更改添加到 file-context 配置中: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 
- 以 root 用户身份使用restorecon工具应用标签更改:restorecon -R -v /myshare ~]# 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 
- 以 root 用户身份编辑/etc/samba/smb.conf。将以下内容添加到该文件的底部,以通过 Samba 共享/myshare/目录:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 需要 Samba 帐户来挂载 Samba 文件系统。以 root 身份输入以下命令来创建 Samba 帐户,其中 username 是现有 Linux 用户。例如,smbpasswd -a testuser 为 Linuxtestuser用户创建一个 Samba 帐户:smbpasswd -a 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 如果您输入上述命令,指定系统上不存在的帐户的用户名,则会导致Cannot locate Unix account for 'username'!错误。
- 启动 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 用户身份使用mkdir实用程序创建新目录。此目录将用于挂载myshareSamba 共享:mkdir /test/ ~]# mkdir /test/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
- 以 root 用户身份运行以下命令,将myshareSamba 共享挂载到/test/,将 username 替换为第 7 步中的用户名:mount //localhost/myshare /test/ -o user=username ~]# mount //localhost/myshare /test/ -o user=usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入 username 的密码,该密码在第 7 步中配置。
- 输入以下命令查看在第 3 步中创建的file1文件:ls /test/ ~]$ ls /test/ file1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
14.4.2. 共享网站
复制链接链接已复制到粘贴板!
						可能不能使用 
samba_share_t 类型标记文件,例如要在 /var/www/html/ 目录中共享网站。对于这些情况,请使用 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 ~]$ 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 
- 以 root 用户身份编辑/etc/samba/smb.conf。将以下内容添加到该文件的底部,以通过 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 on- Copy 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