linux搭建samba服务器

先查看系统中是否安装有samba服务相关的软件包,可以使用yum软件包管理工具安装samba
linux搭建samba服务器
安装成功之后,系统会生成服务的配置文件和一些命令工具
/etc/samba/smb.conf //是samba服务的主配置文件
/etc/init.d/smb //是samba的启动/关闭文件
linux搭建samba服务器

设置开机自动启动
chkconfig --level 35 smb on #在3、5级别上自动运行samba服务
linux搭建samba服务器
配置参数说明
workgroup = WORKGROUP          #设置工作组名称
security = user #此为需要密码才能访问 可以是share,user,server,domain安全级别递增
passdb backend = smbpasswd #指定密码文件 可以是 tdbsam | passdb | smbpasswd
smb passwd file= /etc/samba/smbpasswd #指定密码文件路径
log file = /var/log/samba/%m.log #日志文件存放位置
max log size = 10 #日志文件大小,以M为单位
comment = This is my shared folder. #该共享的说明
path = /home/share #共享路径
guest ok = yes #跟public一样,是否允许guest用户
public = yes #公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用)
writeable = yes          不以只读方式共享当与read only发生冲突时,无视read only
browseable = yes         在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取

smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba 密码,客户端就用此密码访问Samba资源。也就是说用这种方法创建的永和可以是虚拟的,也就是Linux系统中不存在该用户也可以。smbpasswd存放在/etc/samba中,有时需要手工创建该文件。
tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用smbpasswd –a创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。

用testparm 测试smb.conf配置是否正确
linux搭建samba服务器
linux搭建samba服务器
[printers] 其实这个共享目录是分配给打印机使用的……因为挂载的是目录,不是打印机,所以当然找不到网络位置了
vim /etc/samba/smb.conf
加入以下到配置文件,重启samba
[samba1]
comment = this is samba share
path = /data/samba1
public = yes #samba默认是不允许匿名用户访问的,所有必须加上
writable = yes
browseable = yes
guest ok = yes

[samba2]
comment = this is samba share
path = /data/samba2
public = yes
writable = yes
browseable = yes
linux搭建samba服务器
共享目录为:/data/samba1,共享目录对外名称为:samba1 即在Windows看到的目录名称。
共享目录为:/data/samba2,共享目录对外名称为:samba2 即在Windows看到的目录名称。

因为文件共享不安全,所以你不能连接到文件共享。此共享需要过时的SMB1协议,而此协议是不安全的,可能会使你的系统遭受攻击。
你的系统需要SMB2或更高版本。关于如何解决此问题的信息,请参见:
linux搭建samba服务器
其实,该问题是win10 版本不兼容导致的。具体解决方法如下:
linux搭建samba服务器
删除文件被拒绝
linux搭建samba服务器
创建文件被拒绝
chmod 777 -R /data/samba1
chmod 777 -R /data/samba2
现在可以使用匿名用户进行创建或删除操作了
由于创建的目录自带权限,我们可以先完全放开目录的权限,通过samba对特定用户进行授权,

上面我们用的是匿名访问,接下来禁用匿名,使用用户访问
我们用的方法是先添加用户,但添加的这些用户都是虚拟用户,因为这些用户是不能通过SHELL登录系统的;另外值得注意的是系统用户密码和Samba用户的密码是不同的。如果您设置了系统用户能登入SHELL,可以设置用户的Samba密码和系统用户通过SHELL登录的密码不同。
添加一个共享用户,用来访问共享文件。
使用smbpasswd添加共享用户的常用方法:

smbpasswd -a 添加用户(被添加用户必须是系统用户)
    smbpasswd -d 冻结用户 (这个用户不能用了)
    smbpasswd -e 恢复用户 (将冻结的用户解冻)
    smbpasswd -n 将用户密码设置为空
    smbpasswd -x 删除用户

要求:samba1目录只有用户samba1可以访问,具有上传下载权限
samba2目录只有用户samba2可以访问,具有上传下载权限
samba目录所有用户可以访问,只能下载,不能上传

先添加一个普通用户 (因为要添加的共享用户必须是系统用户)

useradd samba1 //因为不需要在shell中登录,所以可以不设置密码

useradd samba2

然后使用smbpasswd添加共享用户并设置密码
linux搭建samba服务器
修改smb服务配置文件
security = user
[samba1]
comment = this is samba share
path = /data/samba1
public = yes
writable = yes
browseable = yes
valid users = samba1 #指定用户可以登录访问

[samba2]
comment = this is samba share
path = /data/samba2
public = yes
writable = yes
browseable = yes
valid users = samba2 #指定用户可以登录访问

[samba]
comment = this is samba share
path = /data/samba
public = yes
writable = yes
browseable = yes

测试
使用samba1用户登陆 ,不能修改和上传sam目录下的文件,只能下载文件
linux搭建samba服务器
linux搭建samba服务器
linux搭建samba服务器
打开samb2目录时,拒绝访问
linux搭建samba服务器