step 1:搭建好vsftp后,/etc目录下手动添加3个文件,内容暂时为空:
vsftpd.user_listftpusers:这个文件已经存在,不用手动添加
vsftpd.chroot_list
step 2:配置vsftpd.conf文件
listen=NO采用super damon模式anonymous_enable=YES允许匿名登陆
local_enable=YES本地用户可登陆
write_enable=YES本地用户有写权限
local_umask=022
anon_upload_enable=YES匿名用户有上传权限
dirmessage_enable=YESftp用户登陆时显示在登陆目录中.message文件中的内容
use_localtime=YES
xferlog_enable=YES动态记录上传下载的信息
connect_from_port_20=YES端口设置为20
chown_uploads=YES
chown_username=root
idle_session_timeout=600监听600秒没有响应就提出服务器
data_connection_timeout=600连接服务器后,数据多长时间不能传入就断开服务
nopriv_user=nobody
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd意思是:vsftpd运行的目录
pam_service_name=vsftpd加密(pam)传输模式,在目录/etc/pam.d/vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
connect_timeout=60
accept_timeout=60
max_clients=200
max_per_ip=8
pasv_min_port=0
pasv_max_port=0
local_max_rate=0
tcp_wrappers=YES
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list
step 3:在vsftpd.user_list这个文件中添加如下内容:
# vsftpd userlist# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES(default), never allow users in this file,and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
news
uucp
operator
games
nobody
ftp
这时可以察看一下ftpusers文件中的内容,要把你想允许访问的用户删掉或注释掉。如果你想让某个用户登陆就可以把它添加到vsftpd.user_list中。
step 4:选择super daemon模式:listen=NO,并安装xinetd:sudo apt-get install xinetd,并将如下内容添加到/etc/xinetd.conf中,此文件为自己创建
serivice ftp{
ssocket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}
然后停止vsftpd,启动xinetd:
sudo service vsftpd stop
sudo service xinetd start
sudo netstat -npltu | grep 21
step 5:为ftp服务器创建用户,但是禁止ftp用户登陆系统,因此设置ftp用户的shell为nologin,由于ubuntu中的nologin不再/etc/shells中,所以先输入which nologin找到nologin的位置在:/usr/sbin/nologin.在将此地址添加到/etc/shells文件中,创建用户过程如下:
sudo useradd -d /home/ftp/$1 -s /bin/false $1#下行为自动获取密码
echo -e "$2\n$2" | passwd $1
#下行为改变用户模式,取消他对系统的登陆权限
usermod -s /usr/sbin/nologin $1
step 6:最后将新创建的用户加入到/etc/vsftpd.user_list中,再重启服务器
sudo service xinetd restart
step 6:ftp IP登陆vsftpd服务器了
下面为自动添加用户的脚本:register.sh#!/bin/bash
# Check if /home/ftp is exited,and
# if not,then create the dir:/home/ftp
echo "step 1:检查目录/home/ftp是否存在,如果不存在就创建该目录"
if [ ! -d /home/ftp ]
then
mkdir /home/ftp
fi
# check if user is exited,and if exited then exit,and
# if not,then create dir:/home/ftp/$1
echo "step 2:检查所要创建的用户是否存在,若不存在就创建用户并创建该用户目录"
if [ ! -d /home/ftp/$1 ]
then
mkdir /home/ftp/$1
echo "目录/home/ftp/$1创建成功!!"
else
echo "目录/home/ftp/$1已经存在"
exit 1
fi
chmod 755 /home/ftp/$1
#write some information into .message to show
echo "欢迎使用ftp服务,本目录为/home/ftp/$1" > /home/ftp/$1/.message
sudo useradd -d /home/ftp/$1 -s /bin/false $1
echo -e "$2\n$2" | passwd $1
echo "创建ftp用户成功"
# write a new user into /etc/vsftpd.user_list
echo "step 3:改变用户登陆模式"
sudo usermod -s /usr/sbin/nologin $1
echo "step 4:将新添加的用户添加到/etc/vsftpd.user_list,赋予新用户权限"
sudo echo $1 >> /etc/vsftpd.user_list
echo "step 5:重启ftp服务器,此服务器为super demon模式,守护进程xinetd"
sudo service xinetd restart
运行脚本时,注意更改权限:sudo chmod 777 register.sh
运行方式:sudo ./register.sh ftp1 111 (ftp1为用户名,111为密码)