转载自:http://www.linuxidc.com/Linux/2017-03/141390.htm
转载自:http://bbs.51cto.com/thread-1035619-1.html
向原作者致敬,如果有冒犯请联系本人删除即可。
1.Samba简介
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享。(就是像之前nfs一样,共享的目录的数据是实时同步的),相反ftp可以是显示文件的共享(需要上传下载,也就是你在客户端更改文件后,是需要手动提交的,不然服务器上的文件是没有更新的。)
2.关闭SELinux和防火墙(很重要)
如果不关闭selinux,即使是后来的操作都正确也是不会成功的,
a、临时关闭(不用重启机器):
b、修改配置文件需要重启机器(永久更改):
将SELINUX=enforcing 改为SELINUX=disabled(需重启机器)
c、可自己做策略开放相应端口,这里我直接关闭(关闭防火墙):
3.安装:
# whereis samba查找samba是否安装过了,
或者用这个命令查找samba
# rpm -qa | grep samba
查到的然后把查到的samba相关包全删了,命令为:
# rpm -e *** -f --nodeps
删除完后,接下来是安装:
# yum -y install samba samba-client
4. 配置:
进入samba配置目录,备份一下配置文件:
# cp smb.conf smb.conf.bak
修改配置文件:
# vim smb.conf
内容如下,保存并退出
[global]
workgroup = WORKGROUP
server string = Ted Samba Server %v
netbios name = TedSamba
security = user
map to guest = Bad User
passdb backend = tdbsam
[FileShare]
comment = share some files
path = /smb/fileshare
public = yes
writeable = yes
create mask = 0644
directory mask = 0755
[WebDev]
comment = project development directory
path = /smb/webdev
valid users = ted
write list = ted
printable = no
create mask = 0644
directory mask = 0755
注释:global中的workgroup
要和你windows系统的工作组的值是一样的,不知道怎么看的,鼠标右键”我的电脑“,--》属性--》》找到工作组;
security、map
to guest项设置为允许匿名用户访问
再下面有两个section,实际为两个目录,section名就是目录名(映射到Windows上可以看见)。
第一个目录名是FileShare,匿名、公开、可写
第二个目录吗是WebDev,限定ted用户访问
默认文件属性644/755(不然的话,Windows上在这个目录下新建的文件会有“可执行”属性)
5.创建用户(如果共享的文件夹每个人都可以登陆则不需要创建用户,)
[root@base samba]# groupadd co3
[root@base samba]# useradd ted -g co3 -s /sbin/nologin
[root@base samba]# smbpasswd -a ted
New SMB password:
Retype new SMB password:
Added user ted.
[root@base samba]#
6.创建共享目录[root@base samba]# mkdir -p /smb/{fileshare,webdev}
[root@base samba]# chown nobody:nobody /smb/fileshare/
[root@base samba]# chown ted:co3 /smb/webdev/
注意设置属性,不然访问不了。
7.启动Samba服务,设置开机启动[root@base samba]# systemctl start smb
[root@base samba]# systemctl enable smb
Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
[root@base samba]#
到此为止:已经完成,接下来是用windows测试:
1)在Windwos资源管理器访问
访问路径里填上: \\${Samba服务器的IP} ,然后回车,可以看见共享的目录。
FileShare是可以匿名访问的,可以访问、新建、删除文件。
这里拖进去一个txt文件,可以在Linux上看见该文件。
(这里有个问题,因为FileShare是没有用户的,所以,应该你是可以直接点进去的,但是据我测试,如果之前你没关闭selinux,则就进不去。)
@@ 访问另一个文件夹,WebDev,这个文件夹在之前的配置是需要特定用户才可以访问,
映射网络驱动器
右边的WebDev目录是需要密码访问的

这里演示一下映射该目录为网络驱动器。
“桌面” 右键单击“此电脑”,选择“映射网络驱动器”

在文件夹位置填写该共享文件的网络路径,这里是\\192.168.118.132\WebDev
勾选“使用其他凭据连接”,点“完成”。

填写用户密码

在我的电脑可以看见该网络驱动器(Y)

(这里也可能会遇到一个问题: 不允许一个用户使用一个以上用户名与一个服务器或共享资源的 ...)
net use * /del /y命令中断开所有连接
到此为止,已经全部完成。