家庭服务器构建|如何基于Linux实现文件的共享服务?

kaaye 07-12 07:01 + 关注

小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。详细活动规则,请猛戳此链接

我的第一篇原创是关于如何在Linux环境下搭建私有云(owncloud),得到了很多值友的打赏,让我也有了接下来的分享动力。跳转链接:

很显然作为家庭服务器,不仅仅是提供私有云文件服务,我们还需要在局域网内更方便的在各个设备间共享文件,比如windows桌面,比如蓝光播放器,比如从外网上传回家等等,虽然owncloud也能完成内外网的文件上传,但是毕竟不如FTP简单直接。当然,这些最基本的服务在Linux服务器下也是需要安装配置的。接下来的分享希望能给一些Linux入门值友一些帮助。

SAMBA篇

可能很多值友对SAMBA这个名称很陌生,但是我相信绝大部分值友其实都有用到。因为windows的网上邻居背后使用的就是NetBIOS和SMB协议。我这里就不科普SMB协议,SAMBA服务器和客户端这些基础名词了,您只需要知道安装好这个协议,我们的Linux服务器就可以作为一个网络共享文件夹给笔记本或者其他支持SAMBA客户端的设备提供文件服务就行了。

yum install -y samba //安装samba服务器

yum install -y samba-client //安装samba客户端 (本地测试连接用的)

备份配置文件

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

vi /etc/samba/smb.conf

直接创建一个新文件,复制以下配置信息:

[global]

workgroup =MYGROUP

netbios name =Homeserver

server string =Samba Server Version %v

log file =/var/log/samba/log.%m

max log size =50

security = user

passdb backend= smbpasswd

[Share]

comment =Public Stuff

path = /share

available = yes

writable =yes

browseable =yes

public = yes

write list =+staff

如果你要共享多个文件夹,可以按照[Share]的格式在后面继续添加即可,只需要修改path路径。

重启smb服务:

systemctl restart smb.service

smbpasswd–a root #添加SMB用户

添加一个用户添加一个用户

[root@localhost/]# smbclient -L localhost -U root 本地测试通过

家庭服务器构建|如何基于Linux实现文件的共享服务?

通过windows桌面局域网测试共享文件夹是否OK,输入账号密码,测试通过。

Win+R输入服务器IP地址Win+R输入服务器IP地址

Share共享文件夹Share共享文件夹

NFS篇

由于很多蓝光播放器都支持NFS,因此这里也把NFS共享的方法介绍一下。

(蓝光播放器在添加SAMBA服务器的时候用遥控器输入账号密码是件超级麻烦的事情,并且SAMBA传输效率不及NFS,我曾在100Mb的网络上做过蓝光原盘播放测试,SAMBA却无法达到播放原盘的要求,NFS却没有问题)

yum-y install nfs-utils rpcbind

vi/etc/exports //添加以下即可(默认192.168.2.0网段内所有IP都可以访问)

/share192.168.2.0/24(insecure,rw,sync)

启动服务

startrpcbind.service

start nfs.service

设置开机启动

chkconfigrpcbind on

chkconfignfs on

如果有蓝光播放器就直接测试搜索NFS服务器,没有的话可以在windows下安装一个NFS客户端。打开我的电脑,应该可以看到新挂载的网络驱动器。

挂载NFS网络共享硬盘挂载NFS网络共享硬盘

FTP篇

FTP服务可以很方便的在自己的设备上和家里的服务器之间做文件复制。其实现在我用的也很少了,毕竟用owncloud也能满足这种需求,只有在一些大文件复制的时候我才会用到。这个服务配置比较复杂,大家一定要注意拼写错误问题,这个问题困扰过很多次。

yum install vsftpd

开启ftp服务

systemctl start vsftpd.service

默认是允许匿名登录的,直接通过网页输入地址验证服务状态是否正常。

默认支持匿名登录默认支持匿名登录

安装超级简单,但是这个FTP允许匿名太不安全了,为了系统安全,为FTP创建虚拟用户,并指定目录。

第一步,修改/etc下的vsftpd.conf文件

先备份文件

mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

原来的文件里注释内容太多了,我们新建一个吧。

anonymous_enable=NO

local_enable=YES

write_enable=YES

local_umask=022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

anon_world_readable_only=NO

anon_mkdir_write_enable=YES

anon_upload_enable=YES

anon_other_write_enable=YES

