Linux Samba目录服务搭建与Java客户端访问

前言:

      本文比较简略,只求快速入门,若要了解详情,推荐一篇文章:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html

1,安装samba(大部分linux上默认安装的可能不完整,建议重新安装)

#检测是否安装,请注意不同安装包协议命令不尽相同#
rpm -qa|grep samba 
#安装#
yum install samba samba-client samba-swat

2,启动samba SMB服务

/etc/init.d/smb start

启动samba NMB服务

/etc/init.d/nmb start

3, 增加用户和组

groupadd dmp
useradd -g dmp ff

/** 改密-- 密码最好使用大小写+特殊字符+数字,否则会需要多次反复重新输入 **/

passwd ff

4, 重启samba服务

/etc/init.d/smb restart
/etc/init.d/nmb restart

 

5, 配置 /etc/samba/smb.conf 增加公共目录.

[starfish] #相对目录,供外部访问#
comment = starfish
path=/home/ff/starfish_cookie_file #绝对路径#
valid users = @dmp #组名#
write list = @dmp #组名#
read only = No
create mask = 0777
force create model = 0777
directory mask = 0777
force directory mode = 0777
guest ok = yes
writable = yes

注:如果条件允许尽量给与目录尽可能大的权限,相关具体参数请参考官方文档。

6, 重启samba服务

/etc/init.d/smb restart
/etc/init.d/nmb restart

7,在root权限下执行目录权限设置

chmod 777 /home/ff/starfish_cookie_file

8, 更快捷的命令

#查看samba服务状态#
#service smb status
#service nmb status

#开启samba服务#
service smb start  

#关闭samba服务#
service smb stop

#重启samba服务#
service smb restart

9,Java代码访问.

package org.wit.ff.io;

import java.net.MalformedURLException;

import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;

import org.junit.Test;

/**
 * 
 * <pre>
 * Java访问Samba 示例
 * </pre>
 * 
 * @author F.Fang
 * @version $Id: SambaDemo.java, v 0.1 2014年9月29日 上午2:45:29 F.Fang Exp $
 */
public class SambaDemo {

    /**
     * 
     * <pre>
     * 不推荐.
     * 原因:若用户名或密码中存在'@'符号,则会抛出连接异常,samba访问路径错误.
     * </pre>
     *
     * @throws MalformedURLException
     * @throws SmbException
     */
    @Test
    public void demo1() throws MalformedURLException, SmbException {
        String conStr = "smb://tomcat:1234567@192.168.21.126/starfish";
        SmbFile smbFile = new SmbFile(conStr);
        if (smbFile.exists()) {
            //
            System.out.println("hello world!");
        }

    }

    /**
     * 
     * <pre>
     * 推荐.
     * 用户名和密码独立传入.
     * </pre>
     *
     * @throws SmbException
     * @throws MalformedURLException
     */
    @Test
    public void demo2() throws SmbException, MalformedURLException {
        String url = "smb://192.168.21.126/starfish";
        NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication(".", "tomcat", "1234567");
        SmbFile smbFile = new SmbFile(url, authentication);
        if (smbFile.exists()) {
            //
            System.out.println("hello world!");
        }
    }

}

10, Java客户端访问Maven依赖

 <dependency>
     <groupId>jcifs</groupId>
     <artifactId>jcifs</artifactId>
     <version>1.3.17</version>
</dependency>

 

posted @ 2014-09-29 13:53 坚持很贵 阅读(...) 评论(...) 编辑 收藏