linux使用ghfs搭建http文件共享服务器,权限和目录控制

1、背景

有一个内网服务器,需要多人共享文件。不同人账户不同,目录不同。所以就要有权限控制。服务器还是纯内网,不能联网,也不可以联网,所以就需要依赖的库少,一个包搞定的。

几番搜索找到了ghfs,即go http file server
使用go语言编写的,可以自己编译,也可以直接下载安装包,直接运行安装包就可以使用了。非常简单。

2、下载安装包

ghfs源码地址:
github直达

安装包下载直达:
安装包下载

我下载的是linux版本
download

3、安装运行

我下载的ghfs是linux的二进制可执行文件,不需要安装,直接运行即可

./ghfs

运行

启动后,页面无法访问的问题:

1、首先确认地址:http://ip
例如:http://192.168.1.25

2、防火墙问题:
//linux查看防火墙是否开启
systemctl status firewalld

//关闭防火墙
systemctl stop firewalld

//或者放行80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent

//放行成功后,记得重启防火墙
systemctl restart firewalld

运行后,浏览器直接访问ip地址,默认是80端口。就可看到当前目录的文件。默认是匿名访问

成功

此时还不能上传文件。启动时指定目录和用户即可。继续往下看

4、启动配置文件

下面我配置了一个根目录,多用户,除admin外,其他用户只能访问自己的目录。并且都具有删除和打包下载的功能。并且隐藏以 . 开头的文件,就是不展示隐藏的文件

注意:不同的用户访问时,需要在http链接后跟上自己的目录,不然登录会失败:如:u1的用户目录是hnzzdx,则url为:http:ip/hnzzdx

config

在ghfs文件的目录中,新建ghfs.conf,把以下内容粘贴进去

-r /var/www/fileserver 
--upload-dir /var/www/fileserver
--user admin:ad123456 user1:u1pwd1 user2:u2pwd user3:u3pwd
--auth-user :/:admin
--auth-user :/hnzzdx:u1
--auth-user :/hbsjzdx:u2
--auth-user :/bjdx:u3
--global-delete
-H '.*'
-A

启动时指定配置文件

./ghfs --config ghfs.conf

run

5、运行效果

访问某目录

登录后,目前暂不支持退出
ghfs登录后

delete

6、将ghfs添加到系统的systemd的服务中,就可以通过systemctl管理服务了

参考文章
https://blog.csdn.net/weixin_44663564/article/details/144192854

首先进入 /etc/systemd/system/

cd /etc/systemd/system/

新建ghfs.service文件

sudo vi ghfs.service

填写如下内容,ExecStart中将ghfs的路径替换为你自己的

[Unit]
Description=ghfs http file server service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/fileserver/ghfs --config /usr/local/bin/fileserver/ghfs.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

接下来重加载systemd配置

sudo systemctl daemon-reload

启动ghfs.service

systemctl start ghfs.service

ghfs.service

至此,一个内网服务器就搞定了

微信打赏

意外收获认可,内心充满感激;打赏之举,更添无限动力。