RHCE学习笔记:安装Samba并配置Firewalld和SELinux,和Windows共享文件
步骤一: 安装 Samba 服务器
我们当前的测试环境包括两台 RHEL 7 和一台 Windows 8:
1.Samba/ NFS 服务器[box1 (RHEL 7):192.168.0.18],
2.Samba客户端#1[box2 (RHEL 7):192.168.0.20]
3.Samba客户端#2[Windows8 machine:192.168.0.106]
测试安装 Samba
在 box1 中安装以下软件包:
#yum update &&yum install samba samba-client samba-common
在 box2:
#yum update &&yum install samba samba-client samba-common cifs-utils
安装完成后,就可以配置我们的共享了。
步骤二: 设置通过 Samba 进行文件共享
Samba 这么重要的原因之一是它为 SMB/CIFS 客户端(LCTT 译注:SMB 是微软和英特尔制定的一种通信协议,CIFS 是其中一个版本,更详细的介绍可以参考 Wiki)提供了文件和打印设备,这使得服务器在客户端看起来就是一个 Windows 系统(我必须承认写这篇文章的时候我有一点激动,因为这是我多年前作为一个新手 Linux 系统管理员的第一次设置)。
添加系统用户并设置权限和属性
为了允许组协作,我们会在 box1 中用 useradd 命令创建一个有两个用户(user1 和 user2)的组 finance 和目录 /finance。
我们同时会把这个目录的组所有者更改为 finance 并把权限设置为 0777(所有者和组属主可读可写可执行):
#groupadd finance
#useradd user1
#useradd user2
#usermod-a -G finance user1
#usermod-a -G finance user2
#mkdir/finance
#chmod0770/finance
#chgrp finance /finance
步骤三: 配置 SELinux 和 Firewalld
在配置 /finance 作为 Samba 共享目录之前,我们需要像下面那样停用 SELinux 或设置恰当的布尔值和安全选项(否则,SELinux 会阻止客户端访问共享目录):
# setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
# getsebool –a |grep samba_export
# semanage fcontext –at samba_share_t"/finance(/.*)?"
# restorecon /finance
另外我们必须确保 firewalld 允许 Samba 流量通过。
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
步骤四: 配置 Samba 共享目录
现在我们来看看配置文件 /etc/samba/smb.conf 并添加用于共享的章节(section):我们希望组 finance 的成员可以浏览 /finance 的内容,在里面保存/创建文件或者子目录(默认权限为 0777,组所有者为 finance):
smb.conf
[finance]
comment=Directoryfor collaboration of the company's finance team
browsable=yes
path=/finance
public=no
valid users=@finance
write list=@finance
writeable=yes
create mask=0770
Force create mode=0770
force group=finance
保存文件然后用 testparm 工具进行测试。如果这里有任何错误,命令的输出或提示你需要如何修复。否则,会显示你 Samba 服务器配置的回顾:
测试 Samba 配置
如果你要添加另一个公开的共享目录(意味着不需要任何验证),在 /etc/samba/smb.conf 中创建另一章节,在共享目录名称下面复制上面的章节,只需要把 public=no 更改为 public=yes 并去掉有效用户(valid users)和写列表(write list)命令。
步骤五: 添加 Samba 用户
下一步,你需要添加 user1 和 user2 作为 Samba 的用户。要做到这点,你需要用 smbpasswd 命令,它会和 Samba 的数据库进行交互。会提示你输入一个命令用于你之后和共享目录连接:
# smbpasswd -a user1
# smbpasswd -a user2
最后,重启 Samda,并让系统启动时自动启动该服务,确保共享目录对网络客户端可用:
#systemctl start smb
#systemctl enable smb
# smbclient -L localhost –U user1
# smbclient -L localhost –U user2
验证 Samba 共享
到这里,已经正确安装和配置了 Samba 文件服务器。现在让我们在 RHEL 7 和 Windows 8 客户端中测试该配置。
步骤六: 在 Linux 中挂载 Samba 共享
首先,确保客户端可以访问 Samba 共享:
# smbclient –L 192.168.0.18-U user2
在 Linux 上挂载 Samba 共享
(为 user1 重复上面的命令)
正如任何其它存储介质,当你需要的时候你可以挂载(之后卸载)该网络共享:
#mount//192.168.0.18/finance /media/samba -o username=user1
挂载 Samba 网络共享
(其中 /media/samba 是一个已有的目录)
或者在 /etc/fstab 文件中添加下面的条目以自动挂载:
fstab
//192.168.0.18/finance /media/samba cifs credentials=/media/samba/.smbcredentials,defaults 0 0
其中隐藏文件 /media/samba/.smbcredentials(它的权限被设置为 600 和 root:root)有两行内容,指示允许使用共享的账户的用户名和密码:
.smbcredentials
username=user1
password=PasswordForUser1
最后,让我们在 /finance 中创建一个文件并检查权限和属性:
#touch/media/samba/FileCreatedInRHELClient.txt
在 Samba 共享中创建文件
正如你看到的,用权限 0770 和属主 user1:finance 创建了文件。
步骤七: 在 Windows 上挂载 Samba 共享
要在 Windows 上挂载 Samba 共享,进入 ‘我的计算机’ 并选择 ‘计算机’,‘网络驱动映射’。下一步,为要映射的驱动分配一个驱动器盘符并用不同的认证身份检查是否可以连接(下面的截图使用我的母语西班牙语):
在 Windows 中挂载 Samba 共享
最后,让我们新建一个文件并检查权限和属性:
在 Windows Samba 共享中新建文件
在 Windows Samba 共享中新建文件
#ls-l /finance
这次文件属于 user2,因为这是我们用于从 Windows 客户端中连接的账户。