Ubuntu搭建samba服务器教程

什么是 Samba?

安装 Samba

创建samba共享文件夹的两种方式Anonymous 和 Secured

创建一个 Anonymous share

创建一个 Secured share

Ubuntu环境下测试

Samba配置文件说明

用户账号映射

什么是 Samba?
Samba 的一个应用场景是,有两台主机,一台Windows主机,一台Linux主机,当这两台主机位于同一个局域网之下时,可以在Linux主机上搭建一个Samba服务器,之后,在Windows主机上连接到Linux主机,二者就可以共享各自主机的文件了,而不必再通过额外的介质(例如U盘)来在两台主机之间传递文件了。

安装 Samba
首先可以检查一下是否安装了Samba

$ samba -V

如何已经安装了会有提示当前安装的Samba的版本。如果没有安装 Samba, 你需要自己安装它。安装方法很简单,只需要在终端输入如下条命令即可:

$ sudo apt-get update //不一定需要

$ sudo apt-get install samba samba-common

经测试,安装samba 后会默认安装samba-common

$ sudo apt-get install smbclient

$ sudo apt-get install cifs-utils

上面这两条命令是安装一些工具,可以忽略。

创建samba共享文件夹的两种方式Anonymous 和 Secured
创建一个 Anonymous share
创建一个 Anonymous share, 顾名思义,即在Linux主机上创建一个可以匿名访问的目录,之后,任何可以连接到该Linux主机的Windows主机,都可以访问到这个目录下的文件,而无需输入用户名和密码。

Anonymos share 共享目录的创建步骤如下:

创建 share 目录并设置权限
$ sudo mkdir -p /home/share

$ sudo chmod o+w /home/share

修改Samba的配置文件 /etc/samba/smb.conf
$ sudo vim /etc/samba/smb.conf

在文件末尾添加如下内容:

[share]

comment = this is Linux share directory

path = /home/share

browsable = yes

public = yes

writable = yes

create mask = 0755

directory mask =0755

上述配置的解释如下:

comment 是关于该目录的简要描述

path 参数的共享目录的位置

browsable 表示是否在 Window Explorer中显示该目录

guest ok (或者使用 public)表示是否允许匿名访问该共享目录

read only (或者使用 writable = yes)表示是否是只读

create mode 指明新建立的文件的属性,一般是0755

directory mode 指明新建立的目录的属性,一般是0755

修改完配置文件后可以使用testparm检查一下配置文件是否有语法错误,如果提示有Error则需要检查配置文件语法是否正确。若想使用testparm则需要安装samba-common,一般情况下安装samba后会samba-common默认也会被安装。如果没有默认安装可参考前文。

重启Samba服务使配置生效
$ sudo service smbd restart

至此,Samba服务器配置完成。

创建一个 Anonymous share 目录的优点是访问比较方便,只要在 Windows Exploer 中找到相应的Linux主机后,就可以直接访问,而无需输入用户名和密码,这种情况比较适用于一个安全的环境中(例如家庭中), 但是如果在一个不安全的环境中(例如公共场合), Anonymous share 就不太适用了。

创建一个 Secured share
Secured share 与 Anonymous share 不同,一个 Secured share 共享目录,当客户端访问时需要输入用户名和密码,因此,相比 Anonymous share, Secured share 共享目录的安全性更高。当你在一个公共场合搭建Samba服务器时,应该创建 Secured share 共享目录。

Secured share 共享目录的创建方法如下:

创建一个 secured share 共享目录并设置权限
$ sudo mkdir -p /home/secret

$ sudo chmod o+w /home/secret

创建一个用于访问这个 secured share 的用户
$ sudo useradd sambauser -s /usr/sbin/nologin //创建一个名为sambauser的用户指定路径为/usr/sbin/nologin即不需登陆

修改共享目录的User 为 sambauser
$ sudo chown sambauser:sambauser /home/secret //此操作可以忽略

修改 Samba 配置文件
在文件末尾添加如下内容:

[secret]

comment = Secret File

path = /home/secret

valid user = sambauser

guest ok = no

writable = yes

browsable = yes

create mask = 0755

directory mask =0755

将用户 sambauser加入到本 smbpasswd file
$ sudo smbpasswd -a sambauser

执行完该命令后会在/etc/samba/smbpasswd添加一条关于密码的信息

重启 Samba 服务使配置生效
$ sudo service smbd restart

至此,Samba服务器配置完成。在Windows可以连接和查看如下:

share是匿名访问,可以直接打开,secret打开时需要使用用户名和密码登陆。

Ubuntu环境下测试
使用安装的smbclient工具执行命令

$ smbclient -L //127.0.0.1

得到如下信息,可以查看到已经创建好的共享文件夹

wxy@3020:~$ smbclient -L //127.0.0.1

WARNING: The "syslog" option is deprecated

Enter WORKGROUP\wladmin's password:

Sharename Type Comment

--------- ---- -------

print$ Disk Printer Drivers

