Samba 是在 Linux 和 Unix 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成。Samba 是能够在任何支持 SMB 协议的主机之间共享文件的一种实现,当然也包括 Windows。该文讲解如何在麒麟服务器操作系统上安装 Samba 文件共享服务。
SMB 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB 协议是 C/S 型协议,客户机通过该协议可访问服务器上的共享文件系统、打印机及其它资源。
TCP 端口相对应的服务是 smbd 服务,其作用是提供对服务器中文件、打印资源的共享访问;UDP 端口相对应的服务是 nmbd 服务,其作用是提供基于 NetBIOS 主机名称的解析:
TCP | UDP |
---|---|
139 | 137 |
445 | 138 |
1 | yum -y install samba |
注意:麒麟操作系统官方源中包含 Samba 的安装文件,直接使用上面命令安装即可。
1 | [global] |
注意:/etc/samba/smb.conf
是服务端的配置文件,刚安装的就自带/etc/samba/smb.conf
文件,直接启动就可使用。
1 | systemctl start smb.services |
注意:上面的是启动命令,下面的是设置开机自动启动。
1 | smbpasswd -a USERNAME |
注意:用户可以直接用 Linux 用户,但密码也需要设置,使用上面命令可为指定用户设置 Samba 的密码。
主配置文件/etc/samba/smb.conf
:
三大组成 | 作用 |
---|---|
global | 全局配置,此处的设置项对整个 Samba 服务器都有效 |
homes | 宿主目录共享设置,此处用来设置 Linux 用户的默认共享,对应用户宿主目录。用户访问服务器中与自己用户名同名的共享目录时,通过验证后将会自动映射到该用户的宿主目录 |
printers | 打印机的共享设置 |
主配置文件中常用参数:
参数 | 作用 |
---|---|
workgroup | 表示设置工作组的名称 |
security | 表示设置安全级别,其值可设置 user/server/domain |
passdb backend | 表示设置共享帐户文件类型,其值可设置 tdbsam/ldapsam/smbpasswd |
comment | 表示设置对应共享目录注释,说明信息,即文件共享名 |
browseable | 表示设置共享是否可见 |
writable | 表示设置目录是否可写 |
path | 表示共享目录路径 |
guest ok | 表示设置是否所有人可访问共享目录 |
public | 表示设置是否允许匿名用户访问 |
write list | 表示设置允许写的用户和组,组用符号@来表示,如 write list = @root |
valid users | 设置可访问的用户和组,如 valid users = root,@root |
hosts deny | 设置拒绝哪台主机访问,如 hosts deny = 192.168.1.1 |
hosts allow | 设置允许哪台主机访问,如 hosts allow = 192.168.1.1 |
printable | 表示设置是否为打印机 |
Samba 服务器的安全级别有三个,分别是 user/server/domain:
安全级别 | 作用 |
---|---|
user | 基于本地验证 |
server | 由另一台指定服务器对用户身份进行认证 |
domain | 域控进行身份验证 |
以前的 Samba 版本支持的安全级别有四个,分别是 share/user/server/domain。share 用来设置匿名访问的,但现在的版本已经不支持 share ,但还是可以实现匿名访问的只是配置方式变了。首先我们创建共享目录:
1 | mkdir /opt/dusays |
将上面目录加入到 Samba 配置文件中:
1 | [dusays] |
测试配置文件是否有误:
1 | testparm |
重启服务:
1 | systemctl restart smb.services |
在 Windows 资源管理器地址上输入\\IP
即可登陆 Samba 服务,如我的 Samba 服务器 IP 地址是 192.168.1.1,则输入\\192.168.1.1
。
输入的刚才新增的 Samba 用户及密码就行,如果不想每次输入,可以勾选记住密码。
首先客户端需要安装支持文件共享服务的软件包 cifs-utils
:
1 | yum -y install cifs-utils |
然后使用以下命令即可实现挂载:
1 | mount -t cifs -o username=USERNAME,password=PASSWORD //192.168.1.1/dusays /mnt/ |