Linux Ubuntu 手动搭建webDav

1、安装

因为需要跟 zotero 进行交互,因此需要在服务器搭建一个webDav
以下是搭建步骤:

sudo apt-get update 
sudo apt-get install apache2

Ubuntu 安装apache2来实现

不同于Centos

安装好了之后,运行

a2enmod dav_fs
a2enmod dav

激活模块。

2、配置ports

进入到 /etc/apache2 目录下。修改port,使得它不跟nginx起冲突

Listen 后面加上自己要自定义的接口

3、生成密码

然后我们就要生成密码了:

htpasswd -c /etc/apache2/webdav.password 你的用户名

输入密码。

4、配置要暴露的文件路径

然后进入到 /etc/apache2/sites-available 目录下。

可以选择新建一个conf文件,也可以选择修改原来的 000-default.conf

<VirtualHost *:7080>
        ServerAdmin webmaster@localhost
        DocumentRoot /home/imp/edc_demo/webdav
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        DavLockDB "/var/DavLock"
        <Directory /home/imp/edc_demo/webdav/>
		DAV On
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        Alias /webdav /home/imp/edc_demo/webdav
        <Location /webdav>
             DAV On
             AuthType Basic
             AuthName "agile"
             AuthUserFile /var/passwd.dav
             Require valid-user
        </Location>

</VirtualHost>

解释一下上面的几个参数哈。

  • <VirtualHost *:7080>:代表监听的端口,也是之后要在浏览器输入的端口,这个端口和刚刚ports.conf里配的是同一个

  • ServerAdmin webmaster@localhost:设置管理员邮箱地址。

  • DocumentRoot /home/imp/edc_demo/webdav:指定网站的根目录。

  • ErrorLog ${APACHE_LOG_DIR}/error.log:指定错误日志文件的位置。

  • CustomLog ${APACHE_LOG_DIR}/access.log combined:设置访问日志的位置和格式。

  • DavLockDB "/var/DavLock":指定 WebDAV 的锁定数据库文件位置。

  • <Directory /home/imp/edc_demo/webdav/>:配置 /home/imp/edc_demo/webdav 目录的访问权限。

    • DAV On:启用 WebDAV 功能。

    • Options Indexes MultiViews:允许目录浏览和多视图。

    • AllowOverride None:禁止使用 .htaccess 文件覆盖配置。

    • Order allow,denyallow from all:控制访问权限,允许所有客户端访问此目录。

  • Alias /webdav /home/imp/edc_demo/webdav:创建别名 /webdav,指向 /home/imp/edc_demo/webdav 目录。

  • <Location /webdav>:针对 /webdav 路径的配置。

    • DAV On:启用 WebDAV 功能。

    • AuthType Basic:启用基本身份验证。

    • AuthName "agile":设置认证提示信息。

    • AuthUserFile /var/passwd.dav:指定用户名和密码的文件。

    • Require valid-user:要求用户进行验证后才能访问 /webdav 目录。

有点多,没事,我概括一下 

把 

             AuthName "agile"
             AuthUserFile /etc/apache2/webdav.password

改成 自己的用户名,把刚才生成的password文件的位置放进来。

         Alias /webdav /home/imp/edc_demo/webdav

后面改成你要暴露的linux 文件路径地址。

5、重启apache

sudo systemctl restart apache2

6、验证一下

打开浏览器输入 http://ip:host/webdav/

输入用户名密码

6、我写了一个脚本

我写了一个脚本。这个脚本可以在你搭建好这套之后,通过传入用户名、密码,自动创建一个账号,并且在 目录下 建一个 和用户同名的 文件夹

它分成2个部分

add_user.exp

#!/usr/bin/expect
set user [lindex $argv 0]
set password [lindex $argv 1]

spawn sudo htpasswd -c /etc/apache2/webdav.password $user

expect "New password:"
send "$password\r"
expect "Re-type new password:"
send "$password\r"
interact

add_user.sh

#!/bin/bash

user=$1
password=$2

# 创建文件夹
echo "创建文件夹 /home/imp/edc_demo/webdav/$user"
mkdir -p "/home/imp/edc_demo/webdav/$user"

