第四章 samba服务
4.1 samba简介
在上一章中,我们讨论了NFS,它可以实现Linux系统之间的文件共享。我们知道Windows系统之间也有共享功能,但要实现Linux与Windows之间的文件和打印机共享,就需要借助Samba服务。
SMB(Server Message Block)协议,也被称为Session Message Block协议、NetBIOS协议或LanManager协议,主要用于在微软的Windows操作系统之间共享文件和打印机。Samba是一组程序套件,利用SMB协议在Linux和Windows之间实现文件和打印机共享。
通过Samba,可以实现以下功能:
Samba服务使用与Windows共享相同的通信端口,即TCP的139和445端口。此外,Samba还通过RPC服务的111端口与客户端通信。
本章将重点介绍Linux与Windows之间共享资源的互访操作。在客户端访问共享时,无论客户端使用何种操作系统,为了安全起见,都需要使用服务器端的有效用户登录后才能访问共享资源。因此,可以针对不同的共享目录设置不同的权限。下面我们将通过具体的实验操作来详细说明。
注意:本实验使用Windows 2003作为Windows端的实验对象,因为其共享操作过程相对简单,易于实现实验效果。其他如Windows 2008、2012、7、10等版本,由于安全性要求较高,配置共享较为复杂。我们本章主要介绍Linux中Samba服务的功能,因此选择Windows 2003以便更好地展示实验效果。
4.2 Windows访问Linux共享
4.2.1 Linux中Samba设置共享
首先,我们需要在Linux中安装Samba软件包。与NFS类似,CentOS的安装光盘中自带Samba的软件包,可以通过配置yum源来安装Samba:
yum -y install samba samba-common samba-client
这三个包分别是Samba的主程序包、共享功能包和Linux作为客户端访问Windows时的客户端包。
下面介绍实验环境:
使用两台主机,一台Windows 2003服务器和一台CentOS 7.4服务器。选择Windows 2003是因为其共享操作简单,便于实验效果的展示。
配置IP地址如下:Windows 2003为192.168.10.1,Linux为192.168.10.10。
关闭Linux的防火墙:
iptables -F setenforce 0
基础环境搭建完成后,开始部署实验。
1、创建共享目录并设置安全权限
mkdir /mnt/read /mnt/write /mnt/ppwrite
创建这三个目录的目的是在Samba配置中将它们共享出来,并设置不同的访问权限:read目录为只读,write目录允许任何人写入,ppwrite目录仅允许pp用户写入。
chmod 777 read chmod 777 write chmod 777 ppwrite
注意:与NFS类似,网络访问也需要遵守权限规则:网络权限和安全权限中最严格的将被采用。因此,我们需要放宽目录的安全权限,以验证Samba共享权限的生效。
2、编辑配置文件,设置共享目录
Samba的配置文件位于
/etc/samba/smb.conf
[global]
[home]
[printer]
[print$]
这些模块的默认内容通常不需要更改,下面我们创建几个自定义模块来共享指定的目录:
vi /etc/samba/smb.conf
在
[global]
ntlm auth = yes # 支持Windows的登录验证
创建自定义共享模块:
[read] # 设置共享名,可以与共享目录名不同 public = yes # 允许guest账户访问 path = /mnt/read # 指定共享目录路径 writable = no # 设置本共享目录为只读权限 <p>[write] public = yes path = /mnt/write writable = yes</p><p>[ppwrite] public = yes path = /mnt/ppwrite writable = no # 设置默认只读权限 writelist = pp # 指定具备写权限的用户,多用户可用空格分隔
注意:
writable
writelist
配置文件中使用
writable
read only = yes
read only = no
writable
提示:在许多Linux版本中,
global
ntlmauth
ntlm auth
此外,
[global]
workgroup
workgroup=WORKGROUP
3、设定Samba用户
Samba支持Windows客户端使用Linux的系统用户登录访问共享,这可能会带来安全隐患:如果有人使用该用户不通过Samba而是通过SSH直接登录系统,就可能进行恶意操作。因此,为了安全起见,Samba要求为系统用户设置新的登录密码,这样系统用户只能登录Samba而不能登录系统。具体规则如下:
下面是操作命令:
useradd pp # 创建系统用户 passwd pp # 配置用户密码 smbpasswd -a root # 将root加入到Samba用户中,并设置新密码
注意:建议Samba登录密码与系统密码不同;如果添加的是非系统用户,会报错。
smbpasswd -a pp # 将pp加入到Samba用户中,并设置新密码 pdbedit -L # 查看Samba的可用账号
此外,关于Samba用户的管理,还支持删除、修改等功能,命令如下:
smbpasswd -d qq # 禁用用户 smbpasswd -e qq # 启用用户 smbpasswd -x qq # 删除用户 smbpasswd pp # 不加-a参数就是更改现有用户的密码
4、启动服务
systemctl restart smb # 重启Samba主服务 systemctl enable smb systemctl status smb systemctl restart nmb # 重启nmb服务 systemctl enable nmb systemctl status nmb
说明:nmb服务支持主机名解析,可以将Linux的主机名解析为IP地址,客户端可以使用
\主机名
注意:与NFS类似,为了保证Samba服务器重启后仍能支持客户端访问,需要设置开机自动关闭防火墙,具体操作见NFS章节。
4.2.2 Windows客户端访问
Linux服务器端配置完成后,可以使用Windows进行验证访问。
在Windows中打开运行界面,输入
\ip

