SELinux 环境下 Samba 配置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 下面是常用的布尔变量;
配置实例(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 服务 service smb start 查询可以使用的共享资源: $ 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 定义了一些文件类型:
NFS 的 SELinux 的布尔变量SELinux 提供了几个布尔变量用来调整 NFS,你可以在系统安全和 NFS 功能之间取得平衡。例如: 将本机的 NFS 共享设置成可读可写,需要开放相关布尔值变量: #setsebool -P nfs_export_all_rw on 如果你想要将远程 NFS 的家目录共享到本机,需要开放相关布尔值变量: #setsebool -P use_nfs_home_dirs on 下面是常用的布尔变量;
一个例子 这个例子中 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 服务的配置。 关于作者曹江华,毕业于工科大学机电一体化专业,从事 CAD 设计。后从事小型数据库的应用。1999 年开始从事构建网络、管理维护、数据库管理工作。关注开放系统和网络安全。出版多本 Unix/Linux 安全管理书籍。 来自:http://www.ibm.com/developerworks/cn/linux/l-cn-selinux-services1/ (责任编辑:IT) |