您的位置:首页 > 运维架构 > Linux

在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地址定位网络上的这一台虚拟机并访问其贡献目录。

闲言闲语

总之,一个突发奇想,学到的东西远远超过我刚开始以为的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: