Linux/VPS中Samba服务的安装和配置

SYSTEMLinux 来源: 喵斯基部落

概述

samba 基于 SMB 协议(Server Mes­sages Block,信息服务块),实现在局域网上共享文件和打印机。

我们在 Linux 服务器开发过程中,往往习惯在 win­dows 平台完成编码(有各种方便的 IDE),然后把代码发布到 Linux 上进行测试,这个时候就可以使用 samba 实时管理 Linux 服务器上的文件。

Linux上安装samba

安装

可以使用 yum,apt-get 等软件管理工具直接安装:

yum install samba samba-client samba-swat

启动

/etc/init.d/smb start

设置密码

# 使用下面的方法配置用户名和密码,username替换为用户名
smbpasswd -a username
输入password

samba服务器配置

配置文件

samba 配置文件为:/etc/samba/smb.conf,其中可以对 samba 进行配置,配置之后需要重启 samba。

配置文件一篇分为三部分 [global][homes][printers],如下:

[global]
    workgroup = MYGROUP
    server string = Samba Server Version %v
    log file = /var/log/samba/log.%m
    max log size = 50
    security = user
    passdb backend = tdbsam
    load printers = yes
    cups options = raw
[homes]
    comment = Home Directories
    browseable = no
    writable = yes
;   valid users = %S
;   valid users = MYDOMAIN\%S
[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    writable = no
    printable = yes

[global] 定义全局配置,各配置含义如下:

  • workgroup:定义工作组
  • se­cu­rity:这里指定 samba 的安全等级。关于安全等级有四种:
    • share:用户不需要账户及密码即可登录samba服务器
    • user:由提供服务的samba服务器负责检查账户及密码(默认)
    • server:检查账户及密码的工作由另一台windows或samba服务器负责
    • domain:指定windows域控制服务器来验证用户的账户及密码。
  • passdb backend:用户后台模式,samba有三种用户后台:smbpasswd, tdbsam和ldapsam
  • load printers 和 cups options 两个参数用来设置打印机相关
  • hosts allow = 127. 192.168.12. 192.168.13. 用来设置允许的主机,如果在前面加”;”则表示允许所有主机
  • log file = /var/log/samba/%m.log:定义samba的日志,这里的%m是上面的netbios name
  • max log size = 50:指定日志的最大容量,单位是K

[homes] 部分为共享用户的 home 目录配置,对于单纯的文件共享环境来说可以注释掉

[printers] 部分内容设置打印机共享。

管理samba用户

在 samba 的配置文件中,[global] 的 passdb backend 部分指定使用什么方式管理用户。下面介绍其中的两种:

smbpasswd 模式下用 smbpasswd 命令管理 samba 用户

  • smbpasswd -a username:创建用户并设置密码

tdbsam 模式下使用 pdbedit 命令来管理 samba 用户,在 /etc/​samba 中维护用户数据库:passdb.tdb。要创建的 Samba 用户必须先是系统用户,也可使用 pdbe­dit 创建 Samba 账户。

  • pdbedit –a username:新建Samba账户
  • pdbedit –x username:删除Samba账户
  • pdbedit –L:列出Samba用户列表
  • pdbedit –Lv:列出Samba用户列表详细信息

samba实际应用

共享一个目录,任何人都可以访问

修改配置文件并重启服务:

vim /etc/samba/smb.conf

# 修改[global]部分,如下
[global]
    workgroup = WORKGROUP
    security = share
# 添加[share]部分
[share]
    comment = share all
    path = /tmp/samba
    browseable = yes
    public = yes
    writable = no

# 创建共享目录
mkdir /tmp/samba
chmod 777 /tmp/samba

# 重启或启动samba服务
/etc/init.d/smb start

共享一个目录,使用用户名和密码登录后才可以访问

修改配置文件并重启服务:

vim /etc/samba/smb.conf

# 修改[global]部分,如下
[global]
    workgroup = WORKGROUP
    server string = Samba Server Version %v
    security = user
    passdb backend = tdbsam
    load printers = yes
    cups options = raw
# 添加下面myshare的共享规则
[myshare]
    comment = share for users
    path = /samba/myshare
    browseable = yes
    writable = yes
    public = no

# 创建共享目录
mkdir /samba/myshare
chmod 777 /samba/myshare

# 重启或启动samba服务
/etc/init.d/smb start

# 然后添加用户,因为 passdb backend = tdbsam,所以使用pdbedit来增加用户
useradd  user1 user2
pdbedit -a user1  # 添加user1账号,并定义其密码
pdbedit -a user2
pdbedit -L # 列出所有的账号

访问samba服务器

Linux平台

Samba 服务在 linux 下同样可以访问。前提是你的 linux 安装了 samba-client 软件包。安装完后就可以使用 sm­b­client 命令了。具体语法为:

smbclient -L //IP/共享名  -U 用户名
Samba无密码访问时,password: 直接回车即可。

# 如下面的例子
[root@localhost]# smbclient //192.168.127.88/myshare/ -U user1
Password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
smb: \>

另外可以使用 mount 在本地挂载,方法如下:

mount -t cifs //192.168.127.88/myshare /mnt -o username=user1,password=123456

Windows平台

在 win­dows 平台,win+R 弹出窗口,输入双反斜杆 IP 可以访问:\\192.168.127.88,然后输入用户名和密码即可。

2018060512364393.png
2018060512364393.png

登陆成功后可以把地址保留下来,选择samba目录,右键,选择“映射网络驱动器”,点击“完成”即可。

 

samba连接很慢

有时候连接 samba 文件夹特别慢,这可能是 hosts 文件中的主机名和 net­work 中的主机名不一致,修改过来即可。

# network网络信息,HOSTNAME为主机名
cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server

# hosts配置
cat /etc/hosts

# 编辑host
vim /etc/hosts
127.0.0.1   server

若以上方法仍然无法解决问题,可以尝试优化内存来改善 SMB 的连接速度。

echo vm.swappiness=10 | tee -a /etc/sysctl.conf
echo 1 > /proc/sys/vm/drop_caches

然后重启

reboot

本文发布于 40 天前,内容仍有参考价值