`

使用samba实现linux,windows间文件共享

阅读更多

经常在linux下需要用到windows下的文件,但是将文件通过ftp上传到linux上又很浪费时间,而且很浪费磁盘的空间,也很难保证两台机器上文件的同步,要是能够像windows之间那样直接进行共享就好了,下面我就们就来看看如何在linux和windows下面共享文件呢。

本文是一台windows7和两台RedHat5.3机器上进行测试,windows7IP地址为192.168.31.226,机器名为WANGHAIFENG-PC,Linux的IP分别是192.168.31.145和192.168.31.167。

(一)检查和安装samba是否安装

(1)分别检查两台机器samba的安装情况,

# uname -r
2.6.18-53.el5                               //192.168.31.145
[root@dhcp_host mnt]# rpm -qa | grep samba
samba-client-3.0.25b-0.el5.4
system-config-samba-1.2.39-1.el5
samba-3.0.25b-0.el5.4
samba-common-3.0.25b-0.el5.4

# uname -r
2.6.18-53.el5                              //192.168.31.167
#rpm -qa | grep samba
samba-common-3.0.25b-0.el5.4
samba-client-3.0.25b-0.el5.4

从上面可以看出,145安装了samba的服务端和客户端,而在167上只安装了samba的客户端,因此在145能够查看和共享文件,而在167上只能查看文件,假如需要共享文件,可以在RedHat的安装光盘中获得samba-3.0.25b-0.el5.4.rpm进行安装,system-config-samba-1.2.39-1.el5是samba图形化的配置程序。

(2)安装samba Server端,在192.168.31.167上进行安装

#rpm -Uvh samba-3.0.33-3.7.el5.i386.rpm
warning: samba-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
        perl(Convert::ASN1) is needed by samba-3.0.33-3.7.el5.i386
        samba-common = 0:3.0.33-3.7.el5 is needed by samba-3.0.33-3.7.el5.i386

这是由于原先的Samba版本比现有的版本低,因此需要进行升级,否则无法安装。

# rpm -Uvh samba-common-3.0.33-3.7.el5.i386.rpm
warning: samba-common-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
        samba-common = 0:3.0.25b-0.el5.4 is needed by (installed) samba-client-3.0.25b-0.el5.4.i386

由于samba-client依赖于现在的samba-common,因此先删除samba-client,然后再升级安装samba-common

# rpm -e samba-client-3.0.25b-0.el5.4.i386
# rpm -Uvh samba-common-3.0.33-3.7.el5.i386.rpm

warning: samba-common-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:samba-common           ########################################### [100%]

继续安装samba-3.0.33-3.7.el5.i386.rpm

#rpm -Uvh samba-3.0.33-3.7.el5.i386.rpm
warning: samba-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
        perl(Convert::ASN1) is needed by samba-3.0.33-3.7.el5.i386

从上图可以看出来还缺少perl(Convert::ASN1) 这个模块,在安装光盘中找到perl-Convert-ASN1-0.20-1.1.noarch.rpm这个文件

# rpm -Uvh perl-Convert-ASN1-0.20-1.1.noarch.rpm
warning: perl-Convert-ASN1-0.20-1.1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:perl-Convert-ASN1      ########################################### [100%]
#rpm -Uvh samba-3.0.33-3.7.el5.i386.rpm
warning: samba-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:samba                  ########################################### [100%]
# rpm -Uvh samba-client-3.0.33-3.7.el5.i386.rpm
warning: samba-client-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:samba-client           ########################################### [100%]
# rpm -qa | grep samba
samba-common-3.0.33-3.7.el5
samba-3.0.33-3.7.el5
samba-client-3.0.33-3.7.el5

samba就已经安装完成了,上面这些安装文件都能够在RedHat的安装CD中找到。

(3)添加samba用户

使用smbpasswd添加samba用户,用户必须是linux系统中已有的用户,密码则不必和系统用户相同。

# smbpasswd root
New SMB password:
Retype new SMB password:
Failed to find entry for user root.
Failed to modify password entry for user root

出现上面这个错的原因是因为需要为root用户创建一个用户,使用smbpasswd –a root就可以创建一个entry了,再次调用smbpasswd就不需要使用-a选项了, -x上删除用户。

# smbpasswd -a root
New SMB password:
Retype new SMB password:
Added user root.
#smbpasswd root
New SMB password:
Retype new SMB password:

# smbpasswd -a wanghaifeng
New SMB password:
Retype new SMB password:
Failed to modify password entry for user wanghaifeng

出现上述错误的原因是因为在这台系统中不存在wanghaifeng这个用户,假如需要可以使用adduser添加用户。

(4)samba配置文件

smaba的配置文件都/etc/samba/下面,smb.conf是主配置文件。

(二)在windows下面开启共享

在D盘中新建文件夹samba_test,右击->属性->共享,点击共享按钮,根据需要添加对应的用户,可以选择不同的权限,位置是\\WANGHAIFENG-PC\samba_test ,WANGHAIFENG-PC是机器名。

(三)在linux下查看共享文件

(1)查看所有共享内容

smbclient 是Samba 的Linux 客户端,在Linux机器上用来查看服务器上的共享资源,也可以象FTP一样,用户可以登录Samba服务器,也可以上传put和下载get文件[3]。使用下面的命令,其中用户名是指windows系统的用户名,然后输入该用户的密码。

#smbclient -L //IP或机器名  [-U 用户名]

# smbclient -L //WANGHAIFENG-PC -U wanghaifeng
Password:
Domain=[WANGHAIFENG-PC] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      远程管理
        C$              Disk      默认共享
        D$              Disk      默认共享
        E$              Disk      默认共享
        IPC$            IPC       远程 IPC
        print$          Disk      打印机驱动程序
        samba_test      Disk     
        Users           Disk     
Domain=[WANGHAIFENG-PC] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
[root@lcmsp_test samba]# smbclient -L //192.168.31.226 -U wanghaifeng
Password:
Domain=[WANGHAIFENG-PC] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      远程管理
        C$              Disk      默认共享
        D$              Disk      默认共享
        E$              Disk      默认共享
        IPC$            IPC       远程 IPC
        print$          Disk      打印机驱动程序
        samba_test      Disk     
        Users           Disk     
session request to 192.168.31.226 failed (Called name not present)
session request to 192 failed (Called name not present)
session request to *SMBSERVER failed (Called name not present)
NetBIOS over TCP disabled -- no workgroup available

分别使用IP和主机名进行测试,发现使用主机名进行访问的时候一切正常,使用IP进行访问就会出现上面的那些问题,尚待解决…,已经可以在共享内容中看到我们的共享文件samba_test。

# smbclient -L //WANGHAIFENG-PC/
Password:
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]

        Sharename       Type      Comment
        ---------       ----      -------
cli_rpc_pipe_open: cli_nt_create failed on pipe \srvsvc to machine WANGHAIFENG-PC.  Error was NT_STATUS_ACCESS_DENIED
Error returning browse list: NT_STATUS_ACCESS_DENIED
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
#smbclient -L //WANGHAIFENG-PC/ -U Guest
Password:
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]

        Sharename       Type      Comment
        ---------       ----      -------
cli_rpc_pipe_open: cli_nt_create failed on pipe \srvsvc to machine WANGHAIFENG-PC.  Error was NT_STATUS_ACCESS_DENIED
Error returning browse list: NT_STATUS_ACCESS_DENIED
Anonymous login successful
Domain=[WORKGROUP] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

尝试着匿名登录,但是失败了,Windows上开启了Guest用户后,也是不行,不知道有什么好的方法。

(2)登录获取共享内容

使用下面的命令能够登录samba上传和下载文件

#smbclient  //IP地址或者主机名/共享文件夹    -U 用户

# smbclient  //WANGHAIFENG-PC/samba_test -U wanghaifeng
Password:
Domain=[WANGHAIFENG-PC] OS=[Windows 7 Ultimate 7600] Server=[Windows 7 Ultimate 6.1]
smb: \> ?                           //登录成功,进入samba的shell,输入?查看所有命令
?              altname        archive        blocksize      cancel        
case_sensitive cd             chmod          chown          close         
del            dir            du             exit           get           
getfacl        hardlink       help           history        lcd           
link           lock           lowercase      ls             mask          
md             mget           mkdir          more           mput          
newer          open           posix          posix_open     posix_mkdir   
posix_rmdir    posix_unlink   print          prompt         put           
pwd            q              queue          quit           rd            
recurse        reget          rename         reput          rm            
rmdir          showacls       setmode        stat           symlink       
tar            tarmode        translate      unlock         volume        
vuid           wdel           logon          listconnect    showconnect   
!             
smb: \> ls                        //ls可以查看有哪些文件
  .                                   D        0  Fri Mar 12 11:37:15 2010
  ..                                  D        0  Fri Mar 12 11:37:15 2010
  test.txt                            A       11  Fri Mar 12 11:37:44 2010

                51199 blocks of size 1048576. 24705 blocks available
smb: \> ? du                 //? 命令        可以查看命令的使用方法
HELP du:
        <mask> computes the total size of the current directory

smb: \> get test.txt         //使用get进行下载
getting file \test.txt of size 11 as test.txt (3.6 kb/s) (average 3.6 kb/s)
smb: \> put install.log     //使用put进行上传操作
putting file install.log as \install.log (326.4 kb/s) (average 326.4 kb/s)

上述的命令和ftp的命令非常的类似,可以使用put上传,get进行下载操作。

(3)挂载共享文件夹到Linux目录

我们也可以使用mount命令将共享的Windows文件挂载到Linux目录下面,命令格式如下面所示,username和password都是指,windows系统的用户名和密码,与samba用户名和密码无关

# mount -t cifs -o username=xxx,password=xxx //hostname/dir /mnt/tmp

# mount -t cifs -o username=wanghaifeng //192.168.31.226/samba_test /mnt
Password:
#cd /mnt/
[root@lcmsp_test mnt]# ls
install.log  test.txt
#ls -l
总计 37
-rwxrwSrwt 1 root root 36099 03-12 11:46 install.log
-rwxrwSrwt 1 root root    11 03-12 11:37 test.txt
#df -k
文件系统               1K-块        已用     可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
                      36216640  25681808   8665420  75% /
/dev/hdc1               101086     22173     73694  24% /boot
tmpfs                   517308         0    517308   0% /dev/shm
//192.168.31.226/samba_test
                      52428796  27130460  25298336  52% /mnt

假如用下面这种方式挂载,便会报错,由于在RedHat5上已经默认不知道smbfs了

# mount -t smbfs -o username=wanghaifeng //192.168.31.226/samba_test /mnt
mount: unknown filesystem type 'smbfs'

(四)在linux下共享文件

那如何在linux下共享文件呢,这都是在samba的配置文件smb.conf里面设置的,默认是访问samba用户的的HOME目录。

可以根据需求将配置共享目录,是否匿名,具体的配置可以查看参考资料【3】和【4】

(五)在windows下查看linux共享文件

在windows查看linux下的共享文件就很方便了,在文件浏览器里直接输入\\IP就可以直接查看文件内容了,比如\\192.168.31.145,输入用户名和密码,这里用户名和密码就是在开始设置的samba用户名和密码

参考资料:

[1] mount: unknown filesystem type "smbfs" http://hi.baidu.com/joe266/blog/item/a2ddfdef94729211fdfa3ce8.html

[2]http://lists.samba.org/archive/samba/2005-April/103326.html

[3]http://www.linuxsir.org/main/node/158

[4]http://gchuyun.iteye.com/blog/171436

分享到:
评论

相关推荐

    利用Samba实现Linux和Windows文件共享 组建Samba文件服务器.pdf

    "利用Samba实现Linux和Windows文件共享 组建Samba文件服务器" Samba是一种基于SMB(Server Message Block)协议的应用程序,允许Linux系统与Windows系统之间的文件共享。Samba可以使Linux系统出现在Windows的网络...

    利用Samba实现Linux和Windows文件共享.pdf

    利用Samba实现Linux和Windows文件共享.pdf

    Linux系统下用samba工具实现文件共享及共享打印机的配置

    Samba工具是Linux系统下的一种文件共享和打印机共享工具,可以将Linux系统下的文件和打印机共享给Windows系统下的计算机,以便实现跨平台的文件共享和打印机共享。使用Samba工具可以简化文件共享和打印机共享的过程...

    ubuntu下用samba实现windows与linux文件共享

    今天,我们将讨论如何使用samba在ubuntu下实现windows与linux文件共享。 首先,需要安装samba和smbfs,这是实现文件共享的基础。使用以下命令来安装: ``` sudo apt-get install samba sudo apt-get install smbfs ...

    一步一学Linux与Windows_共享文件Samba

    它不仅支持Windows系统之间的文件共享,也是Linux系统之间文件共享的一种选择,尽管在Linux系统间更倾向于使用NFS(Network File System)。Samba之所以能够在Windows环境中得到广泛应用,是因为它能够很好地处理...

    用Samba实现Linux和Windows之间的文件共享.pdf

    "用Samba实现Linux和Windows之间的文件共享" 本文主要介绍了Samba技术在实现Linux和Windows之间的文件共享方面的应用。Samba是一个基于SMB(Server Message Block)协议的应用程序,通过支持该协议,Samba允许Unix...

    利用Samba实现Windows和Linux的资源共享.ppt

    "利用Samba实现Windows和Linux的资源共享" Samba是一种实现Windows和...使用Samba可以实现跨操作系统的资源共享,例如将Linux系统中的文件共享给Windows系统。但是,我们需要考虑安全问题,例如访问权限、身份验证等。

    虚拟机中的Linux与Windows文件共享互通--samba软件的配置.pdf

    本文主要讲述了在虚拟机中使用Samba软件来实现Linux与Windows文件共享互通的配置过程。下面是相关的知识点: 一、Samba软件简介 Samba是一个网络服务器,用于Linux和Windows共享文件之用。它可以用于Linux和...

    Samba实现Windos与linux文件共享.docx

    下面我们将详细探讨如何通过Samba来实现Windows与Linux之间的文件共享。 ### 安装Samba 首先,你需要在Linux系统上安装Samba。这通常可以通过包管理器完成。在Ubuntu或Debian系统中,可以使用以下命令: ```bash ...

    虚拟机LINUX与主机WINDOWS文件共享

    在虚拟机 LINUX 和主机 WINDOWS 之间实现文件共享需要使用 SAMBA 服务器。 SAMBA 是一个功能强大的开源软件,可以实现 LINUX 和 WINDOWS 之间的文件共享。下面将详细介绍如何实现虚拟机 LINUX 和主机 WINDOWS 之间的...

    用samba服务器实现linux与windowsXP之间的文件共享

    使用 Samba 服务器实现 Linux 与 Windows XP 之间的文件共享 Samba 服务器是一种开放源代码的文件共享工具,能够让 Linux 和 Windows 操作系统之间实现文件共享。在本文中,我们将详细介绍如何使用 Samba 服务器...

    Linux下Samba服务器的搭建——实现LINUX与WINDOWS之间文件共享.pdf

    Linux下Samba服务器的搭建——实现LINUX与WINDOWS之间文件共享 本文主要讲解了Linux操作系统下如何设置Samba服务器,实现Linux与Windows之间的文件共享。Samba服务器是Microsoft和Intel在1987年开发的协议,可以用...

    Linux与Windows 共享文件Samba

    **Linux与Windows共享文件Samba详解** ...通过Samba,Linux和Windows系统可以轻松实现文件共享,极大地提高了协作效率。了解并熟练掌握Samba的配置和管理,对于在多平台环境中工作的IT专业人员至关重要。

    samba windows linux ubuntu 共享

    在IT领域,跨平台文件共享是一项关键技能,尤其在混合操作系统环境如Windows、Linux和Ubuntu中,Samba服务成为实现这一需求的重要工具。Samba不仅为Linux和Unix系统提供了与Windows网络无缝集成的能力,还允许不同...

    虚拟机中的Linux与Windows文件共享互通--samba软件的配置借鉴.pdf

    本文主要介绍了使用Samba软件来实现虚拟机中的Linux和Windows文件共享互通的配置过程。Samba是一种网络服务器,用于Linux和Windows之间的文件共享。它可以让Linux和Windows之间实现文件共享,也可以让Linux和Linux...

    基于Linux和windows之间文件共享网络服务研究.pdf

    本文研究了基于Linux和Windows之间文件共享网络服务,解决了Linux和Windows操作系统之间文件共享的问题,提供了使用Samba服务来实现文件共享的方法。 Linux操作系统是目前最流行的开源操作系统之一,它具有高性价...

    在Windows与Linux下Samba共享文件夹以及映射的详细使用说明

    Samba 共享文件夹以及映射详细使用说明 在Windows与Linux下Samba共享文件夹以及映射的详细使用说明是指在Windows...通过Samba,可以实现Windows和Linux操作系统之间的文件共享和打印机共享,提高了工作效率和生产力。

    如何利用Samba实现Linux与Windows98的资源共享.pdf

    《如何利用Samba实现Linux与Windows 98的资源共享》 在信息技术领域,跨平台的文件和打印资源共享是一项重要的需求。特别是在Linux与Windows系统共存的环境中,Samba扮演着关键角色,使得这两种操作系统能够无缝...

    ubuntu 10.10下面添加samba实现和windows共享文件.doc

    以下是在Ubuntu 10.10中安装、配置和使用Samba以实现与Windows文件共享的详细步骤。 #### 步骤一:安装Samba 首先,确保你的Ubuntu系统已更新至最新状态。打开终端,使用以下命令来安装Samba服务: ```bash sudo ...

    linux之间资源共享,samba实现

    Samba是Linux系统下的一种文件共享服务软件,主要用于实现Linux系统与Windows系统之间的资源共享。通过Samba服务,可以在不同操作系统之间无缝传输文件和目录,同时支持网络打印功能。 #### 二、Samba的安装与配置 ...

Global site tag (gtag.js) - Google Analytics