virtual_use_local_privs=YES

guest_enable=YES

guest_username=vuser

user_sub_token=$USER

local_root=/share/ftp/$USER

chroot_local_user=YES

hide_ids=YES

allow_writeable_chroot=YES

上面加粗字体部分可以根据实际情况进行修改。

在/etc/vsftpd目录下创建一个虚拟用户密码文档

vi /etc/vsftpd/vuser.txt

奇数行为账号名,偶数行为密码,我这里只创建了一个test用户,密码password

test

password

:wq保存退出

通过db_load命令生成密码数据库

db_load -T -t hash -f /etc/vsftpd/vuser.txt/etc/vsftpd/vuser.db

chmod 600 /etc/vsftpd/vuser.db

然后txt文件就可以删除了,保留也无所谓。

修改/etc/pam.d/vsftpd文件,将原有内容注释掉,删除也行。添加最后两行

auth required /lib64/security/pam_userdb.sodb=/etc/vsftpd/vuser

account required/lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

:wq保存退出

mkdir -p /share/ftp/test //很重要,不然可能会出现登录500 OOPS报错

创建虚拟用户vuser

useradd -d /share/ftp -s /sbin/nologinvuser

忽略目录已存在的警告

为vuser添加访问权限

[root@localhost share]# chown -Rvuser:vuser /share/ftp

重启服务

systemctl restart vsftpd.service

这时候就可以通过test password登录了,创建一个文件夹测试权限。OK

测试新建文件夹测试新建文件夹

基于Linux的文件共享服务就分享到这里了,希望对大家有所帮助,谢谢!


点击继续阅读

全部评论 (44)
huzheyi
18
07-12 21:44

家庭用windows共享文件夹多省心。你这费半天劲也就开个samba服务,对于普通用户一点意义都没有,搞不好还要被selinux、权限、iptable搞死。

greslver
8
07-13 07:45

道理我都懂,为啥不用黑裙

Breezz
7
07-12 07:57

整理的很清晰,只是nfs部分的chkconfig命令少了空格,估计复制粘贴的初级用户会卡在那吧,题主辛苦了

CasparLi
1
07-18 18:31

都急于Linux了为啥不直接上openmediavault?

kaaye
1
07-18 16:47
huzheyi: 家庭用windows共享文件夹多省心。你这费半天劲也就开个samba服务,对于普通用户一点意义都没有,搞不好还要被selinux、权限、iptable搞死。 1
kaaye: linux远程管理方便很多,占用资源也少,硬件成本低,可玩性比windows高出一大截,比如owncloud在windows下就无法实现。 2
展开隐藏评论
huzheyi: 论管理,win有power shell,有rdp,对应linux的ssh,vnc,有多大差别?论资源,windows core一样可以很省资源。可玩性就更没的比了,windows下有大量多媒体应用适合家庭使用,例如kodi,powerdvd满足不同需求,完全可以用一台机器来实现。实在不够用,爱折腾的你还可以考虑,docker on Windows, wsl(windows subsystem for Linux), 甚至hyperv再虚个coreos什么的,也任君选择。还有哪些owncloud能实现而windows无法实现的?虽然我也不喜欢windows,但是一句话,家庭用,没必要。 3
kaaye: 好吧,我只需要一台低功耗的文件服务器,其他功能自然有其他设备来完成,htpc是我最早抛弃的设备,kodi那些东西一个盒子搞定的事情为什么要放到服务器上来?专业的设备做专业的事情,其实这些东西路由器都能做,但是没必要让本该做网络的设备再额外增加负担,不是吗?请两个专家比一个全才更合适。 4
huzheyi: 只是举个例子。你认为kodi放在服务器上不合适,那我认为为了存个文件折腾个owncloud不合适。windows的文件系统省心,自带的storage pool在使用、迁移和成本上也都有优势。这种小众发行版,哪天一个kernel panic,就叫你分分钟想自杀。当然如果你真的只需要一台低功耗文件服务器的话,成品nas是最好的选择,你也说了专业的设备干专业的事情。 5

的确如此,只不过NAS贵啊,这两篇原创文的诞生主要是利旧原有老旧设备省钱来的 [抠鼻]

打开App,查看更多好文和评论
猜你喜欢
编辑精选
58
723
44
你已经点过赞了
新浪微博 QQ空间 微信好友 豆瓣
当前为触屏版
热门搜索