Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
准备
一台CentOS 7 的系统,比如我的IP是:172.16.10.129。
一台windows 10系统的电脑
确保windows10的工作组和samba的工作组一致,比如我的电脑工作组是WORDGROUP。
net config workstation
安装
输入如下命令完成samba的安装。
yum install samba samba-client samba-common
配置
samba的配置文件路径/etc/samba/smb.conf,在修改之前先做个备份(请注意,这是一个好习惯)。
cp -pf /etc/samba/smb.conf /etc/samba/smb.conf.bak
然后清空smb.conf,cat /dev/null比一条条删除快很多。
cat /dev/null > /etc/samba/smb.conf
匿名配置
输入如下内容到配置文件smb.conf
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = centos security = user map to guest = bad user dns proxy = no #============================ Share Definitions ============================== [Anonymous] path = /samba/anonymous browsable =yes writable = yes guest ok = yes read only = no
这个配置会先创建一个任何人可读写的目录anonymouse。
mkdir -p /samba/anonymous systemctl enable smb.service systemctl enable nmb.service systemctl restart smb.service systemctl restart nmb.service
设置文件夹的权限
cd /samba chmod -R 0755 anonymous/ chown -R nobody:nobody anonymous/ ls -l anonymous/
如果开启了selinux,输入如下命令已允许SELinux用于samba配置。
chcon -t samba_share_t anonymous/
在windows电脑上测试,确认匿名可读写。
安全配置
如果需要对文件夹设置权限,一般我们还需要添加用户认证。
创建组
groupadd smbgrp
添加用户
useradd zhangnq -G smbgrp
设置密码
smbpasswd -a zhangnq
添加需要认证访问的文件夹,配置权限为777,所有人可读写。
mkdir -p /samba/secured cd /samba chmod -R 0777 secured/
或者设置权限
chown -R zhangnq:smbgrp secured/
然后再编辑/etc/samba/smb.conf,添加如下内容到文件末尾。
[secured] path = /samba/secured valid users = @smbgrp guest ok = no writable = yes browsable = yes
重启samba服务
systemctl restart smb.service systemctl restart nmb.service
在windows电脑上测试,打开secured就会提示输入用户名密码,如下图所示。
可能的问题
1、端口不通,无法连接。
如果centos有打开firewalld防火墙,需要添加相关的端口。
firewall-cmd --permanent --zone=public --add-service=samba firewall-cmd --reload
2、如何在linux上连接测试。
smbclient //172.16.10.129/secured -U zhangnq
3、xp win2003电脑无法连接samba共享目录。
从samba 4.5开始,ntlm auth参数默认值由“yes”变为“no”。导致默认情况下使用NTLM级别LAN Manager身份验证的客户端不允许登录Samba服务器,受影响的客户端包括Windows XP、Windows2003等。
解决方法(任选一种都可解决):
a. Samba服务器端smb.conf配置文件中添加“ntlm auth = yes”后重启smb服务。
b. Windows XP客户端修改本地安全设置、安全选项、“网络安全:LAN Manager身份验证级别”的值为“仅发送 NTLMv2响应”。
==== end ====
参考链接:
https://www.howtoforge.com/samba-server-installation-and-configuration-on-centos-7
https://blog.csdn.net/u012134780/article/details/85329857