• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Shell脚本搭建FTP服务器(vsftpd)

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

    只需要 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 EOF
    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 EOF
    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

    您可能感兴趣的文章:
    • 安全的FTP服务器 vsftpd简介
    • vsFTPd 服务器初学者指南
    • VSFTP 两招帮你提高FTP服务器的安全性
    • 全面提高WindowsFTP服务器的安全性能
    • FTP与SFTP的区别 知多少
    上一篇:Ubuntu下定时提交代码到SVN服务器的Shell脚本分享
    下一篇:实现android自动化测试部署与运行Shell脚本分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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