确认后会打开登录窗口:

输入Samba用户及密码后,即可看到Linux共享出的目录,如下图:

然后可以进入各个共享出的目录,以验证Samba设置权限的生效。
提示:在Windows客户端登录时,为了验证针对不同用户权限的限制(如:ppwrite目录仅pp用户可写,使用root登录到Samba后,也不可写入),我们需要切换用户登录Samba。然而,在Windows中,我们关闭共享的窗口,再次登录时会发现没有了登录验证,可以直接打开共享界面,而且还是以上次登录用户的身份打开的。这是因为Windows客户端访问共享时,第一次登录成功后,会在缓存中记录登录信息,之后的登录会直接打开,无需再次登录。因此,要更换用户登录Samba,需要注销Windows系统后重新登录,或者重启Windows的Workstations服务(在运行中输入
services.msc
4.2.3 Samba共享进阶
上面所建立的共享目录只是简单的基本功能配置,下面我们来做一个较复杂的共享。
需求说明:建立共享目录
share
zu1
zu1
root
pp
kk
share
root
pp
kk
依据上述需求,我们的部署方案如下:
1、配置基本环境
useradd kk passwd kk smbpasswd -a kk useradd qq passwd qq smbpasswd -a qq cd /mnt mkdir share chmod 777 share groupadd zu1 gpasswd -a root zu1 gpasswd -a pp zu1 gpasswd -a kk zu1
2、编辑配置文件
vi /etc/samba/smb.conf
写入以下内容:
[share] public = yes path = /mnt/share writable = no write list = pp valid users = @zu1 # 可用的用户列表,@表示组中用户 invalid users = kk # 指定不可用用户,即拒绝访问的用户
3、重启服务
systemctl restart smb
注意:
restart
systemctl reload smb
4、Windows访问验证
在Windows中访问Samba共享,可以证明:
zu1
share
share
kk
zu1
share
pp
root
share
4.3 Windows共享,Linux访问
4.3.1 Windows设置共享
由于Windows的共享原理与本书无关,我们不做具体讲解,只介绍配置步骤:
1、进入E盘,创建文件夹
aaa
进入
aaa
aaa.txt

2、设置共享
进入E盘,右键
aaa
右键
aaa
everyone


3、配置登录密码
右键我的电脑=>管理=>本地用户和组=>用户=>右键
administrator

注意:完成此步骤后,Linux客户端即可使用
administrator
4.3.2 Linux访问Windows共享
Windows的共享服务设置完成后,就可以在Linux中访问了。Linux中有两种访问方式:挂载式和登录式。
方式一:挂载式
挂载式是最为简单直接的,也最常用,可以将Windows共享的目录直接挂载到本地目录上,就像使用本机的文件系统一样。
mkdir /mnt/win # 创建挂载点 mount //192.168.10.1/aaa /mnt/win -o username=administrator # 挂载共享 mount # 查看挂载表
可以看到Windows共享的挂载显示的文件系统类型是
cifs
vi /etc/fstab # 配置开机自动挂载 //192.168.10.1/aaa /mnt/win cifs defaults,username=administrator,password=123 0 0
方式二:登录式
Linux以客户端的身份登录连接到Windows服务器,使用的命令是
smbclient
smbclient //192.168.10.1/win -U administrator # 进入登录界面

此界面下的操作命令与sftp登录后的方式相同,如
get
put
注意:在Linux两种连接Windows共享的方式中,挂载式只能由root用户使用。普通用户只能使用登录式,或者使用
sudo
4.4 Samba配置文件详细介绍
以上就是第四章 Samba服务的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号