ubuntu22.04 Desktop SVN FTP服务器安装

时间:2025-04-10 12:28:16

操作系统
使用的是Uubntu22.04 Desktop的版本,系统安装后,默认开启了53端口和631端口

关闭udp 5353、53791端口(avahi-daemon服务)

sudo systemctl stop  
sudo systemctl disable  

关闭tcp 631端口(cups服务)

通过命令sudo systemctl list-dependencies cupssudo netstat -anulpt找到对应的服务

sudo systemctl stop    
sudo systemctl disable    

关闭tcp 53端口(systemd-resolved服务)

参考:/archives/
修改配置文件`/etc/systemd/

DNS=114.114.114.114
DNSStubListener=no

其中DNS设置最好与网络配置中的DNS一致

安装防火墙

sudo apt install ufw
sudo ufw allow 21/tcp # ftp
sudo ufw allow 22/tcp # ssh
sudo ufw allow 3690/tcp # svn
sudo ufw allow 10070:10099/tcp # ftp
sudo ufw allow 8069/tcp # odoo
sudo ufw show added # 查看已经增加的规则
sudo ufw enable
sudo ufw default deny incoming

修改配置文件/etc/default/ufw,其中IPv6=no,禁止自动添加ipv6的规则,sudo ufw reload

安装ssh服务

sudo apt install openssh-server
ssh会监听22、6010端口
修改配置文件/etc/ssh/sshd_config:

只监听ipv4:ListenAddress 0.0.0.0
关闭X11 forwarding(6010端口):X11Forwarding no

安装配置svn

sudo apt install subversion
sudo mkdir -p ~/svn/repository
svnadmin create ~/svn/repository

修改~/svn/repository/conf下的配置文件,

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

修改配置文件passwd增加用户和密码
修改配置文件authz配置用户的访问权限
运行指令svnserve -d -r ~/svn/repository,然后使用终端测试svn --username xxx ls svn://192.168.0.1/进行测试

配置开机启动,在/etc/systemd/system中创建文件

[Unit]
Description=Subversion protocol daemon
After= 

[Service]
Type=forking
#EnvironmentFile=/etc//svnserve
#ExecStart=/usr/bin/svnserve --daemon $SVNSERVE_ARGS
ExecStart=/usr/bin/svnserve -d -r ~/svn/repository
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

[Install]
WantedBy=

sudo systemctl enable svn,然后重启测试

在阿里云上开通oss存储,获得后面命令行中的参数(替换xxx的位置)
编写备份脚本

#!/bin/bash
dump_file=/home/username/svn/backup/$(date '+%Y%m%d%H%M%S').dump
svn_root=/home/username/svn/repository
svnadmin dump ${svn_root} > ${dump_file}
ossutil -e  -i xxx -k xxx cp -f ${dump_file} oss://xxx

配置脚本定时执行(每天早上1点)
sudo crontab -e

0 1 * * * /home/username/svn/

安装配置FTP

sudo apt install vsftpd db-util
sudo mkdir /ftp

修改配置文件/etc/

listen=YES # 打开IPv4的监听
listen_ipv6=NO # 关闭IPv6的监听
anonymous_enable=YES
local_enable=NO # 禁止本地账户登陆
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
# 其他参数不动,增加下面参数
anon_root=/ftp
anon_other_write_enable=YES # 允许匿名用户删除目录
anon_umask=022 # 上传的文件默认有读的权限
pasv_enable=YES # 打开被动模式
pasv_min_port=10070
pasv_max_port=10099
port_enable=YES # 打开主动模式
# use_localtime=YES # 注销这个配置,否则显示的文件修改时间不对
sudo ufw allow 10070:10099/tcp # 防火墙打开被动模式端口
sudo systemctl restart vsftpd

重要:/ftp本身不可以有写权限,但是在/ftp中创建的目录可以赋予权限777

安装Port-Knocking

apt install -y knockd
修改配置文件/etc/

[options]
      logfile = /var/log/
      interface = enp0s31f6

[SSH]
      sequence    = 7000,8000,9000
      seq_timeout = 5
      start_command = ufw allow from %IP% to any port 22
      tcpflags    = syn
      cmd_timeout   = 5
      stop_command  = ufw delete allow from %IP% to any port 22

安装第二个SVN库

参考:/witersen/SvnAdminV2.0

  • 启动一个临时的容器用于复制配置文件出来
docker run -d --name svnadmintemp --privileged witersencom/svnadmin:2.5.9 /usr/sbin/init
  • 把配置文件复制到本机的 /home/svnadmin 目录
cd /home/
docker cp svnadmintemp:/home/svnadmin ./
docker cp svnadmintemp:/etc/httpd/ ./svnadmin/
docker cp svnadmintemp:/etc/sasl2 ./svnadmin/
  • 删除掉临时容器
docker stop svnadmintemp && docker rm svnadmintemp
  • 启动正式的容器
docker run -d -p 80:80 -p 3690:3690 \
-v /home/svnadmin/:/home/svnadmin/ \
-v /home/svnadmin//:/etc/httpd// \
-v /home/svnadmin/sasl2/:/etc/sasl2/ \
--privileged \
--name svnadmin \
witersencom/svnadmin:2.5.9
  • 进入容器内进行文件授权
docker exec -it svnadmin bash
chown -R apache:apache /home/svnadmin