Samba 的 SELinux 的文件类型 SELinux 环境中,Samba 服务器的 smbd 和 nmbd 守护进程都是在受限的 smbd_t 域中运行。并且和其他受限的网络服务相互隔离。下面的示例演示的是 SELinux 下的 smb 进程 $ ps -eZ | grep smb
unconfined_u:system_r:smbd_t:s0 16420 ? 00:00:00 smbd
unconfined_u:system_r:smbd_t:s0 16422 ? 00:00:00 smbd
|
缺省情况下,smbd 只能读写 samba_share_t 类型的文件 , 不能读写 httpd_sys_content_t 类型的文件。如果希望 smbd 能读写 httpd_sys_content_t 类型的文件,可以重新标记文件的类型。另外还可以修改布尔值如允许 Samba 提供 NFS 文件系统等共享资源。如果需要修改文件和目录的 SELinux 类型属性时可以使用三个命令:chcon、 semanage fcontext 和 restorecon 命令 。 Samba 的 SELinux 的布尔变量 SELinux 也为 Samba 提供了一些布尔变量用来调整 SELinux 策略,如果希望 Samba 服务器共享 NFS 文件系统,可以使用如下命令: # setsebool -P samba_share_nfs on 下面是常用的布尔变量; - allow_smbd_anon_write 开放此布尔变量启用允许 smbd 保留一个区域的共同文件。
- samba_create_home_dirs 开放此布尔变量启用允许 Samab 独立创建新的主目录。这通常是用于 PAM 机制。
- samba_domain_controller 当启用此布尔变量时允许 Samba 作为域控制器,以及赋予它的权限执行相关的命令,如使用 useradd,groupadd 的 和 passwd 。
- samba_enable_home_dirs 启用此布尔变量允许 Samba 共享用户的主目录。
- samba_export_all_rw 启用此布尔变量允许公布任何文件或目录,允许读取和写入权限。
- samba_run_unconfined 启用此布尔变量允许允许的 Samba 运行 / var / lib/samba/ scripts 目录中的脚本。
- samba_share_nfs 启用此布尔变量将允许 Samba 共享 NFS 文件系统。
- use_samba_home_dirs 启用此布尔变量可以使用远程服务器 Samba 的主目录。
- virt_use_samba 允许虚拟机访问 CIFS 文件。
配置实例 (1) 共享一个新建的目录 受限创建一个目录作为 Samba 的共享资源,然后在目录下建立一个文件检验共享是否成功。 #mkdir /myshare
#touch /myshare/file1
|
设置创建目录和目录中文件的类型 #semanage fcontext -a -t samba_share_t "/myshare(/.*)?"
# restorecon -R -v /myshare
|
修改 Samba 配置文件 /etc/samba/smb.conf,添加共享资源定义包括如下行:: [myshare]
comment = My share
path = /myshare
public = yes
writeable = yes
创建一个 samba 用户
# smbpasswd -a testuser
New SMB password: Enter a password
Retype new SMB password: Enter the same password again
Added user testuser.
|
启动 Samba 服务
查询可以使用的共享资源: $ smbclient -U testuser -L localhost
|
使用 mount 命令挂载共享资源,并且检验文件: #mount //localhost/myshare /test/ -o user= testuser
# ls /test/
|
(2)共享一个网页 如果要共享一个网页文件目录如 Apache 服务器的 /var/www/html,是不能使用文件类型的。此时可以使用 samba_export_all_ro 和 samba_export_all_rw 两个布尔值变量,达到共享目录和文件的目的。步骤如下: 修改 samba 配置文件,添加如下行: [website]
comment = Sharing a website
path = /var/www/html/
public = yes
writeable = yes
|
开放 samba_export_all_ro 布尔值变量 #setsebool -P samba_export_all_ro on
|
设置权限: #chmod 777 /var/www/html/
|
共享目录: #mount //localhost/myshare /test/ -o user= testuser
# ls /test/
|
回页首 SELinux 环境下 NFS 配置 NFS 的 SELinux 的文件类型 SELinux 环境中,nfs 服务器的守护进程都是在受限的 nfs_t 域中运行。并且和其他受限的网络服务相互隔离。SELinux 策略不允许使用 NFS 共享远程文件。如果一定要共享远程文件,可以使用 nfs_export_all_ro 和 nfs_export_all_rw 等布尔值变量调整 SELinux 的策略。按照 SELinux 的策略规定客户端安装 NFS 文件系统采用的默认文件系统是 nfs_t,此外 SELinux 还针对 nfsd 定义了一些文件类型: - var_lib_nfs_t 这种类型用于现有的和新的文件复制或在创建的 /var/lib/nfs 目录中。在正常运行这种类型应该不需要改变。要恢复到默认设置,可以使用超级用户权限运行命令:restorecon -R -v /var/lib/nfs。
- nfsd_exec_t /usr/sbin/rpc.nfsd 程序文件和其他涉及到 NFS 可执行文件和库都是这种类型。其他文件不使用此类型的任何文件。
NFS 的 SELinux 的布尔变量 SELinux 提供了几个布尔变量用来调整 NFS,你可以在系统安全和 NFS 功能之间取得平衡。例如: 将本机的 NFS 共享设置成可读可写,需要开放相关布尔值变量: #setsebool -P nfs_export_all_rw on
|
如果你想要将远程 NFS 的家目录共享到本机,需要开放相关布尔值变量: #setsebool -P use_nfs_home_dirs on
|
下面是常用的布尔变量; - allow_ftpd_use_nfs 当启用时这个布尔变量允许 ftpd 访问 NFS 挂载。
- allow_nfsd_anon_write 当启用时这个布尔变量允许写入到一个公共目录匿名 nfsd。
- httpd_use_nfs 当启用时这个布尔变量容许的 httpd 访问一个 NFS 文件系统上存储的文件。
- nfs_export_all_ro 当启用时这个布尔变量允许任何文件或目录通过 NFS 导出,允许只读权限。
- nfs_export_all_rw 当启用时这个布尔变量允许任何通过 NFS 导出的文件或目录,允许读取和写入权限。
- qemu_use_nfs 当启用时这个布尔变量允许 QEMU 使用 NFS 文件系统。
- samba_share_nfs 启用此布尔变量将允许 Samba 共享 NFS 文件系统。
- use_nfs_home_dirs 当启用时这个布尔变量允许将支持 NFS 主目录。
- virt_use_nfs 当启用时这个布尔变量允许虚拟机访问 NFS 文件。
- xen_use_nfs 当启用时这个布尔变量允许 Xen 使用 NFS 文件。
一个例子 这个例子中 NFS 服务器的 IP 地址 192.168.1.1,NFS 客户端的 IP 地址为 192.168.1.10,两台主机在同一子网(192.168.1.0/24)。 首先在 NFS 服务器端使用 setsebool 命令确保 nfs_export_all_rw 布尔变量已经打开,使得 NFS 客户端能够以只读的方式安装 NFS 文件系统。然后创建一个顶级目录,作为共享资源,然后在目录中建立一个文件提供给客户端访问,命令如下: #setsebool -P nfs_export_all_rw on
#mkdir – p /share/nfs
#cp /etc/profile /share/nfs/test
# chmod - R 777 /share/nfs
|
下面编辑 /etc/exports 文件把共享资源加入。 /share/nfs 192.168.1.10(rw)
|
确保防火墙修改设置正确。然后启动 nfs 服务 # service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS daemon: [ OK ]
Starting NFS mountd: [ OK ]
|
运行 exports 命令确保共享资源公布,使用 showmount 命令查询共享资源。 #exportfs -rv
exporting 192.168.1.10:/share/nfs
# showmount -e
Export list for nfs-srv:
/share/nfs 192.168.1.10
|
下面在 NFS 客户端可以使用命令挂载 NFS 服务器的共享资源了 : # mount.nfs 192.168.1.1:/share/nfs /mnt
# ls /mnt
total 0
-rwxrwxrwx. 1 root root 0 2012-01-16 12:07 test
|
回页首 总结 第 2 部分将讨论 vsftp 、MySQL、Bind dns 服务的配置。
参考资料 学习 讨论
|