在VMware上利用Samba实现资源共享

一、背景

FTP协议能让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件。

举个栗子:当客户端想修改服务器上的test.txt,需要先get test.txt将文件下载下来,修改后再put test.txt

有没有一种方式能使客户端直接修改服务器的test.txt并自动更新服务器的上test.txt?那就是资源共享

二、基本概念

(1)SMB协议:服务器消息协议,旨在解决局域网内的文件或打印机等资源共享的问题。

(2)Samba服务程序:是实现SMB协议的免费软件。

三、安装和配置Samba

1、安装Samba服务程序的软件包,

yum install samba

运行后见到Complete!就成功了

2.建立访问共享资源的账户信息。Samba服务程序的账户信息数据库要求账户必须在当前系统中已经存在(简单的说就是选择一个目前系统中已经有的用户作为访问共享资源的用户)

pdbedit -a -u bjy  //-a选项为建立Samba账户 -u选项为指定Smaba用户的名称为bjy,即选择bjy这个已经存在的用户作为访问共享资源的用户

执行了pdbedit指令之后会让你输入两次密码,这个密码可以与该用户之前登录linux时的相同,也可以不相同

3.创建用于共享资源的文件目录

mkdir /home/database        // database就是共享目录,里面放的文件和文件夹等资源用于共享
chown -Rf bjy:bjy /home/database         //将这个目录的用户和用户组修改为bjy用户下和bjy用户组下,这样可以使得bjy这个用户对database有读写的权限,方便后续操作
semanage fcontext -a -t samba_share_t /home/database            //因为其他主机要访问/home/database,即要访问家目录下面的的东西,增加SElinux安全上下文,允许访问的操作
restorecon -Rv /home/database           //让新的安全上下文立即生效

 4、设置SElinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录

 5.配置Samba服务程序的配置文件

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
	workgroup = MYGROUP           
	security = user
        server string = Samba Server Version %v
        log file = /var/log/samba/log.%m
        max log size=50

	passdb backend = tdbsam

	printing = cups
	printcap name = cups
	load printers = yes
	cups options = raw

[homes]
	comment = Home Directories
	valid users = %S, %D%w%S
	browseable = No
	read only = No
	inherit acls = Yes

[printers]
	comment = All Printers
	path = /var/tmp
	printable = Yes
	create mask = 0600
	browseable = No

[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	write list = @printadmin root
	force group = @printadmin
	create mask = 0664
	directory mask = 0775
[database]    //这里的database是简历的共享会话名,最好和共享文件夹同名,避免混淆
        comment= Do not arbitrarily modify the database file
        path=/home/database    //这里要按照自己的共享文件的位置进行更改
        public=no
        writable=yes

6.重启Samba服务程序并清空防火墙

systemctl restart smb      //samba服务程序在linux系统中的名字就叫smb
systemctl enable  smb
iptables -F
iptables-save > /etc/sysconfig/iptables     //这句话是为了把防火墙当前的配置保存在文件里,使配置永久生效

四、功能验证1:Windows与linux之间共享文件

1、在windows上输入\\+linux的ip地址,点打开

2、如果是第一次使用,会让你输入用户和密码,这时候就输入3.2节所创建的用于共享资源访问的用户和密码,随后可以看见共享文件database,至于为什么用户bjy的家目录也会成为共享的文件,目前不是很清楚。另外需要注意的是,如果共享会话文件夹名更改为share,只要不改变Samba配置文件中的共享会话名(见第三节),下面这个database文件夹就还是叫database,而不会变为share。

3、在bjy和database里创建和修改文件、文件夹等,在linux上也可以同步看得见。

举个栗子:在database里新建 hhh.txt,在linux里可以看到这个文件

 五、功能验证2:Linux和linux之间资源共享

因为实验环境有限,我在一个VMWare上面开了两个centos,模拟两个linux之间的共享

其中centos1 ip地址为192.168.153.129  (视为服务器)

centos2 ip地址为192.168.153.132    (视为客户端)

1、在centos2上安装支持文件共享服务的软件包cifs-utils

yum install cifs-utils

2、按照Samba服务的用户名、密码、共享域的顺序写入一个认证文件中。

vim auth.smb    //新建一个auth.smb文件

在auth.smb中写入

username=wukong     //写入的是centos2所配置的共享账户
password=123456      //如果不小心写成了centos的共享账户或者其他七七八八的账户
domain=MYGROUP       //后面挂载的时候会被samba服务器拒绝挂载

修改认证文件的权限,仅root管理员才能够读写

chmod 600 auth.smb

3、在客户端上建立共享资源的目录/database,并把服务器共享资源的目录(/home/wukongshare)挂载在/database下。通俗一点说类似于:你和同学共享一本书(共享资源),轮到你看书时,你需要把书从同学的书架(/home/wukongshare)转放在你自己的书架(/database)上,随后你才能随时查看、改写。转放的过程就是挂载。

mkdir /datatbase   //客户端创建共享目录
vim /etc/fstab//打开文件之后写入:


//192.168.153.129/wukongshare /database cifs credential=/root/auth.smb 0 0

现对写入内容的各参数进行解释:

  (1) //192.168.153.129/wukongshare 是cent0s2(服务器)的ip地址和共享会话名称,不要以为/wukongshare是共享目录的绝对路径,其实这个/只是起分割作用,wukongshare是共享会话名称,在samba.conf文件中可以查询得到(见第三节)

(2)/database 是centos1(客户端)的共享目录 也是服务器共享目录的挂载点,这里是绝对路径

(3)cifs :表明使用CIFS协议进行挂载

(4)credential=/root/auth.smb:指定用于访问远程共享的凭据文件,即使用/root/auth.smb文件中存储的凭据进行身份验证。

(5)两个0 0 是默认参数

随后,对fstab里的文件进行挂载

mount -a

4、在客户端创建文件夹kkk

在服务器的wukongshare下面能看见 kkk这个文件,同理在服务器的wukongshare下删除、创建文件时,在客户端的database里也能看见

六、思考与总结

1、挂载点问题

在第三节配置时共享文件是设置的/home/database,因为是家目录下的文件,需要考虑SElinux安全上下文的限制,在第三节配置时添加了一条安全上下文。由此,实现了linux和windows的通信。

在linux与linux之间共享资源时,客户端新建了/database文件作为共享文件,因为是在根目录下,此时没有改selinux的安全上下文。但是为什么要多此一举创建两个共享目录?能否直接将将/home/database当作挂载点?

答:亲测,可以的。先利用umount    /database   解挂载

然后在vim /etc/fstab 里把挂载点改在 /home/database上。

但是此时windows无法访问/home/database这个共享目录了,这是正常的,如果能访问那就危险了。想象,如果windows和centos1共享的文件能同时被centos2看到,那windows和centos1之间还有什么隐私可言?所以我们在设置挂载点的时候,最好不用之前的共享文件。

2.auth.smb文件里面的用户名和密码是是谁的重要吗?因为挂载后发现切换其他的用户也可以实现linux与linux之间的共享

答:重要。必须使用服务器(centos2)的账户和密码,否则挂载会失败。

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值