首先可以查看系统是否有ftp服务
ps -e | grep vsftpd
一。 安装vsftp和db4
sudo apt-get install vsftpd
//sudo apt-get install db4.6-util(这个可以不装)
二。在根目录下新建一个文件夹并修改权限,以后我们都将文件传到这个文件夹中:
mkdir /linux (新建/forlinx作为我们的工作目录)
chmod 777 /linux
[至下一个括号为多用户配置,单用户不需要:
新建名为logins.txt的用户口令文件,
sudo gedit /etc/vsftpd/logins.txt
奇数行为用户名。偶数行为密码,如下用户User1的密码为123456,User2的密码为12345
User1
123456
User2
12345
admin
admin
三。生成vsftpd的认证文件
使用db_load命令生成认证文件:
db4.6_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
将vsftpd_login.db的权限设为只对root可读写,即600
chmod 600 /etc/vsftpd/vsftpd_login.db
四。建立虚拟用户所需的PAM配置文件
在/etc/pam.d目录中建立vsftpd.vu内容如下
sudo gedit /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
五。建立虚拟用户所需的系统用户和主目录,需要提前建好文件夹
sudo useradd jtmvi -d /www -s /bin/false
sudo chown jtmvi.jtmvi /www
sudo chown jtmvi.jtmvi /www/User1
sudo chown jtmvi.jtmvi /www/User2
sudo chmod 700 /www
]
六。设置vsftpd.conf配置文件:(记得先备份)
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_old #备份
sudo gedit /etc/vsftpd.conf
#是否允许匿名登录FTP。默认禁止。
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
# 是否允许本地用户登录。默认允许。
local_enable=YES
# 是否允许写操作(是否允许全局上传)。默认禁止。
write_enable=YES
# 是否允许匿名用户上传文件。只有在 anonymous_enable 设置成YES才能生效。
#anon_upload_enable=YES
# 切换目录时,显示目录下.message的内容。
dirmessage_enable=YES
# 如果设置成YES,vsftpd将列目录清单时使用你的本地时区。默认是GMT(格林威冶时间).
use_localtime=YES
# 是否激活上传/下载日志。
xferlog_enable=YES
# 控制端口类型数据连接是否使用服务器上的20号端口(ftp-data)。
connect_from_port_20=YES
# 如果设置为YES,本地用户将被chroot()限定在其主目录下(默认)。警告:这个选项牵连到安全性,尤其在用户拥有上传权限或者使用 shell
#权限的情况下。只有在你知道自己在做什么时才启用它。要知道这些安全相关性不是vsftpd所特有的,它们适用于所有提供chroot()限定
#本地用户机制的FTP守护进程。
#chroot_local_user=YES
# 如果激活(该选项),你应该提供一个在登录时被chroot()限定在其主目录下的本地用户列表。如果chroot_local_user选项设置为 YES,则#(该选项)意思稍微不同,在这种情况下,这个列表则变成了不受chroot()限制的用户列表。默认情况下,包含这个用户列表的文件
#是 /etc/vsftpd.chroot_list,但是你可以通过chroot_list_file选项来更改它。
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
# 该选项应该是一个空目录名。而且,ftp用户对该目录没有写权限。偶尔在vsftpd不需要访问文件系统时,该目录被用作一个安全的chroot() #jail(监狱)。
secure_chroot_dir=/var/run/vsftpd/empty
# 该字符串是vsftpd将要使用的PAM服务名。
pam_service_name=vsftpd
快速配置:
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=jtmvi
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
七 。 对不同的虚拟用户设置不同权限
sudo mkdir /etc/vsftpd_user_conf
gedit /etc/vsftpd_user_conf/User1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User1
gedit /etc/vsftpd_user_conf/User2
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User2
gedit /etc/vsftpd_user_conf/admin
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www
八。重启vsftpd
/etc/init.d/vsftpd restart
OK成功。
常见FTP命令及其功能
FTP 命令 | 功能 | FTP 命令 | 功能 |
ls | 显示服务器上的目录 | ls [remote-dir][local-file] | 显示远程目录remote-dir,并存入本地文件local-file |
get remote-file [local-file] | 从服务器下载指定文件到客户端 | mget remote-files | 下载多个远程文件(mget命令允许用通配符下载多个文件) |
put local-file [remote-file] | 从客户端上传指定文件到服务器 | mput local-file | 将多个文件上传至远程主机(mput命令允许用通配符上传多个文件) |
open | 连接FTP服务器 | mdelete [remote-file] | 删除远程主机文件 |
close | 中断与远程服务器的ftp会话(与open对应) | mkdir dir-name | 在远程主机中创建目录 |
open host[port] | 建立指定的ftp服务器连接,可指定连接端口 | newer file-name | 如果远程主机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件 |
cd directory | 改变服务器的工作目录 | rename [from][to] | 更改远程主机的文件名 |
lcd directory | 在客户端上(本地)改变工作目录 | pwd | 显示远程主机的当前工作目录 |
bye | 退出FTP命令状态 | quit | 同bye,退出ftp会话 |
ascii | 设置文件传输方式为ASCII模式 | reget remote-file [local-file] | 类似于get,但若local-file存在,则从上次传输中断处续传 |
binary | 设置文件传输方式为二进制模式 | rhelp [cmd-name] | 请求获得远程主机的帮助 |
![cmd [args]] | 在本地主机中交互shell后退回到ftp环境,如:!ls *.zip | rstatus [file-name] | 若未指定文件名,则显示远程主机的状态,否则显示文件状态 |
accout [password] | 提供登录远程系统成功后访问系统资源所需的密码 | hash | 每传输1024字节,显示一个hash符号(#) |
append local-file [remote-file] | 将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名 | restart marker | 从指定的标志marker处,重新开始get或put,如restart 130 |
bye | 退出ftp会话过程 | rmdir dir-name | 删除远程主机目录 |
case | 在使用mget命令时,将远程主机文件名中的大写转为小写字母 | size file-name | 显示远程主机文件大小,如: |
cd remote-dir | 进入远程主机目录 | status | 显示当前ftp状态 |
cdup | 进入远程主机目录的父目录 | system | 显示远程主机的操作系统 |
delete remote-file | 删除远程主机文件 | user user-name [password][account] | 向远程主机表明自己的身份,需要密码时,必须输入密码,如:user anonymous my@email |
dir [remote-dir][local-file] | 显示远程主机目录,并将结果存入本地文件 | help [cmd] | 显示ftp内部命令cmd的帮助信息,如help get |
FTP 命令 | 功能 | FTP 命令 | 功能 |
ls | 显示服务器上的目录 | ls [remote-dir][local-file] | 显示远程目录remote-dir,并存入本地文件local-file |
get remote-file [local-file] | 从服务器下载指定文件到客户端 | mget remote-files | 下载多个远程文件(mget命令允许用通配符下载多个文件) |
put local-file [remote-file] | 从客户端上传指定文件到服务器 | mput local-file | 将多个文件上传至远程主机(mput命令允许用通配符上传多个文件) |
open | 连接FTP服务器 | mdelete [remote-file] | 删除远程主机文件 |
close | 中断与远程服务器的ftp会话(与open对应) | mkdir dir-name | 在远程主机中创建目录 |
open host[port] | 建立指定的ftp服务器连接,可指定连接端口 | newer file-name | 如果远程主机中file-name的修改时间比本地硬盘同名文件的时间更近,则重传该文件 |
cd directory | 改变服务器的工作目录 | rename [from][to] | 更改远程主机的文件名 |
lcd directory | 在客户端上(本地)改变工作目录 | pwd | 显示远程主机的当前工作目录 |
bye | 退出FTP命令状态 | quit | 同bye,退出ftp会话 |
ascii | 设置文件传输方式为ASCII模式 | reget remote-file [local-file] | 类似于get,但若local-file存在,则从上次传输中断处续传 |
binary | 设置文件传输方式为二进制模式 | rhelp [cmd-name] | 请求获得远程主机的帮助 |
![cmd [args]] | 在本地主机中交互shell后退回到ftp环境,如:!ls *.zip | rstatus [file-name] | 若未指定文件名,则显示远程主机的状态,否则显示文件状态 |
accout [password] | 提供登录远程系统成功后访问系统资源所需的密码 | hash | 每传输1024字节,显示一个hash符号(#) |
append local-file [remote-file] | 将本地文件追加到远程系统主机,若未指定远程系统文件名,则使用本地文件名 | restart marker | 从指定的标志marker处,重新开始get或put,如restart 130 |
bye | 退出ftp会话过程 | rmdir dir-name | 删除远程主机目录 |
case | 在使用mget命令时,将远程主机文件名中的大写转为小写字母 | size file-name | 显示远程主机文件大小,如: |
cd remote-dir | 进入远程主机目录 | status | 显示当前ftp状态 |
cdup | 进入远程主机目录的父目录 | system | 显示远程主机的操作系统 |
delete remote-file | 删除远程主机文件 | user user-name [password][account] | 向远程主机表明自己的身份,需要密码时,必须输入密码,如:user anonymous my@email |
dir [remote-dir][local-file] | 显示远程主机目录,并将结果存入本地文件 | help [cmd] | 显示ftp内部命令cmd的帮助信息,如help get |