概述
samba基于SMB协议(Server Messages Block,信息服务块),实现在局域网上共享文件和打印机。
我们在Linux服务器开发过程中,往往习惯在windows平台完成编码(有各种方便的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:定义工作组
security:这里指定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用户必须先是系统用户,也可使用pdbedit创建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软件包。安装完后就可以使用smbclient命令了。具体语法为:
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平台
在windows平台,win+R弹出窗口,输入双反斜杆IP可以访问:\\192.168.127.88
,然后输入用户名和密码即可。
登陆成功后可以把地址保留下来,选择samba目录,右键,选择“映射网络驱动器”,点击“完成”即可。
samba连接很慢
有时候连接samba文件夹特别慢,这可能是hosts文件中的主机名和network中的主机名不一致,修改过来即可。
# 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
相关推荐
- Ubuntu/Debian 系统安装配置 UFW 简单防火墙
- CentOS 7 安装使用 iptables 防火墙方法介绍
- Linux 服务器配置密钥实现远程免密登录
- CentOS 7 firewalld 防火墙常用命令汇总
- 如何给Redis设置临时或永久密码?
- 在Linux系统中安装配置使用DenyHosts防护工具
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/2412.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。