linux中Pure-FTPd虚拟用户管理脚本(PureDB)

《lnmp一键安装包》之前添加虚拟主机账号是保存在数据库,因此必须安装php和数据库才能正常使用,现更改为PureDB方式(不依赖php和MySQL),将用户信息保存在本地(非数据库)。但是这种方式管理ftp虚拟账号需要手工敲命令,于是写这个脚本来可视化的管理账号。

功能如下(pureftpd_vhost.sh):

1.创建账号
2.更改目录
3.更改密码
4.删除账号
5.列出所有账号
6.显示某个账号详细信息
q. 退出
如下图:

ps://blog.linuxeye.com/wp-content/uploads/2015/05/pureftpd_vhost.gif" />

代码如下:

#!/bin/bash
# Author:  yeho <lj2007331 AT gmail.com>

# Check if user is root
[ $(id -u) != "0" ] && { echo -e "\033[31mError: You must be root to run this script\033[0m"; exit 1; }
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
clear
printf "
#######################################################################
#    LNMP/LAMP/LANMP for CentOS/RadHat 5+ Debian 6+ and Ubuntu 12+    #
#                 FTP virtual user account management                 #
# For more information please visit http://blog.linuxeye.com/31.html  #
#######################################################################
"

. ./options.conf
[ ! -d "$pureftpd_install_dir" ] && { echo -e "\033[31mThe ftp server does not exist! \033[0m"; exit 1; }

FTP_conf=$pureftpd_install_dir/etc/pure-ftpd.conf
FTP_tmp_passfile=$pureftpd_install_dir/etc/pureftpd_psss.tmp
Puredbfile=$pureftpd_install_dir/etc/pureftpd.pdb
Passwdfile=$pureftpd_install_dir/etc/pureftpd.passwd
FTP_bin=$pureftpd_install_dir/bin/pure-pw
[ -z "`grep ^PureDB $FTP_conf`" ] && { echo -e "\033[31mpure-ftpd is not own password database\033[0m" ; exit 1; }

USER() {
while :
do
        echo
        read -p "Please input a username: " User
        if [ -z "$User" ]; then
                echo -e "\033[31musername can't be NULL! \033[0m"
        else
                break
        fi
done
}

