热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Shell脚本搭建FTP服务器(vsftpd)

各种知识点都写在注释里。只需要sudo$pathftpsetup.sh即可,默认以testtest为用户名密码登录,登录后的根目录只读,子目录writable可写。ubu

各种知识点都写在注释里。

只需要 sudo $path/ftpsetup.sh即可,默认以test/test为用户名密码登录,登录后的根目录只读,子目录writable可写。

ubuntu 13和linux mint 15上测试ok。

代码如下:

#!/bin/bash
# by liuhx 2013-nov-04.
# 设置ftp环境的脚本。ftp的根目录为只读,其下的writable目录为可写

# 可自定义以下四项
# ftp用户名
username="test"
# ftp密码
password="test"
# ftp根目录,末尾不要加/
ftp_dir="$home/ftp"
# 可写目录的目录名
writable="writable"


# 如果没有加sudo,提示错误并退出
if [ "x$(id -u)" != x0 ]; then 
  echo "error: please run this script with 'sudo'." 
  exit 1
fi

# 核心工具,vsftpd。 -y是对所有提示都回答yes
sudo apt-get -y install vsftpd
# db-util是用来生成用户列表数据库的工具
sudo apt-get -y install db-util

# 以下步骤参考https://help.ubuntu.com/community/vsftpd#the_workshop
# 创建用户名和密码的数据库,以单数行为用户名,双数行为密码记录
cd /tmp
printf "$username\n$password\n" > vusers.txt
db_load -t -t hash -f vusers.txt vsftpd-virtual-user.db
sudo cp -f vsftpd-virtual-user.db /etc/
cd /etc
chmod 600 vsftpd-virtual-user.db
if [ ! -e vsftpd.conf.old ]; then
 sudo cp -f vsftpd.conf vsftpd.conf.old
fi

# 创建pam file。bash的here-document,直接输出这些内容覆盖原文件
(sudo cat <auth       required     pam_userdb.so db=/etc/vsftpd-virtual-user
account    required     pam_userdb.so db=/etc/vsftpd-virtual-user
session    required     pam_loginuid.so
eof
) > pam.d/vsftpd.virtual

# 获取当前的用户名,不能用whoami或$logname,否则得到的是root
owner=`who am i| awk '{print $1}'`

# 创建vsftpd的配置文件。
(sudo cat <listen=yes
anonymous_enable=no
local_enable=yes
virtual_use_local_privs=yes
write_enable=yes
local_umask=000
dirmessage_enable=yes
use_localtime=yes
xferlog_enable=yes
connect_from_port_20=yes
chroot_local_user=yes
hide_ids=yes
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd.virtual
guest_enable=yes
user_sub_token=$user
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
eof
) > vsftpd.conf
sudo echo "local_root=$ftp_dir" >> vsftpd.conf
# 虚拟用户需要映射为本地用户,设为自己,避免权限问题,但同时也令自己对ftp根目录不可写
sudo echo "guest_username=$owner" >> vsftpd.conf


# 设置了每个虚拟用户只可以浏览其根及子目录(否则可访问磁盘根目录),
# 这样会被要求根目录不可写,所以创建一个writable的子目录
mkdir "$ftp_dir"
mkdir "$ftp_dir/$writable"
sudo chmod a-w "$ftp_dir"
sudo chown -r $owner:$owner $ftp_dir

sudo /etc/init.d/vsftpd restart





推荐阅读
  • 阿里云服务器搭建详解——Ubuntu
    由于自己电脑配置跟不上,双系统一开,整个电脑就会变得非常卡顿,所以决定在阿里云买一个云服务器。听朋友说,学生买的话是非常便宜 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 16.04 系统上配置 Qt 5.5 的交叉编译环境,特别针对 i.MX6 平台进行了优化设置。内容涵盖从基本的软件安装到高级配置的全过程。 ... [详细]
  • 本文介绍了如何在不同操作系统上安装Git,以及一些基本和高级的Git操作,包括项目初始化、文件状态检查、版本控制、分支管理、标签处理、版本回退等,并简要提及了开源许可协议的选择。 ... [详细]
  • 本文详细介绍了在Mac平台上安装和配置MySQL的步骤,包括下载安装包、卸载MySQL以及解决命令行中找不到mysql命令的问题。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • AcetoneISO:Ubuntu Linux下的全能虚拟光驱工具
    AcetoneISO 是一款功能强大的虚拟光驱软件,适用于 Linux 和 Mac 系统。它支持多种映像文件格式的挂载和转换,并提供丰富的文件管理功能。 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上安装和配置 MySQL、Tomcat 和 JDK 的步骤。通过本文,您将了解如何顺利安装这些组件,并确保它们能够正常协同工作。 ... [详细]
  • Java中的引用类型详解
    本文详细介绍了Java中的引用类型,包括强引用、软引用、弱引用和虚引用的特点和应用场景。 ... [详细]
  • Linux bash 命令行下实现可视化文件或文件夹浏览
    Linuxbash命令行下实现可视化文件或文件夹浏览  有时候部署环境,需要配置文件路径或者载入相应的配置文件。这种情况下,如果用传统的手动修改配置的方式配置,会比较容易出意外(比 ... [详细]
  • Ubuntu 环境下配置 LAMP 服务器
    本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 本文详细介绍了如何在 Linux 系统上安装 JDK 1.8、MySQL 和 Redis,并提供了相应的环境配置和验证步骤。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • 本文介绍了 Linux 系统中用于定期执行任务的 cron 服务及其配置方法。通过 crond 和 crontab 命令,用户可以轻松地安排系统和用户级别的周期性任务。 ... [详细]
author-avatar
勇士8853
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有