Window和linux使用samba实现文件共享

开发环境

开发平台:IMX6
虚拟机环境:Ubuntu16.04
Samba版本:3.4.17

目的

实现无论IMX6作为客户端还是服务端,IMX6系统下与window系统、ubuntu系统文件共享。

Samba移植

  1. 下载Samba源码,这个网上一搜大把,我用的版本是samba-3.4.17.tar.gz
  2. 把samba-3.4.17.tar.gz源码放在Ubuntu下进行交叉编译。
  3. 如下步骤:

1、解压

tar -xvf samba-3.4.17.tar.gz 

2、进入到源码中的source3目录下进行交叉编译

在编译前,需要确定交叉编译器是否设为全局环境当中。如果输入以下指令能正常输出的话,证明已经设置了。

arm-linux-gnueabihf-gcc -v
配置
./configure  --host=arm-linux-gnueabihf --disable-cups --disable-iprint --enable-static=yes --disable-shared  samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
编译
make
安装
make DESTDIR=./installDir install 

3、将编译出来的文件拷贝到开发板上

 1、可以通过U盘拷贝或者scp网络传输进行
 2、将installDir目录下的/usr拷贝到开发板的rootfs文件系统/usr上去
 3、将source3中bin目录下的一些工具也拷贝过去,如smbd,nmbd这两个守护进程拷贝到/bin下
 4、将source3/bin/libwbclient.a静态库拷贝到文件系统的/lib
 5、将source3/bin/mount.cifs拷贝到文件系统的/bin
  

4、在开发板上配置和搭建

第一种情况:开发板作为服务端server
1、创建samba的配置文件smb.conf
root@imx6dlsabresd:/# vi /etc/smb.conf
内容如下:
[global]
workgroup = root
security = user
client lanman auth = yes
lanman auth = yes
map to guest = bad user
guest account = root

[project]
comment = project
path = /home/hyb/samba
available = yes
browseable = yes
public = yes
guest ok = yes
writable = yes

开启Samba的守护进程(mnbd是Samba服务器中负责处理NetBIOS名称解析服务的守护进程,而smbd是负责处理SMB/CIFS协议请求的核心组件。它们分别提供了不同的功能和服务,但都是为了实现Samba服务器的文件共享和网络访问功能)

/bin/nmbd -s /etc/smb.conf -D
/bin/smbd -s /etc/smb.conf -D
默认的smb.conf是在/usr/local/samba/lib/路径下

通过指令ps -ef如下图即为正常启动
在这里插入图片描述
电脑端:
window+R键输入\开发板的IP地址,前提是一定window端和开发板端能够ping通
Window和linux使用samba实现文件共享_第1张图片
Window和linux使用samba实现文件共享_第2张图片
这就成功连接上了,可以在这个目录下共享文件了。

如果连接的时候报,window报以下错误的话。
Window和linux使用samba实现文件共享_第3张图片
解决方法如下:
Window和linux使用samba实现文件共享_第4张图片
配置成功后,电脑重启

第二种情况:window端为服务端,开发板为客户端
1、电脑端新建用户

Window和linux使用samba实现文件共享_第5张图片

新建共享目录

Window和linux使用samba实现文件共享_第6张图片

开发板端设置

如果在执行mount.cifs指令的时候出现如下错误:

root@imx6dlsabresd:/# /bin/mount.cifs //192.168.0.173/J  /home/hyb/dir -o username=hyb,password=123456
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

需要在kernel中支持cifs类型的文件系统。
Window和linux使用samba实现文件共享_第7张图片

root@imx6dlsabresd:/usr/local/samba/bin# /bin/mount.cifs //192.168.0.173/J  /home/hyb/dir -o username=hyb,password=123456

####如果输入df指令出现以下信息,就相当于挂载成功了
root@imx6dlsabresd:/usr/local/samba/bin# df
Filesystem        1K-blocks    Used Available Use% Mounted on
/dev/root           6779240 1224680   5187152  20% /
devtmpfs             867976       4    867972   1% /dev
tmpfs               1032536     152   1032384   1% /run
tmpfs               1032536     380   1032156   1% /var/volatile
/dev/mmcblk3p1       511720    7176    504544   2% /run/media/mmcblk3p1
//192.168.0.151/J    204796   16224    188572   8% /home/hyb/dir

扩展

在ubuntu下搭建samba环境会相对于简单一些。
apt-get下载软件包

sudo apt-get install samba samba-common
sudo apt-get install smbclient cifs-utils

在配置文件中添加如下语句
/etc/samba/smb.conf

[share]
comment = share folder
browseable = yes
path = /home/hyb/sambadir
create mask = 0700
directory mask = 0700
valid users = hyb
force user = hyb
force group = hyb
public = yes
available = yes
writable = yes

新建samba用户

sudo smbpasswd -a hyb

可以使用smbclient连接

sudo smbclient  //192.168.0.151/share -U hyb
//192.168.0.151 >>>> 服务器端的IP
share           >>>> 共享名

其他步骤就像在imx6端和window端操作一样了,就不详细写了

你可能感兴趣的:(linux日常维护,linux,运维,服务器)