简介
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。
SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端,例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件,同时,Samba服务器也可以访问网络中 其它windows系统或者Linux系统共享出来的文件。
Samba在windows下使用的是NetBIOS协议,如果你要使用Linux下共享出来的文件,请确认你的windows系统下是否安装了NetBIOS协议。
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口。
例如,某台Samba服务器的IP地址为192.168.126.15,对应的工作组名称为MYWORKGROUP,那么在Windows的IE浏览器输入下面两条指令都可以访问共享文件。其实这就是Windows下查看Linux Samba服务器共享文件的方法。
\\192.168.126.15\共享目录名称
\\MYWORKGROUP\共享目录名称
Samba服务器可实现如下功能:WINS和DNS服务; 网络浏览服务; Linux和Windows域之间的认证和授权; UNICODE字符集和域名映射;满足CIFS协议的UNIX共享等。
安装
安装samba需要root权限,首先需要切换到root用户下.
1.yum安装samba相关的包
yum -y install samba samba-client samba-common
2.启动smb服务
systemctl start smb.service
3.备份smb.conf文件
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
4.配置smb.conf文件
vi /etc/samba/smb.conf
1 # See smb.conf.example for a more detailed config file or 2 # read the smb.conf manpage. 3 # Run 'testparm' to verify the config is correct after 4 # you modified it. 5 6 [global] 7 workgroup = WORKGROUP <==工作组名称 8 security = user <==表示需要密码,可设置的值为share、user和server 9 10 passdb backend = tdbsam 11 12 printing = cups 13 printcap name = cups 14 load printers = NO <==不加载打印机 15 cups options = raw 16 17 [FileShare] 18 comment = User Files Share <==简单的解释,内容无关紧要 19 path = /disk/pic <==实际的共享目录 20 valid users = smb 21 write list = smb 22 writeable = no <==设置为可写入 23 printable = no 24 create mask = 0644 25 directory mask = 0755
5.创建smb组以及用户和密码
# groupadd smb # useradd smb -d /home/user/smb -g smb -s /sbin/nologin # smbpasswd -a smb New SMB password: Retype new SMB password: Added user smb.
6.用testparm检查smb.conf配置文件语法设置的正确性
输入testparm
检查smb.conf是否有错误
上图第五行显示,loaded service file OK.说明配置文件没有问题。
7.设置开机启动
# systemctl enable smb.service # systemctl enable nmb.service
8.重启smb服务
systemctl restart smb.service systemctl restart nmb.service
Linux测试
假设用本机作为客户端来测试,我们可以在本机上通过smbclient来处理,首先我们在命令行输入: smbclient
如果系统安装了smbclient软件包,那么会列出smbclient命令的使用方法,如果没有安装,则会报错,找不到命令,那么需要安装smbclient软件包,然后重试。

[root@www ~]# smbclient -L [//主机或IP] [-U 使用者账号] 选项与参数: -L :仅查阅后面接的主机所提供分享的目录资源; -U :以后面接的这个账号来尝试取得该主机的可使用资源
输入smbclient -L //127.0.0.1
然后,我们把分享的目录挂载到某一个目录下,输入mount -t cifs //127.0.0.1 /home/test,然后跳到这个目录查看文件。
注意:我们进入test,身份会被压缩成为nobody,而不再是root用户了。
我么还可以在这个挂载点,创建文件
跳到我们共享的目录看一下,创建的文件是否存在
cd /tmp; ls
可见这个文件确实存在,而且对这个共享目录,任何人可读可写。
最后,我们把这个挂载卸掉`
umount /home/test
windows下验证
windows下测试非常简单,打开资源管理器,在地址栏输入\\192.168.1.***(即服务器IP地址),会出现验证界面.如下图所示
可以看到共享的文件夹
此时,我么可以浏览,打开文件夹里面的文件,也可以将文件拷贝出去,但是不能修改文件,不能添加文件。
如果smb.conf上面的 22 行 writeable = yes 仍然无法写入
请更改下共享文件的权限.
SELinux的开启也会导致samba无法访问的情况,关闭SELinux就可以解决.
创建不需要密码:
在旧的版本我们可以把
security = share
来实现不需要密码访问,但是在新版中改成share就会报错,因为share被废弃掉了.
新方法:
把 security = share 改为 security = user map to guest = Bad User vi /etc/samba/smb.conf
1 # See smb.conf.example for a more detailed config file or 2 # read the smb.conf manpage. 3 # Run 'testparm' to verify the config is correct after 4 # you modified it. 5 6 [global] 7 workgroup = WORKGROUP 8 security = user 9 map to guest = Bad User 10 11 passdb backend = tdbsam 12 13 printing = cups 14 printcap name = cups 15 load printers = NO 16 cups options = raw 17 18 [FileShare] 19 comment = User Files Share 20 path = /disk/pic 21 public = yes 22 writeable = no 23 guest ok = yes 24 create mask = 0644 25 directory mask = 0755
发表评论