# 添加用户
echo "添加 $user 对应的webdav配置"
expect ./add_user.exp "$user" "$password"

# 更新配置文件
file="/etc/apache2/sites-available/000-default.conf"
if grep -q "Location /webdav/$user\b" "$file"; then
    echo "Location already exists in $file"
else
    sed -i "/<\/VirtualHost>/ i\\
\\
\t<Location /webdav/$user>\\
\t\tDAV On\\
\t\tAuthType Basic\\
\t\tAuthName \"$user\"\\
\t\tAuthUserFile /etc/apache2/webdav.password\\
\t\tRequire valid-user\\
\t</Location>\\
" "$file"

    systemctl restart apache2
fi

echo "添加用户成功!!!!"

使用的话,就是

./add_user.sh 用户名 密码

执行完这套之后,可以在浏览器里访问

http://ip:port/webdav/用户名,访问到这个用户才能访问到的文件夹。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/239005.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux shell编程学习笔记34:eval 命令

0 前言 在JavaScript语言中&#xff0c;有一个很特别的函数eval&#xff0c;eval函数可以将字符串当做 JavaScript 代码执行&#xff0c;返回表达式或值。 在Linux Shell 中也提供了内建命令eval&#xff0c;它是否具有JavaScript语言中eval函数的功能呢&#xff1f; 1 eval命…

【flink番外篇】3、fflink的source(内置、mysql、kafka、redis、clickhouse)介绍及示例(2)- 自定义、mysql

Flink 系列文章 一、Flink 专栏 Flink 专栏系统介绍某一知识点&#xff0c;并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分&#xff0c;比如术语、架构、编程模型、编程指南、基本的…

LeetCode 1631. 最小体力消耗路径:广度优先搜索BFS

【LetMeFly】1631.最小体力消耗路径&#xff1a;广度优先搜索BFS 力扣题目链接&#xff1a;https://leetcode.cn/problems/path-with-minimum-effort/ 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights &#xff0c;其中 heights[row][col] 表示格子 (ro…

Leetcode—2961.双模幂运算【中等】

2023每日刷题&#xff08;五十六&#xff09; Leetcode—2961.双模幂运算 实现代码 class Solution { public:int func(int a, int b) {int ans 1;for(int i 0; i < b; i) {ans * a;ans % 10;}return ans;}int func2(int a, int b, int m) {int ans 1;for(int i 0; i …

使用Kali Linux端口扫描

端口扫描 【实训目的】 掌握端口扫描的基本概念和端口扫描的原理&#xff0c;掌握各种类型端口扫描的方法及其区别。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”&#xff0c;使得4个系统之间能够相互通信。实…

深度学习(生成式模型)——ADM:Diffusion Models Beat GANs on Image Synthesis

文章目录 前言基础模型结构UNet结构Timestep Embedding关于为什么需要timestep embedding global attention layer 如何提升diffusion model生成图像的质量Classifier guidance实验结果 前言 在前几篇博文中&#xff0c;我们已经介绍了DDPM、DDIM、Classifier guidance等相关的…

EasyV易知微助力智慧城市未来趋势发展——数字孪生城市

“智慧城市的未来趋势就是数字孪生”——《基于数字孪生的智慧城市》 城市数字化管理、智慧城市和数字孪生城市的发展是相互促进、逐步深化的过程。 城市数字化管理作为起点&#xff0c;奠定了信息化、数据化的基础&#xff1b;而智慧城市则将数字城市管理进一步升级&#xff…

Could not resolve all dependencies for configuration ‘:app:androidApis‘.

android studio出现Could not resolve all dependencies for configuration ‘:app:androidApis’. 试过很多种方法&#xff0c;但是都不好使&#xff0c;不管怎么样都是提示如下报错&#xff1a; Using insecure protocols with repositories, without explicit opt-in, is un…

nginx配置正向代理支持https

