linux 安装多用户vsftpd服务

1、安装多用户vsftpd服务

安装环境:centos 6.9
yum install vsftpd -y
cat /etc/vsftpd/vsftpd.conf

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf

2、创建一个普通的系统用户:

useradd -s /sbin/nologin virftp  #指定用户的shell为nologin,不允许登录  

3、创建虚拟ftp用户配置文件:

vim /etc/vsftpd/vsftpd_login    
ty         #奇数行  写用户名  
123        #偶数行  写密码  
test2      #多个用户就写多组,中间不能有空行和空格  
456  

4、更改权限:

chmod 600 /etc/vsftpd/vsftpd_login

5、将文本文件转换成二进制文件:

db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db 

6、创建虚拟用户的配置文件目录:

mkdir /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
#创建虚拟用户的配置文件:
vim ty  #此处的文件名必须和/etc/vsftpd/vsftpd_login文件里的用户名一致。

#加入以下配置文件内容
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600 
data_connection_timeout=120
max_clients=10 
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
local_root=/data/ftpdata/ty/

7、创建虚拟ftp用户的家目录,并创建测试文件

mkdir /data/ftpdata/ty/
echo "test ty" >/data/ftpdata/ty/test.txt

8、级联更改系统用户virftp家目录的属主属组

chown -R virftp:virftp  /data/ftpdata/ty/

9、定义用户验证文件路径

vim /etc/pam.d/vsftpd    编辑ftp的用户认证文件
session    optional     pam_keyinit.so    force revoke
session    required     pam_loginuid.so
session    include      password-auth
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login    #指定密码验证形式为文件形式,并指定路径路径
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login #指定账户存储形式为文件,并指定账户存储文件路径

10、启动vsftpd服务

/etc/init.d/vsftpd start 

11、filezilla客户端连接登陆测试

12、附上部分管理脚本

#!/bin/bash
#-------------------------------------------
#Author:holger	   
#Date:2019-09      
#Describe:用于创建ftp账户
#Version: V1.0 
#	  根据不同的项目创建单独的FTP账号、权限
#
#Version: V2.0 
#	  1、根据不同的用户创建不同的账号、权限
#	  2、多个用户共同管理一个项目
#     3、一个用户负责多个项目
#-------------------------------------------
Printf(){
	color=${1:-31}
	content=$2
	echo -e "\e[${color}m$content\e[0m"
}
Help(){
	Printf "32" "\n\tusage: sh $0 add|del \$username \$permission"
	Printf "32" "\n\tExamples:"
	Printf "32" "\t\tsh $0 add testftp r   #只读权限"
	Printf "32" "\t\tsh $0 add testftp rw  #读写权限"
	Printf "32" "\t\tsh $0 del testftp     #删除用户\n"
}
User_add(){
	#Username=$1
	case $Permission in
	r)
		Per=NO
	;;
	rw)
		Per=YES
	;;
	*)
		Printf "31" "Error: permission should be 'r'(read) or 'rw'(read and write) "
		Printf "31" "Error: please try again"
		Help
		exit
	esac
	tmpPassword=`openssl rand -base64 12`
	Password=${Username}@${tmpPassword}
	user_config=/etc/vsftpd/vsftpd_login
	grep -wq $Username $user_config >/dev/null
	[ $? -eq 0 ]&&{ Printf "" "Error: user $Username aready exist";exit; }||{ Printf "32" "add"; }
	echo -e "$Username\n$Password" >>/etc/vsftpd/vsftpd_login
	db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db 
	cat > /etc/vsftpd/vsftpd_user_conf/$Username <<EOF
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600 
data_connection_timeout=120
max_clients=10 
anonymous_enable=NO
local_enable=YES
write_enable=$Per
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_local_user=YES
local_root=/data/ftpdata/$Username/
EOF
	
	mkdir /data/ftpdata/$Username/package -p 
	echo "welcome $Username" >/data/ftpdata/$Username/test.txt
	chown -R virftp:virftp	/data/ftpdata/$Username
	echo -e "user: \e[32;1m$Username\e[0m  Password: \e[32;1m$Password\e[0m"	
}
main(){
	if [ $# -lt 3 ];then
		Help
		exit
	fi
	action=$1
	Username=$2
	Permission=$3
	case $action in
	add)
		User_add $Username $Permission
		if [ $? -ne 0 ];then
			Printf "" "add user $Username Failed"
			exit
		else
			Printf "32" "add user $Username success"
		fi
	;;
	del)
		echo "delete $Username ?"
		read -p "Please enter yes/no: " choice
		[[ -d /data/ftpdata/$Username && -f /etc/vsftpd/vsftpd_user_conf/$Username  ]]||{ Printf "" "Error: user $Username not exist";exit; }
		case $choice in
		[Yy][Ee][Ss])
			rm /data/ftpdata/$Username -fr
			rm /etc/vsftpd/vsftpd_user_conf/$Username -f
			sed -i "/$Username\$/d" /etc/vsftpd/vsftpd_login
			sed -i "/$Username@/d" /etc/vsftpd/vsftpd_login
		;;
		*)
			Printf "" "Error: wrong choice,delete failed"
			exit
		esac
	;;
	*)
		echo "wrong args"
		exit
	esac
	/etc/init.d/vsftpd restart
}
main $*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值