share Disk this is Linux share directory

secret Disk Secret File

IPC$ IPC IPC Service (3020 server (Samba, Ubuntu))

Reconnecting with SMB1 for workgroup listing.

Server Comment

--------- -------

Workgroup Master

--------- -------

WORKGROUP UBUNTU

wxy@3020:~$

已经查看到信息,接下来可以利用 mount 这个指令来测试:

连接到Anonymous share
$ sudo mount -t cifs //127.0.0.1/share /mnt

该命令用到了cifs,这是前文介绍的安装的工具,只有安装了cifs-utils之后才能正常执行。

在提示输入Password时,因为Anonymous 没有密码,所以直接Enter 即可,如果成功则没有提示,然后可以进入到/mnt查看挂载已经成功。

连接到Secured share
$ sudo mount -t cifs -o user=sambauser //127.0.0.1/secret /mnt

类似于上面的命令,这个命令中加入了user=sambauser参数,是为了能正确找到用户名,在提示输入Password时,输入通过sudo smbpasswd -a sambauser配置的密码即可。

至此,samba服务器的Anonymous 和 Secured 两种方式已经配置和测试成功,接下来就可以愉快的使用了。

挂载后记得用umount卸载

Samba配置文件说明
smb.conf 的服务器整体参数: [global] 项目
在 smb.conf 这个配置文件当中的设定项目有点像底下这样:

# 会有很多加上 # 或 ; 的批注说明,你也可以自行加上来提醒自己相关设定

[global]

参数项目 = 设定内容

参考:

http://cn.linux.vbird.org/linux_server/0370samba.php

....

[分享资源名称]

参数项目 = 设定内容

....

在 [global] 当中的就是一些服务器的整体参数了,包括工作组、主机的 NetBIOS 名称、字符编码的显示、登录文件的设定、 是否使用密码以及使用密码验证的机制等等,都是在这个 [global] 项目中设定的。至于 [分享资源名称] 则是针对你开放的目录来进权限方面的设定,包括谁可以浏览该目录、是否可以读写等等参数。 在 [global] 部分关于主机名信息方面的参数主要有:

workgroup = 工作组的名称:注意,主机群要相同;

netbios name = 主机的 NetBIOS 名称啊,每部主机均不同;

server string = 主机的简易说明,这个随便写即可。

有些语言编码的设定如下所示:

display charset

unix charset

dos charset

登录文件方面的信息,包括这些参数:

log file = 登录档放置的档案,文件名可能会使用变量处理;

max log size = 登录档最大仅能到多少 Kbytes ,若大于该数字,则会被 rotate 掉。

认证模式有关的参数:

security = share, user, domain:三选一,这三个设定值分别代表:

share:分享的数据不需要密码,大家均可使用 (没有安全性);

user :使用 SAMBA 服务器本身的密码数据库,密码数据库与底下的 passdb backend 有关;

domain:使用外部服务器的密码,亦即 SAMBA 是客户端之意,如果设定这个项目, 你还得要提供『password server = IP』的设定值才行;

encrypt passwords = Yes 代表密码要加密,注意那个 passwords 要有 s 才对!

passdb backend = smbpasswd 本例中使用的此加密配置

smb passwd file = /etc/samba/smbpasswd 根据上面的配置项而配置的加密文件

username map = /etc/samba/smbusers开启用户帐号映射功能

更多信息请参考man smb.conf

用户账号映射
samba的用户帐号信息是保存在smbpasswd文件中滴,而且可以访问samba服务器的帐号也必须对应一个同名的系统帐号。基于这 一点,所以,对于一些hacker来说,只要知道samba服务器的samba帐号,就等于是知道了Linux系统帐号,只要crack其samba帐号密码加以利用就可以攻击samba服务器。所以我们要使用用户帐号映射这个功能来解决这个问题。 

用户帐号映射这个功能需要建立一个帐号映射关系表,里面记录了samba帐号和虚拟帐号的对应关系,客户端访问samba服务器时就使用虚拟来登录。

编辑主配置文件smb.conf 
在配置global下添加一行字段username map = /etc/samba/smbusers开启用户帐号映射功能。

编辑smbusers
如果没有smbusers文件需要根据smb.conf配置在相应的路径下创建一个smbusers文件

smbusers文件保存帐号映射关系,其有固定格式: 

samba = 虚拟帐号(映射帐号) 如:

sambauser = networkusername

帐号sambauser就是我们上面建立的samba帐号(同时也是Linux系统帐号),networkusername就是映射的帐号名(虚拟帐号),帐号 sambauser在我们访问共享目录时只要输入networkusername就可以成功访问了:

$ sudo mount -t cifs -o user=networkusername //127.0.0.1/secret /mnt

但是实际上访问samba服务器的还是我们的sambauser帐号,这样一来就解决了安全问题。

重启samba服务
$ sudo service smbd restart

参考:

鸟哥的 Linux 私房菜 -- SAMBA 服务器

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值