用 Samba 快速搭建文件服务器

原创 2018年 3月 25日
标签: LINUX SAMBA
本文发布至今已有6年零272天,可能不再适用,请谨慎对待。

Samba 是年代久远的文件服务器,使 windows 能从 Linux 系统中上传和下载文件。但是因为配置和逻辑难以理解,有时候难以搭出想要的形式。本文试着总结出 Samba 服务器的搭建技巧。

安装

ubuntu/debian 系统,使用如下命令安装:

$ sudo apt-get install -y samba

centos系统,安装命令是

$ yum -y install samba

安装后,samba 的配置文件位于 /etc/samba/smb.conf

一个比较好的实践是,将这个文件复制一个备份出来, 当后面尝试失败后,还能从头开始。

$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

匿名下载

这是一个匿名下载的例子

# smb.conf
[doc]
      comment = doc
      path = /path/to/doc
      writable = no
      guest ok = yes
      browseable = yes

上面各配置项的解释:

  • comment : 注释
  • path : 映射的服务器本地的目录,这个目录必须有足够的读权限,比如755
  • writable : no 表示不可写
  • guest ok : 允许匿名
  • browseable : 从"网络邻居"里可以查看

匿名上传

这是一个匿名上传的例子

# smb.conf
[upload]
      comment = upload
      path = /path/to/upload
      writable = yes
      guest ok = yes
      browseable = yes
      create mask = 0755
      public = yes

上面配置项的解释:\

  • create mask : 上传文件的默认权限设置\
  • path : 映射的服务器本地的目录,这个目录必须有足够的写权限,比如777

关于用户认证

不同的客户系统登录 samba 的时候,登录方式是不同的。 Windows 会使用当前用户名和密码,登录 Samba。而Mac 则可以设置登录的用户名。而 Samba 则自己保存一套用户名列表,当收到登录请求后,Samba 会根据请求的用户名和配置文件规定的登录逻辑,决定是否允许用户登录、下载和上传。 当通过以后,Samba 会以该用户名去向 Linux 请求文件,这时还需要 Linux 的文件系统赋予足够的权限。

下面看看如何在不同的系统上配置实名上传和下载。

实名下载

当 Windows 向 Samba 服务器发出浏览请求时,会把当前的用户名和密码一并发给 Samba。假设 Windows 当前使用 Administrator 用户名,和空密码登录

然而 Samba 并不接受空密码,所以登录失败,Samba 会将这次请求当做一个 bad user , 如果 smb.conf 里的 global 一节里面配置了 map to guest = Bad User,Samba会把这次登录转换为 guest 匿名登录。

# smb.conf
[global]
      map to guest = Bad User

而且同时你准备访问的资源设置了允许 guest 匿名登录

# smb.conf
[doc]
      guest ok = yes

那么这个资源仍然可以访问。但是如果上述的 guest ok 设置了 no ,则 Samba 会向 Windows 要求手动输入用户名和密码,这时就会在 Windows 界面上看到用户名密码的提示框。

所以正确的做法是,登录 windows 使用带密码的用户名,比如 winuser ,再在 samba 里面添加同一个用户名 winuser,命令是

$ sudo smbpasswd -a winuser

然后,在 Linux 里面,需要有 winuser 用户,而且 winuser 要对下载的路径有读权限。

这是一个实名下载的例子

# smb.conf
[global]
    ....
    security = user
    ....
[doc]
      comment = doc
      path = /path/to/doc
      writable = no
      guest ok = no
      browseable = yes
      valid users = winuser

配置文件里的 winuser 需要修改为你的 windows 用户名

实名上传

只要在上一节里的配置文件 writable 设置为 yes 即可

# smb.conf
[global]
    ....
    security = user
    ....
[doc]
      comment = doc
      path = /path/to/doc
      writable = yes
      guest ok = no
      browseable = yes
      valid users = winuser

如果您对本文有疑问或者寻求合作,欢迎 联系邮箱邮箱已到剪贴板

标签: LINUX SAMBA
给个免费的赞吧~

精彩评论

本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/samba/ ,且不得用于商业用途。