PASSWORD() {
while :
do
        echo
        read -p "Please input the password: " Password
        [ -n "`echo $Password | grep '[+|&]'`" ] && { echo -e "\033[31minput error,not contain a plus sign (+) and &\033[0m"; continue; }
        if (( ${#Password} >= 5 ));then
                echo -e "${Password}\n$Password" > $FTP_tmp_passfile
                break
        else
                echo -e "\033[31mFtp password least 5 characters! \033[0m"
        fi
done
}

DIRECTORY() {
while :
do
echo
        read -p "Please input the directory(Default directory: $home_dir): " Directory
        if [ -z "$Directory" ]; then
                Directory="$home_dir"
        fi
        if [ ! -d "$Directory" ];then
                echo -e "\033[31mThe directory does not exist\033[0m"
        else
                break
        fi
done
}

while :
do
        echo
        echo -e "What Are You Doing?
\t\033[32m1\033[0m. UserAdd
\t\033[32m2\033[0m. UserMod
\t\033[32m3\033[0m. UserPasswd
\t\033[32m4\033[0m. UserDel
\t\033[32m5\033[0m. ListAllUser
\t\033[32m6\033[0m. ShowUser
\t\033[32mq\033[0m. Exit"
        read -p "Please input the correct option: " Number
        if [ "$Number" != '1' -a "$Number" != '2' -a "$Number" != '3' -a "$Number" != '4' -a "$Number" != '5' -a "$Number" != '6' -a "$Number" != 'q' ];then
                echo -e "\033[31minput error! Please only input 1 ~ 8 and q\033[0m"
        else
        case "$Number" in
        1)
                USER
                [ -e "$Passwdfile" ] && [ -n "`grep ^${User}: $Passwdfile`" ] && { echo -e "\033[31m[$User] is already existed! \033[0m"; continue; }
                PASSWORD;DIRECTORY
                $FTP_bin useradd $User -f $Passwdfile -u $run_user -g $run_user -d $Directory -m < $FTP_tmp_passfile
                $FTP_bin -f $Passwdfile -F $Puredbfile > /dev/null 2>&1
                echo "#####################################"
                echo
                echo "[$User] create successful! "
                echo
                echo "You user name is : $User"
                echo "You Password is : $Password"
                echo "You directory is : $Directory"
                echo

                ;;
        2)
                USER;DIRECTORY
                $FTP_bin usermod $User -f $Passwdfile -d $Directory -m
                $FTP_bin -f $Passwdfile -F $Puredbfile > /dev/null 2>&1
                echo "#####################################"
                echo
                echo "[$User] modify a successful! "
                echo
                echo "You user name is : $User"
                echo "You new directory is : $Directory"
                echo
                ;;
        3)
                USER
                [ -e "$Passwdfile" ] && [ -z "`grep ^${User}: $Passwdfile`" ] && { echo -e "\033[31m[$User] is not existed! \033[0m"; continue; }
                PASSWORD
                $FTP_bin passwd $User -f $Passwdfile -m < $FTP_tmp_passfile
                $FTP_bin -f $Passwdfile -F $Puredbfile > /dev/null 2>&1
                echo "#####################################"
                echo
                echo "[$User] Password changed successfully! "
                echo
                echo "You user name is : $User"
                echo "You new password is : $Password"
                echo
                ;;
        4)
                if [ ! -e "$Passwdfile" ];then
                        echo -e "\033[31mUser is not existed\033[0m"
                else
                        $FTP_bin list
                fi

                USER
                [ -e "$Passwdfile" ] && [ -z "`grep ^${User}: $Passwdfile`" ] && { echo -e "\033[31m[$User] is not existed! \033[0m"; continue; }
                $FTP_bin userdel $User -f $Passwdfile -m
                $FTP_bin -f $Passwdfile -F $Puredbfile > /dev/null 2>&1
                echo
                echo "[$User] have been deleted! "
                ;;
        5)
                if [ ! -e "$Passwdfile" ];then
                        echo -e "\033[31mUser is not existed\033[0m"
                else
                        $FTP_bin list
                fi
                ;;
        6)
                USER
                [ -e "$Passwdfile" ] && [ -z "`grep ^${User}: $Passwdfile`" ] && { echo -e "\033[31m[$User] is not existed! \033[0m"; continue; }
                $FTP_bin show $User
                ;;
        9)
                exit
                ;;
        q)
                exit
                ;;
        esac
        fi
done

时间: 2024-12-03 21:38:16

linux中Pure-FTPd虚拟用户管理脚本(PureDB)的相关文章

Linux中SFTP配置与用户管理脚本

公司需要建立一个FTP来管理客户的文件上传,为了安全性我们打算采用SFTP,并要求每个客户通过SSHKEY登陆. 或许你会说:"SFTP不需要配置啊,有SSH直接就可以用了".的确,但是我们不希望用户能够通过SSH登陆到我们的服务器上,我们希望每个客户只能通过SFTP来管理自己的文件,同时我们还想统一的来管理所有客户的目录.有了这样的需求,默认的SSH配置就不能满足了. 下面,是SFTP的配置步骤,以及我编写的一个用户管理脚本: 1.修改SFTP相关配置 $ sudo vim /etc

linux中vsftpd下虚拟用户+被动模式配置详解

下面说说在linux下部署vsftp的过程吧,小小笔记. 一.安装 这里我说下最简单的rpm包安装,因为光盘中有,何必编译呢? yum install db4* vsftpd -y 二.配置 1.新建系统用户 useradd vsftpd -s /sbin/nologin 限制vsftpd用户登录,此用户将最为vsftpd服务的宿主用户 useradd ftp -s /sbin/nologin 这里是Vsftpd虚拟宿主用户,默认情况下这个用户应该有. 当然这些用户你可以用另外的名字. 2.修改

Linux下VsFTP和ProFTP用户管理高级技巧 之一

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/217853 Linux下VsFTP和ProFTP用户管理高级技巧       FTP服务时互联网上比较古老的一种应用,至今Interner应用面非常广泛,但令管理员头痛不已的是其用户管理,既多且杂,如何解决这一问题呢?使用MySQL与ProFTP或VsFTP软件结合可以搭建一个高效.稳定且集中管理的FTP服务器.本

在Linux中添加普通新用户

  在Linux中添加普通新用户 ,超级用户(也称为"root")是一个具有修改系统中任何文件权力的特别账号.在日常工作中,最好不要使用超级用户账号进入系统,因为任何错误操作都可能导致巨大的损失.由于超级用户账号是系统建立后提供的惟一一个账号,因此,您需要建立和使用一个一般用户账号进行日常工作. 超级用户可以创建新的用户账号,下面的命令将建立一个名为joe的新用户: # adduser joe # passwd joe (键入joe的口令) Linux采用了将系统管理员和一般用户分开的

在 Linux 中为非 SSH 用户配置 SFTP 环境

在 Linux 中为非 SSH 用户配置 SFTP 环境 在某些环境中,系统管理员想要允许极少数用户在可以传输文件到Linux机器中,但是不允许使用 SSH.要实现这一目的,我们可以使用SFTP,并为其构建chroot环境. SFTP & chroot背景: SFTP是指SSH文件传输协议(SSH File Transfer protocol)或安全文件传输协议(Secure File Transfer Protocol),它提供了可信数据流下的文件访问.文件传输以及文件管理功能.当我们为SFT

linux中vsftpd虚拟用户配置脚本示例

每次新安装服务器后,都要进行一系列的配置,安装软件,修改配置等,为了今后更好的部署vsftpd,特此写了个脚本用于部署 登录FTP有三种方式,匿名登录.本地用户登录和虚拟用户登录. 匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous. 本地用户登录:使用系统用户登录,在/etc/passwd中. 虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器. FTP虚拟用户是FTP服务器的专有用户,使用虚拟用户登录FTP,只能访问FTP服务器提供的

linux中shell批量添加用户和设置随机密码脚本

有一个朋友问我如何批量创建用户和设置密码 ,我就简单给他写了两个脚本,让他自己参考下并自己根据实际情况进行修改,毕竟他需要的用户名和密码都是实际生产环境的. 这里分两种情况,一种是测试for循环批量添加用户,一个是根据实际生产环境进行批量添加.分别写一下案例如下: 1,for添加指定类型用户以及设置随机密码. 脚本作用:批量添加user1-10用户并设置随机8位数随机密码 #!/bin/bash #test add user and set passwd for n in `seq 10` do

linux系统中的列出敏感用户的脚本代码_linux shell

此处的敏感用户是指这个用户属于多个组,或者这个用户属于的组名跟这个用户名不一样 #! /bin/bash #list user who belong to more than one group #and list user who belong to the group which isn't the same as the username #w is whitelist,we will not think user in this whitelist is special or dange

iisvdir.vbs iis虚拟目录管理脚本使用介绍_vbs

IIS管理器也是通过调用iisvdir.vbs来实现虚拟目录的创建和删除的.我们可以通过命令行的方式来执行iisvdir.vbs脚本 1)创建虚拟目录: cscript c:\windows\system32\iisvdir.vbs [/s server] [/u username /p password] /create [virtualRoot] Alias PhysicalPath 2)删除虚拟目录: 1cscript c:\windows\system32\iisvdir.vbs [/s