在CentOS虚拟机上搭建一个简单的samba服务器

原文链接如下:https://blog.csdn.net/weixin_40156933/article/details/79487856

写点无聊的记录,可以跳过##

从寒假开始频繁搞树莓派开发,到现在差不多用了两个月了,而最近才开始学习搭建服务器。本来我是觉得学东西不要从头学起,从0学到1反而学得杂乱且漫长,所以干脆从0.5来回跳着学,就是直接做项目开始。但是!我错了!qwq好多东西还是得有基础的知识啊!
好,说回来为什么要做这个东西。前阵子晚上洗澡的时候想到一个想法:既然服务器说到底就是把资源放在网络上给别的计算机使用,既然是个Linux就能轻松搭服务器(不像以前windows还得我去搞个serv-U),既然刚好我电脑里都闲置着一个CentOS,那就直接在虚拟机上搭个服务器呗。刚好新学期开始了,社团又要开始培训了,社团祖传的服务器又坏了。。。OK,搞!马上冲出了浴室,结果发现这东西网上已经很多啦。。

正篇开始

1.材料

一个VMware虚拟机,已导入centos系统镜像构建虚拟机。

2.安装过程

(1)安装samba

$ sudo yum -y samba
#然后查看samba及其组件是否安装成功
$ rpm -qa|grep samba
#显示如下信息
samba-common-tools-4.6.2-12.el7_4.x86_64
samba-common-libs-4.6.2-12.el7_4.x86_64
samba-libs-4.6.2-12.el7_4.x86_64
samba-client-libs-4.6.2-12.el7_4.x86_64
samba-client-4.6.2-12.el7_4.x86_64
samba-common-4.6.2-12.el7_4.noarch
samba-4.6.2-12.el7_4.x86_64
#说明安装完成,samba-common包含了配置文件,samba-client就是linux下访问samba服务端的客户端啦

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

(2)创建共享文件夹

$ sudo mkdir /home/username/sambashare
$ sudo chmod 777 /home/username/sambashare

   
   
  • 1
  • 2

777代表给所有用户rwx权限,当然如果共享的文件只是用来执行和读就可以设置为555,可避免文件被恶意篡改。另外,分享的文件夹一定要放在/home/username下才能访问,因为在Windows下登录samba服务器是以对应系统用户的“名义”去登录的,要是放在其它系统用户无法访问的文件夹下,对应的samba服务器用户也无法访问。
(3)配置samba的配置文件

$ sudo vim /etc/samba/smb.conf

   
   
  • 1

在文件尾部填入以下内容:

[share]
	path = /home/username/smbshare
	public = Yes
	writable = Yes
	valid users = username
	create mask = 0644
	force create mode = 0644
	directory mask = 0755
	force directory mode = 0755
	available = Yes
#share这个名字是可以改的,就是你到时访问的文件夹名,path就是第二步那个共享文件夹

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

(4)为当前用户设置登录密码

$ sudo touch /etc/samba/smbpasswd
$ sudo smbpasswd -a username

   
   
  • 1
  • 2

输入两次密码后会提示“已添加用户”,用户名为(3)中填写的valid users 且必须是系统已有用户。如果要添加其他用户只要输入sudo smbpasswd -a other_username 再为新用户设置密码即可。

#其他用户管理命令
smbpasswd -d 冻结用户,就是这个用户不能在登录了 
smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用 
smbpasswd -n 把用户的密码设置成空.要在global中写入 null passwords -true 允许免密登录
smbpasswd -x 删除用户

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
3.调试

(1)启动samba服务器并本地测试

#启动服务器,start的位置是一个参数,可以是restart/stop/status
$ sudo systemctl start smb.service
#利用客户端本地测试,localhost不用换成具体地址也行,系统会识别为本地地址
$ smbclient -L //localhost/share

   
   
  • 1
  • 2
  • 3
  • 4

注意一定要启动再访问,否则会报错Connection to localhost failed (Error NT_STATUS_CONNECTION_REFUSED)
启动成功的显示是这样的:

Redirecting to /bin/systemctl status smb.service
● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-03-08 14:07:22 CST; 4min 35s ago
 Main PID: 7329 (smbd)
   Status: "smbd: ready to serve connections..."
   CGroup: /system.slice/smb.service
           ├─7329 /usr/sbin/smbd
           ├─7330 /usr/sbin/smbd
           ├─7331 /usr/sbin/smbd
           └─7334 /usr/sbin/smbd

Mar 08 14:07:17 localhost.localdomain systemd[1]: Starting Samba SMB Daemon…
Mar 08 14:07:22 localhost.localdomain smbd[7329]: [2018/03/08 14:07:22.202527, 0] …/lib/util/become_daemon.c:124(daemon_ready)
Mar 08 14:07:22 localhost.localdomain systemd[1]: Started Samba SMB Daemon.
Mar 08 14:07:22 localhost.localdomain smbd[7329]: STATUS=daemon ‘smbd’ finished starting up and ready to serve connections

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

成功连接上本地samba服务器,会提示输入密码,之后显示samba服务器状态(也可通过命令$ systemctl status smb.service 查看状态):

Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]
Sharename       Type      Comment
---------       ----      -------
print$          Disk      Printer Drivers
share           Disk      
IPC$            IPC       IPC Service (Samba 4.6.2)
1234aa4321      Disk      Home Directories

Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]

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

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(2)设置好selinux

$ getsebool -a | grep samba
#显示出工具状态,有这一行samba_enable_home_dirs --> off,就是将它on就行了
$ setsebool -P samba_enable_home_dirs on

 
 
  • 1
  • 2
  • 3

(3)将samba添加到防火墙列表
不太建议直接关了防火墙,毕竟要给其它主机远程共享还是。。

$ sudo firewall-cmd --list-services
$ sudo firewall-cmd --permanent --add-service=samba
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-services

 
 
  • 1
  • 2
  • 3
  • 4

(4)windows下测试
在同一局域网内的一台主机上打开映射王略驱动器,填入\your_ip\share,会提示输入账密登录,说明已成功映射到局域网中了。
(5)设置一下开机自启

$ systemctl enable smb.service
$ systemctl restart smb.service

 
 
  • 1
  • 2
4.网络设置####

完成上一步的本次测试后,接下来进行Windows下的测试时一般会遇到一个问题,在本机Windows上测试没问题,但在局域网内其它主机上测试失败,这是因为虚拟机的网络配置没做好。
(1)公有地址和私有地址
在网际协议IPV4中,公有地址分配给注册并向Inter NIC提出申请的组织机构,通过这个地址可以直接访问因特网;而私有地址属于非注册地址,分配给组织内部机构使用,这一类地址不能直接访问英特网,必须将此私有地址转换为局域网对外的同一的公有地址,这个过程叫Network Address Translation,也就是NAT,一般由路由器完成这个过程。所有私有地址:
A类:10.0.0.0–10.255.255.255
B类:172.16.0.0–172.31.255.255
C类:192.168.0.0–192.168.255.255
像笔者电脑如果在实验室直接连接深大校园网,分配的ip就是172.31.100.172,而在宿舍连接,分配的ip就是172.30.65.131,这说明深大的校园网是通过B类网络的方式将路由器部署在校园各个区域的。而当笔者使用小米路由器时,手机和树莓派分配到的ip一般是192.169.xxx.xxx,这说明我买的路由器是C类。
(2)VMware虚拟机的两种网络模式
虚拟机有两种常见的网络连接模式,一种是NAT模式,一般虚拟机分配到的ip是192.168.xxx.xxx这种的,这个地址是主机内部局域网的私有地址,而主机与虚拟机对外访问的地址则是主机在校园网或者因特网。另一种模式是桥接模式,即将虚拟机直接连接物理网络,在主机所在的局域网内为虚拟机分配一个ip。两种模式各有各的好处,NAT模式由于对外访问的ip是主机ip,所以两者共享同一网络共同访问因特网,而桥接模式就是两台校园网或者因特网内的独立主机,网络状况互无关系。
(3)所以当虚拟机的地址是主机内部局域网的192.168.xxx.xxx这种私有地址,那么主机外局域网上的其它主机肯定无法识别这个地址,需要将虚拟机改为桥接模式,将虚拟机连接到外部局域网上并获取ip,其它主机才能通过这个ip地址定位网络上的这一台虚拟机并访问其贡献目录。

闲言闲语

总之,一个突发奇想,学到的东西远远超过我刚开始以为的。

        </div>
					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-2011a91181.css" rel="stylesheet">
            </div>

**

  • 另外在标注几句:
    1.(4)第二行代码里面的username不是用username去敲,而是你的当前登录用户。 3.(1)第二行代码里面的share,就是你之前共享的文件夹。若当时取名不叫share,此处当然也不叫share。(其余文章都写得挺好的,按照文章一步一步都实现出来了,非常感谢原作者)

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值