操作系统版本&#xff1a; Alibaba Cloud Linux 3.2104 LTS 64位 nginx版本&#xff1a; nginx-1.25.3 1. 下载软件 切换目录 cd /server wget http://nginx.org/download/nginx-1.25.3.tar.gz 1.1解压 tar -zxvf nginx-1.25.3.tar.gz 1.2切换到源码所在目录…

Wireshark中的http协议包分析

Wireshark可以跟踪网络协议的通讯过程&#xff0c;本节通过http协议&#xff0c;在了解Wireshark使用的基础上&#xff0c;重温http协议的通讯过程。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于 字节流…

lwIP 细节之三:errf 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程&#xff0c;其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数&#xff0c;注册到协议栈&#xff0c;在适当的时候&#xff0c;由协议栈自动调用&#xff0c;所以称为回调。 注&#xff1a;除非特别说明&#xff0c;以下内…

评论送书:以企业架构为中心的SABOE数字化转型五环法

01 传统企业数字化转型面临诸多挑战 即将过去的2023年&#xff0c;chatGPT大模型、数据资产入表等事件的发生&#xff0c;标志着数字经济正在加速发展。数字经济是人类社会继农业经济、工业经济之后的第三种经济形态&#xff0c;将推动生产方式、生活方式和治理方式深刻变革&a…

Goby 漏洞发布| 亿赛通电子文档安全管理系统 LinkFilterService 接口权限绕过漏洞

漏洞名称&#xff1a;亿赛通电子文档安全管理系统 LinkFilterService 接口权限绕过漏洞 English Name&#xff1a;Esafenet Electronic Document Security Management System LinkFilterService API Permission Bypass Vulnerability CVSS core: 9.3 影响资产数&#xff1a;…

玩转大数据12:大数据安全与隐私保护策略

1. 引言 大数据的快速发展&#xff0c;为各行各业带来了巨大的变革&#xff0c;也带来了新的安全和隐私挑战。大数据系统通常处理大量敏感数据&#xff0c;包括个人身份信息、财务信息、健康信息等。如果这些数据被泄露或滥用&#xff0c;可能会对个人、企业和社会造成严重的损…

《opencv实用探索·十八》Camshift进行目标追踪流程

CamShift&#xff08;Continuously Adaptive Mean Shift&#xff09;是一种用于目标跟踪的方法&#xff0c;它是均值漂移&#xff08;Mean Shift&#xff09;的扩展&#xff0c;支持对目标的旋转跟踪&#xff0c;能够对目标的大小和形状进行自适应调整。 cv::CamShift和cv::me…

051:vue项目webpack打包后查看各个文件大小

第050个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

SSM与SpringBoot面试题总结

什么是spring&#xff1f;谈谈你对IOC和AOP的理解。 Spring:是一个企业级java应用框架&#xff0c;他的作用主要是简化软件的开发以及配置过程&#xff0c;简化项目部署环境。 Spring的优点: 1、Spring低侵入设计&#xff0c;对业务代码的污染非常低。 2、Spring的DI机制将…

scala编码

1、Scala高级语言 Scala简介 Scala是一门类Java的多范式语言&#xff0c;它整合了面向对象编程和函数式编程的最佳特性。具体来讲Scala运行于Java虚拟机&#xff08;JVM)之上&#xff0c;井且兼容现有的Java程序&#xff0c;同样具有跨平台、可移植性好、方便的垃圾回收等特性…

JavaWeb三大组件(Servlet程序、Filter过滤器、Listener监听器)

文章目录 一、Servlet1、Servlet概述和运行流程2、开发过程&#xff08;xml和注解方式&#xff09;3、Servlet生命周期4、Servlet继承结构4.1、Servlet规范接口4.2、ServletConfig配置接口4.3、GenericServlet抽象类4.4、HttpServlet抽象类 5、ServletConfig和ServletContext6、…

解决高风险代码:Header Manipulation

Abstract HTTP 响应头文件中包含未验证的数据会引发 cache-poisoning、 cross-site scripting、 cross-user defacement、 page hijacking、 cookie manipulation 或 open redirect Explanation 以下情况中会出现 Header Manipulation 漏洞&#xff1a; 1. 数据通过一个不可信…