centos文件共享samba服务和virtualBox共享文件


文件共享

windows系统做开发真是有诸多不便,特别是做前端开发。为啥呢么呢?比如我们使用npm管理依赖,依赖其它一些模块,而其他的模块并没有在windows系统做过全面的测试,难免有很多bug,常见的如路径问题,编码问题,权限问题等等。关键要命的是没有错误信息,仅仅抛了异常,这可怎么办,头疼,解决起来费时间。比如我们现在用puer组件mock前端ftl数据,这个在window下就有很多问题。索性我就安装了虚拟机,在centos中搭建编译开发环境,然后和windows宿主机共享文件目录,在windows下开发,然后在centos中编译,mock数据调试。

centos文件共享samba服务和virtualBox共享文件

安装samba服务相关包

1
2
3
4
5
6
7
yum install samba samba-client samba-common
查看相关包
~#: rpm -qa| grep samba
samba-common-4.1.1-37.el7_0.x86_64
samba-4.1.1-37.el7_0.x86_64
samba-libs-4.1.1-37.el7_0.x86_64
samba-client-4.1.1-37.el7_0.x86_64
  1. 修改smb.conf,最好先备份原文件,以防修改不正确导致smb无法执行
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    vi /etc/samba/smb.conf
    -----------------------------------
    [global]
    workgroup = WORKGROUP
    server string = Samba Server %v
    netbios name = centos
    security = user
    map to guest = bad user
    dns proxy = no
    #============================ Share Definitions ==============================
    [Anonymous]
    path = /samba/anonymous
    browsable =yes
    writable = yes
    guest ok = yes
    read only = no

2.执行以下命令,启动samba服务

1
2
3
4
5
mkdir -p /samba/anonymous
systemctl enable smb.service
systemctl enable nmb.service
systemctl restart smb.service
systemctl restart nmb.service

3.跳过防火墙
一种方法是关闭防火墙

1
2
systemctl stop firewalld.service
setenforce 0

二方法是添加规则

1
2
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload

输入/ip 即可看到共享文件了

samba基础知识

1.工作端口
UDP协议端口:137,138
tcp协议端口:139,445

2.软件包
samba samba-client.x86_64 samba-common

3.启动服务
service smb restart

4.配置文件

[global]—全局设置

A.
security:share/user/server/domain
share:不需要用户名和密码,匿名登录
user:需用户名和密码
server: 用户名和密码在指定的一台samba上验证,验证错误,客户端会用user级别访问
domain:服务器加入window域环境,验证工作由windows域控制器负责。
ads:使用ads安全级别加入到windows域环境中,包含有domain级别中的所有功能,可以具备域控制器的功能。
B.

1
2
config file = /etc/samba/smb.conf.%U
#%U是变量,指代登录用户名

[说明]
security设为user时,samba服务器必须创建一些用户名和密码供客户端登录使用,这些帐号必须是linux系统中存在的用户,当用户登录时,其在共享文件夹里的权限是其所用帐号在samba所在linux中的权限

1
2
3
4
5
6
7
8
9
[share_config]---共享目录设置
[public] ---共享目录名称 //10.10.54.226/public
comment = Public Stuff ---标识
path = /home/samba ---服务器端共享目录的存储路径(要有权限)
writable = yes ---是否具有写入权限
read only = yes ---只读权限
browseable = no ---共享目录是否可见(no为隐藏,yes可见)
guest ok = yes ---匿名用户是否可以访问
write list = +staff ---指定那些用户或者用户组可以写入

samba测试工具

1:pdbedit:管理samba 用户数据库的一个工具
pdbedit -a -u username 增加一个samba用户
pdbedit -x samba_user 删除用户
pdbedit 查看创建的samba用户

2.工具2:samba测试命令
smbstatus -pS -u username
smbclient -L 10.10.54.150 #查看后面所接主机上提供的共享资源
smbclient -L 10.10.54.150 -Uboss#以帐号boss访问主机上的资源
smbclient //10.10.54.150/centos -Uboss%boss1 #类似ftp的登录,直接操作服务器共享文件夹
mount -t cifs //10.10.54.150/centos /mnt/smb -o username=boss,password=boss1 #挂载

示例

建立共享目录为softs,安全级别为share,只允许10.10.54.0/24网段访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1.一下题目中,环境都是:
samba服务器:10.10.54.150---centos6.4
客户机:10.10.54.158----ubuntu13
2.配置文件
----------------------
shell> vim /etc/samba/smb.conf
[global]
security = share
hosts allow = 10.10.54.0/24
[softs]
comment = public
path = /home/softs
writeable = no
browseable = yes
---------------------

注意: 在新的版本中,比如centos7 , security = share 是禁用的。security=share is deprecated
解决方法:

1
2
3
[global]
security = user
map to guest = Bad User

Let’s take as an example a Windows client. The same thing will happen with a Linux client but you have to go out of your way to make that happen in Linux. In Windows the client’s username and password is automatically sent when it browses for shares – this is done without the user’s knowledge. That forces Samba to deal with the sent credentials even though it’s a guest share that requires no authentication.

When that username is passed Samba will search through it’s password database for that user:

  • If there is no match to the username the client user is tagged a “Bad User” and converted ( mapped ) to the guest account which by default is “nobody”.

  • If it finds a match to the username and there is a samba password that matches the one sent by the Windows client then the Windows user automatically gains access although not as an anonymous user which is why you needed to add “force user = nobody” to your share definition.

  • If it finds a match to the username but the samba password does not match exactly the password that’s automatically sent by the Windows client then you will be prompted for a password – even for a guest share.

If all you have is that one guest share then check the samba password database:

1
sudo pdbedit -w -L

If you have an entry for that remote user either make sure the samba password matches the remote users password exactly or simply remove the samba user from the database:

1
sudo smbpasswd -x user-name

共享文件

共享文件是为了能够在windows下开发,在centos虚拟机里面编译、mock数据,然后在windows浏览器里面测试。有两种方式:

  1. windows共享文件给linux,这个只要在windows的文件夹开启共享,保证在一个网段、一个域或工作组就可以
  2. centos虚拟机共享文件给windows文件夹。采用centos的samba服务。但是配置samba服务的时候,要考虑windows系统的域。

由于公司电脑都是加域的,所以配置起来很麻烦。我配置了几种方式貌似都不行。等我配好了,再贴出来。
这里采用的方法是采用虚拟机的共享文件的方法。直接在虚拟机里面添加共享文件目录,采用自动挂载的方式。这样也完美解决,共享windows的开发文件夹到虚拟机,虚拟机里面通过git操作拉代码,提交代码。windows下面用IDE开发就行了。

致我以前在window下浪费的调试时间!!!以后只需要带着虚拟机就可以了,编译环境都是弄好的,挂载目录就可以干活了。
ps: 需要有个注意的点,一定要注意。哪边共享的目录哪边用git。否则挂载一次,就会导致所有文件都变成脏文件,会出现很多冲突!

谢谢!

转载请注明出处:http://www.fed123.com/2016/03/28/2016_centos_samba/
欢迎关注皓眸学问公众号(扫描左侧二维码),每天好文、新技术!任何学习疑问或者工作问题都可以给我留言、互动。T_T 皓眸大前端开发学习 T_T

未经允许不得转载:皓眸大前端 » centos文件共享samba服务和virtualBox共享文件

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址