1.Samba概念:
- Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
- 可实现Linux和window之间进行文件交互传输的软件组件。
- samba由smbd和nmbd两个守护进程组成,smbd默认监听的端口是TCP协议的139和445,samba通过smb服务启动smbd进程。nmbd提供netbios名称服务,以满足CIFS协议的共享访问环境,通过nmb服务启动nmbd进程,默认使用udp137端口。
- 客户端访问samba共享时所用的账号名称就是服务器端操作系统中真实存在的系统账户,不同于微软的共享设置,访问samba共享的密码必须是独立的samba密码,而不可以使用系统密码,这就是为什么还需要用smbpasswd设置用户登录共享的密码。
2.安装配置:
- 安装:yum install samba
- 配置:
smbpasswd -a root ---添加用户并设置密码,添加的用户必须是本地存在的用户;
smbpasswd -e root ---启用改用户共享;
- 查看smbpasswd帮助
- 修改配置文件,共享指定的目录给客户端,这里以/home/test目录作为共享
#vim /etc/samba/smb.conf
+------------------------------------------------------------+
[common] #共享名称;
comment=test #共享注释;
path=/home/test #共享路径;
browseable=yes #所有人可见;
guest ok=no #拒绝匿名访问;
writable=yes #支持写入数据;
hosts allow=192.168.12.1 192.168.13. except 192.168.13.13 #指定允许哪些主机有权限访问samba服务器资源,可开放某个网段段设置;与之相反的是hosts deny;
+--------------------------------------------------------------+
#在/etc/samba目录下创建用户映射文件 smbusers
[global]
username map=/etc/samba/smbusers
#在 smbusers中添加项,将root映射为admin
root=admin
3.启动服务及防火墙配置:
systemctl start smb #centos7的启动方式
firewall-cmd --zone=public --add-service=samba --permanent #放行samba服务通过防火墙,或者开放相应的139和445端口;
firewall-cmd --list-all #查看防火墙设置;
firewall-cmd --reload #重新加载防火墙配置;
setenforce=0 #注意这里还需要将SElinux关闭,此配置只对当前运行状态有效。最好是将/etc/selinux/config的配置文件中selinux一项改为 disabled,防止下次重启机器还需要再执行;
smbstatus #查看共享情况;
4.客户端挂载登录:
Windows端:在运行窗口输入\\IP,或者在window地址栏中输入\\IP
或:
Linux端:通过挂载将远程共享目录挂载至本机使用。
- 先新建一个目录作为挂载点:
mkdir /media/test
- 安装cifs:
yum install cifs-utils
- 挂载:
mount -t cifs //192.168.227.138/test /media/test/ -o user='admin',password='123456'
设置开机挂载:
vim /etc/rc.d/rc.local
>mount -t cifs //192.168.227.138/test /media/test/ -o user=admin,password=’123456’
chmod a+x /etc/rc.d/rc.local
df #查看Linux客户端是否挂载成功
6.知识点说明(可跳过):
- window命令行界面下使用net use会显示缓存登录信息;
- window命令行下使用net use 远程连接名称 /del,可以删除连接,一次性删除用net use * /delete
- 配置文件中的配置项说明:
[global]
workgroup=mygroup #定义工作组;
server string=samba server version %v #服务器提示字符串;
interface=lo eth0 192.168.12.2/24 #设置服务器监听网络接口;
hosts allow=192.168.12. 192.168.13. except 192.168.13.13 #指定允许哪些主机有权限访问samba服务器资源,可放共享段设置,与之相反的是hosts deny;
log file=/var/log/samba/log.%m #定义日志文件;
max log size=50 #定义单个日志文件最大容量为50kb;
security=user|share|server|domain #非常重要的选项,可以设置客户端的访问方式,user代表通过用户名和密码验证访问者身份,share代表匿名访问,server代表基于验证身份的访问,但账户信息保存在另一台smb服务器上,domain同样是基于验证访问,账户信息保存在活动目录当中;
passdb backend=tdbsam|smbpasswd|ldapsam #账户密码的存储方式,smbpasswd代表用老的明文格式存储账户及密码;
max connections = 0 #max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制;
deadtime = 0 #deadtime用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接;
username map = /etc/samba/smbusers #用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯;
guest account = nobody #用来设置guest用户名;
[共享名]
comment = 任意字符串 #comment是对该共享的描述,可以是任意字符串;
path = 共享目录路径
browseable = yes/no #browseable用来指定该共享是否可以浏览。
writable = yes/no #writable用来指定该共享路径是否可写;
admin users = 该共享的管理者 #admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效;
valid users = 设置允许访问该共享的用户;
invalid users = 禁止访问该共享的用户
- 服务端查看设置的smb共享用户: