在CentOS虚拟机上搭建一个简单的samba服务器
2018-03-16 14:16
330 查看
写点无聊的记录,可以跳过
从寒假开始频繁搞树莓派开发,到现在差不多用了两个月了,而最近才开始学习搭建服务器。本来我是觉得学东西不要从头学起,从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服务端的客户端啦
(2)创建共享文件夹
$ sudo mkdir /home/username/sambashare $ sudo chmod 777 /home/username/sambashare
777代表给所有用户
rwx权限,当然如果共享的文件只是用来执行和读就可以设置为555,可避免文件被恶意篡改。另外,分享的文件夹一定要放在
/home/username下才能访问,因为在Windows下登录samba服务器是以对应系统用户的“名义”去登录的,要是放在其它系统用户无法访问的文件夹下,对应的samba服务器用户也无法访问。
(3)配置samba的配置文件
$ sudo vim /etc/samba/smb.conf
在文件尾部填入以下内容:
[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就是第二步那个共享文件夹
(4)为当前用户设置登录密码
$ sudo touch /etc/samba/smbpasswd $ sudo smbpasswd -a username
输入两次密码后会提示“已添加用户”,用户名为(3)中填写的
valid users且必须是系统已有用户。如果要添加其他用户只要输入
sudo smbpasswd -a other_username再为新用户设置密码即可。
#其他用户管理命令 smbpasswd -d 冻结用户,就是这个用户不能在登录了 smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用 smbpasswd -n 把用户的密码设置成空.要在global中写入 null passwords -true 允许免密登录 smbpasswd -x 删除用户
3.调试
(1)启动samba服务器并本地测试#启动服务器,start的位置是一个参数,可以是restart/stop/status $ sudo systemctl start smb.service #利用客户端本地测试,localhost不用换成具体地址也行,系统会识别为本地地址 $ smbclient -L //localhost/share
注意一定要启动再访问,否则会报错
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
成功连接上本地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 --------- -------
(2)设置好selinux
$ getsebool -a | grep samba #显示出工具状态,有这一行samba_enable_home_dirs --> off,就是将它on就行了 $ setsebool -P samba_enable_home_dirs on
(3)将samba添加到防火墙列表
不太建议直接关了防火墙,毕竟要给其它主机远程共享还是。。
$ sudo firewall-cmd --list-services $ sudo firewall-cmd --permanent --add-service=samba $ sudo firewall-cmd --reload $ sudo firewall-cmd --list-services
(4)windows下测试
在同一局域网内的一台主机上打开映射王略驱动器,填入\your_ip\share,会提示输入账密登录,说明已成功映射到局域网中了。
(5)设置一下开机自启
$ systemctl enable smb.service $ systemctl restart smb.service
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地址定位网络上的这一台虚拟机并访问其贡献目录。
闲言闲语
总之,一个突发奇想,学到的东西远远超过我刚开始以为的。相关文章推荐
- 在centos 6.6 上搭建一个简单的php的开发环境
- centos 5.6 简单搭建samba服务器
- Centos搭建ceph+++一、虚拟机环境准备
- [ASP.NET 设计模式] 用Visual Studio2010搭建一个简单的分层结构示例Step by Step —— 04 数据访问层
- 使用ceph-deploy在虚拟机上搭建一个单副本ceph测试环境
- Linux上利用Nginx搭建一个简单的tomcat集群
- win7的centos虚拟机上搭建mysql5.6服务
- 12、centos6虚拟机简单安装redis-3.2.8
- 简单得不得了的教程-一步一步用 NODE.JS, EXPRESS, JADE, MONGODB 搭建一个网站
- 用虚拟机在centOS系统搭建hadoop分布式集群(updating...)
- 在RHEL或CentOS下简单的搭建LAMP环境的方法~
- xen 搭建虚拟机简单过程
- 一个简单的虚拟机
- 搭建一个简单的Python的Web环境
- 大数据平台搭建(1)虚拟机+Centos-7安装
- 虚拟机 CentOS 6.5 安装搭建 Elasticsearch 6.2.2
- 使用Node.js的express框架搭建一个简单项目并且添加了一个路由
- eclipse搭建一个简单的SSH项目
- Swift - 做一个简单的无线U盘(手机端Http服务器搭建)
- 从零开始搭建一个主流项目框架(一)—简单的框架