linux下centos搭建samba共享服务

使用连接地址下载samba源码tar.gz的包进行安装,方便后续更改

http://download.chinaunix.net/download.php?id=55&ResourceID=30

tar zxvfsamba-3.0.22.tar.gz解压源文件包执行相关的编译安装


系统默认的安装路径是/usr/local/samba

安装完成后,我们需要配置动态链接库路径,因为运行samba的进行smbd和nmbd需要到目录/usr/local/samba/lib下的动态链接库文件。但是该目录不是系统默认的动态链接库文件搜索路径,于是我们需要将该目录添加到文件ld.so.conf中。执行下面的命令

vi /etc/ld.so.conf


然后执行命令ldconfig

创建共享目录  /data/server/smb  执行授权服务

chmod 755 /data   && chmod 755 /data/server     && chmod 755 /data/server/smb


samba在运行过程中需要用到配置文件smb.conf。smb.conf配置文件是samba最重要的配置文件,该文件定义了samba的安全机制、文件共享和打印共享的目录和参数以及其他一些系统配置功能。

配置文件smb.conf的默认路径是/usr/local/samba/lib/smb.conf

[global]
         workgroup = STAFF
         server string = Samba Server %v
         security = user
         log file = /var/log/samba/%m.log
         passdb backend = smbpasswd
[bbp]
         path = /data/server/smb
         valid users = smbHanson

 write list = smbHanson
         writeable = yes
配置smb.conf文件后,在开始运行samba的服务进程之前。我们需要先做一些准备工作。运行smbpasswd命令(在目录/usr/local/samba/bin下)

samba共享服务的主要配置文件是使用的/etc/samba/smb.conf这个目录下的文件,具体内容如下


添加smb用户 useradd -s /sbin/nologin smbHanson

修改smb用户 smbpasswd –a smbHanson


关闭防火墙以免阻止访问,执行启动命令进行本机测试


下面使用Windows测试smb是否能够正常的共享呢




最后再次提醒一下,smb.conf文件存在在/etc/samba  、/usr/local/samba/lib目录下   两个目录必须同时存在这个smb.conf文件

[global]
workgroup = STAFF
server string = Samba Server Version %v
passdb backend = smbpasswd
log file = /var/log/samba/log.%m
max log size = 50
idmap config * : backend = tdb


[bbpsmb]
path = /data/server/smb
valid users = smbHanson
write list = smbHanson
writeable= yes
browsable =yes
public = yes
guestok = yes

连接密码设置的时候我是设置的smb123好记

具体相关参数定义可访问:www.cnblogs.com/mchina/archive/2012/12/18/2816717.html


使用java代码测试samba服务能否正常上传

package com.cn.smb;


import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;


import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileOutputStream;


public class SmbUtil {


    private static  SmbFile smbFile = null;//Singleton


    private  SmbFileOutputStream smbOut = null;


    private String url ;


    private  String code_temp = "";


   public SmbUtil(String url,String code){
       this.url = url ;
       code_temp = code;
        init(code);
    }


    /**
     * 初始化链接
     * @param code
     */
    public  void init(String code) {
        try {
       
            System.out.println("开始连接...url:" + url + "/" + code);
        if (smbFile == null) {
            smbFile = new SmbFile(url + "/" + code);
            code_temp = code;
            smbFile.connect();
          }
            System.out.println("连接成功...url:" + url + "/" + code);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 文件上传
     * @param inputStream
     * @param imageName
     * @return
     */
    public boolean uploadFileByStream (InputStream inputStream,String imageName) {
        long start = System.currentTimeMillis();
        boolean flag = true ;
        BufferedInputStream bf = null;
        try {


            System.out.println("--->  "+url +"/"+code_temp+ "/");
            this.smbOut = new SmbFileOutputStream(url +"/"+code_temp+ "/" + imageName, false);
            bf = new BufferedInputStream(inputStream);
            byte[] bt = new byte[8192];
            int n = bf.read(bt);
            while (n != -1) {
                this.smbOut.write(bt, 0, n);
                this.smbOut.flush();
                n = bf.read(bt);
            }


            System.out.println("文件传输结束... 文件传输耗时:"+(System.currentTimeMillis()-start));
        } catch (IOException e) {
            e.printStackTrace();
            flag = false ;
        } finally {
            try {
                if (null != this.smbOut)
                    this.smbOut.close();
                if (null != bf)
                    bf.close();
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }


        return flag;
    }
}

单元测试:



import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;


import com.cn.smb.SmbUtil;


public class TestSmb {
public static void main(String[] args) throws FileNotFoundException {
SmbUtil smbUtil = new SmbUtil("smb://smbHanson:smb123@192.168.40.167","bbp");
File imageFile = new File("E:\\adog.jpg");
InputStream inputStream = new FileInputStream("E:\\adog.jpg");


smbUtil.uploadFileByStream(inputStream, "adog.jpg");
 
}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值