Linux环境下FTP服务器的部署
2016-03-20 15:22
621 查看
关于FTP的基础知识请参考博文:[http://blog.csdn.net/beginner_yao/article/details/50936255 ]
[root@server ~] # yum -y install vsftpd
客户端安装FTP登陆工具:
[root@client ~] # yun -y install ftp
进程名: vsftp
在服务器端查看端口使用状态:
[root@server ~] # netstat -anptu | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1943/vsftpd
[root@client ~] # ftp ftp.beginner.net.cn
Connected to ftp.beginner.net.cn (121.42.192.217).
220 (vsFTPd 3.0.2)
Name (beginner.net.cn:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
使用匿名用户登陆,用户名是“ftp”或者“anonymous“,密码不用输入,直接回车就可以进入。
上传:
ftp> put file
批量上传:
ftp> mput file1 file2
注:file是在登陆前所在目录内的文件
下载:
ftp> get file
批量下载:
ftp> mget file1 file2
使用工具下载文件(不需要登陆):
[root@client ~] # wget ftp://ftp.beginner.net.cn/pub/filename
注:file是当前所在服务器的目录内的文件,下载到登陆前所在的目录
浏览及下载/上传:
匿名访问
ftp://ftp.beginner.net.cn
[root@client ~] # wget ftp://ftp.beginner.net.cn/path/to/file
用户验证访问
ftp://username:password@ftp.beginner.net.cn
[root@client ~] # wget ftp://username:password@ftp.beginner.net.cn/path/to/file
为了方便下载和上传,使用lcd可以切换在本地的工作目录。使用 !ls 可以查看本地当前目录下的文件
ftp> lcd /data
Local directory now /data
ftp> !ls
images linux-2.6.32.3.tar.gz lost+found repodata rpms software tars
黑名单:/etc/vsftpd/ftpusers
黑白名单:/etc/vsftpd/user_list
黑名单,黑白名单内容格式:一行一个账户名称
注意:设置白名单后,仅明确在白名单内的人才可以访问FTP,其他人均无法访问FTP。
以anon开始的选项,都是对匿名账户设置的;以local开始的选项,都是对本地账户设置的
anonymous_enable=YES
//是否开启匿名共享
local_enable=YES
//是否开启本地账户共享
注意:两个都是YES的时候,匿名共享的优先级高,开启本地共享的时候,必须要把匿名共享给关闭
write_enable=YES
//本地账户共享是否可写(上传文件)
anon_upload_enable=YES
//匿名账户是否可写(上传文件)
anon_mkdir_write_enable=YES
//匿名账户是否可写(上传目录和创建目录)
anon_others_write_enable=YES
//匿名账户是否可以删除目录和文件和重命名(默认不存在,要自己添加)
注意:如果这三个选项都是YES,就是对匿名用户的最大权限的设置。
anon_root=/var/ftp
//定义的匿名的根目录,默认为/var/ftp(不建议更改)
local_root=/home/$USER
//定义本地账户的根目录,默认为本地账户的家目录(不建议更改)
chroot_local_user=YES
//禁锢所有的本地账户。
禁锢的作用:将用户禁锢在一个特定的目录下,无法出去。这时候,这个特定的目录,就是用户使用FTP登录的时候的根目录。没有禁锢的情况下,使用本地用户进行FTP访问,可以查看服务器的所有目录和文件。使用账户禁锢后,本地账户的FTP默认的共享路径为自己的家目录.
chroot_list_enable=YES
//是否启用禁锢账户列表
chroot_list_file=/etc/vsftpd/chroot_list
//禁锢账户列表
这两个要连着使用,如果启用了禁锢账户列表,则只有列表里的用户可以随意切换目录。默认是不启动的。禁锢账户列表文件需要自己创建,一行一个账户。
listen=YES
//是否监听端口,一定要开,如果不开的话就无法建立FTP连接
userlist_enable=YES
//是否使用user_list文件
userlist_deny=NO
//必须和上面的配合一起用,决定user_list文件是否是黑名单。 NO为白名单,YES为黑名单。默认为YES。在/etc/vsftpd/user_list文件内的开头注释里有说明。
FTP性能的限制(需要自己手打):
max_clients=number
//限制同时并发访问FTP服务器的客户端的数量
max_per_ip=number
//限制每个客户端的IP并发链接数量(同一个IP,同时使用多个工具访问FTP服务器的数量)。即多线程,可以增加传输速度,迅雷就是多线程。
anon_max_rate=number
//匿名的最大速度(字节bytes/秒)
local_max_rate=number
//本地用户的最大速度(字节bytes/秒)
提示:如果/etc/vsftpd/vsftpd.conf下没有的选项,可以从man vsftpd.conf来查看
[root@server ~] # man vsftpd.conf
…
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
…
[root@server ~] # echo username >> /etc/vsftpd/ftpusers
方法2:
[root@server ~] # echo username >> /etc/vsftpd/user_list
[root@server ~] # vim /etc/vsftpd/vsftpd.conf
…
userlist_enable=YES
userlist_deny=YES
…
注意:如果黑名单和白名单里有同一个用户,黑名单生效
…
local_enable=NO
anon_upload_enable=YES
…
[root@server ~] # chmod o+w /var/ftp/pub
不允许让根目录(/var/ftp)其他用户有w权限;
可以在其子目录下赋予w权限。这样匿名用户就可以管理自己的目录和文件了。
或
[root@server ~] # chmod 644 filename
至少要给可读权限
默认允许使用本地用户上传和下载文件
不能上传目录 但可以把目录打包上传下载
FTP的工作模式配置:
主动模式(默认):数据传输时,服务器去链接客户端(送货上门)。服务器的20端口去主动链接客户端的一个1024以上的端口来传输数据。
被动模式:数据传输时,服务器等待客户端来链接。客户端开启一个1024以上的端口,来链接服务器的一个1024以上的端口来传输数据。
1024以下的端口都分配给了特定的服务。
[root@server ~] # vim /etc/vsftpd/vsftpd.conf
…
port_enable=YES
//主动模式开启,默认是开启的,只有关闭了才可以打开被动模式,被动 模式也是默认开启的。
pasv_enable=YES
//被动模式开启,默认时开启的。
pasv_min_port= 被动模式的最小端口
pasv_max_port= 被动模式的最大端口
一. 装包
服务器端安装提供FTP服务的软件包:[root@server ~] # yum -y install vsftpd
客户端安装FTP登陆工具:
[root@client ~] # yun -y install ftp
进程名: vsftp
在服务器端查看端口使用状态:
[root@server ~] # netstat -anptu | grep :21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1943/vsftpd
二. 使用FTP登录
客户端登陆FTP服务器:[root@client ~] # ftp ftp.beginner.net.cn
Connected to ftp.beginner.net.cn (121.42.192.217).
220 (vsFTPd 3.0.2)
Name (beginner.net.cn:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
使用匿名用户登陆,用户名是“ftp”或者“anonymous“,密码不用输入,直接回车就可以进入。
三. 使用FTP下载和上传数据
登陆ftp成功之后,可以上传或者下载数据,格式为:上传:
ftp> put file
批量上传:
ftp> mput file1 file2
注:file是在登陆前所在目录内的文件
下载:
ftp> get file
批量下载:
ftp> mget file1 file2
使用工具下载文件(不需要登陆):
[root@client ~] # wget ftp://ftp.beginner.net.cn/pub/filename
注:file是当前所在服务器的目录内的文件,下载到登陆前所在的目录
浏览及下载/上传:
匿名访问
ftp://ftp.beginner.net.cn
[root@client ~] # wget ftp://ftp.beginner.net.cn/path/to/file
用户验证访问
ftp://username:password@ftp.beginner.net.cn
[root@client ~] # wget ftp://username:password@ftp.beginner.net.cn/path/to/file
为了方便下载和上传,使用lcd可以切换在本地的工作目录。使用 !ls 可以查看本地当前目录下的文件
ftp> lcd /data
Local directory now /data
ftp> !ls
images linux-2.6.32.3.tar.gz lost+found repodata rpms software tars
四. 配置文件
主配置文件:/etc/vsftpd/vsftpd.conf黑名单:/etc/vsftpd/ftpusers
黑白名单:/etc/vsftpd/user_list
黑名单,黑白名单内容格式:一行一个账户名称
注意:设置白名单后,仅明确在白名单内的人才可以访问FTP,其他人均无法访问FTP。
五. /etc/vsftpd/vsftpd.conf内容解析
更改配置文件后,需要重启服务或者重新加载配置文件后才生效以anon开始的选项,都是对匿名账户设置的;以local开始的选项,都是对本地账户设置的
anonymous_enable=YES
//是否开启匿名共享
local_enable=YES
//是否开启本地账户共享
注意:两个都是YES的时候,匿名共享的优先级高,开启本地共享的时候,必须要把匿名共享给关闭
write_enable=YES
//本地账户共享是否可写(上传文件)
anon_upload_enable=YES
//匿名账户是否可写(上传文件)
anon_mkdir_write_enable=YES
//匿名账户是否可写(上传目录和创建目录)
anon_others_write_enable=YES
//匿名账户是否可以删除目录和文件和重命名(默认不存在,要自己添加)
注意:如果这三个选项都是YES,就是对匿名用户的最大权限的设置。
anon_root=/var/ftp
//定义的匿名的根目录,默认为/var/ftp(不建议更改)
local_root=/home/$USER
//定义本地账户的根目录,默认为本地账户的家目录(不建议更改)
chroot_local_user=YES
//禁锢所有的本地账户。
禁锢的作用:将用户禁锢在一个特定的目录下,无法出去。这时候,这个特定的目录,就是用户使用FTP登录的时候的根目录。没有禁锢的情况下,使用本地用户进行FTP访问,可以查看服务器的所有目录和文件。使用账户禁锢后,本地账户的FTP默认的共享路径为自己的家目录.
chroot_list_enable=YES
//是否启用禁锢账户列表
chroot_list_file=/etc/vsftpd/chroot_list
//禁锢账户列表
这两个要连着使用,如果启用了禁锢账户列表,则只有列表里的用户可以随意切换目录。默认是不启动的。禁锢账户列表文件需要自己创建,一行一个账户。
listen=YES
//是否监听端口,一定要开,如果不开的话就无法建立FTP连接
userlist_enable=YES
//是否使用user_list文件
userlist_deny=NO
//必须和上面的配合一起用,决定user_list文件是否是黑名单。 NO为白名单,YES为黑名单。默认为YES。在/etc/vsftpd/user_list文件内的开头注释里有说明。
FTP性能的限制(需要自己手打):
max_clients=number
//限制同时并发访问FTP服务器的客户端的数量
max_per_ip=number
//限制每个客户端的IP并发链接数量(同一个IP,同时使用多个工具访问FTP服务器的数量)。即多线程,可以增加传输速度,迅雷就是多线程。
anon_max_rate=number
//匿名的最大速度(字节bytes/秒)
local_max_rate=number
//本地用户的最大速度(字节bytes/秒)
提示:如果/etc/vsftpd/vsftpd.conf下没有的选项,可以从man vsftpd.conf来查看
[root@server ~] # man vsftpd.conf
六. 实验
1)仅仅允许本地用户登录FTP(如果使用本地账户访问,一定需要将账户禁锢!!做chroot)
[root@server ~] # vim /etc/vsftpd/vsftpd.conf…
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES
…
2)把用户加入黑名单
方法1:[root@server ~] # echo username >> /etc/vsftpd/ftpusers
方法2:
[root@server ~] # echo username >> /etc/vsftpd/user_list
[root@server ~] # vim /etc/vsftpd/vsftpd.conf
…
userlist_enable=YES
userlist_deny=YES
…
注意:如果黑名单和白名单里有同一个用户,黑名单生效
3)不允许使用本地用户登录,只允许使用匿名账户登录,并让匿名用户只有上传权限。
[root@server ~] # vim /etc/vsftpd/vsftpd.conf…
local_enable=NO
anon_upload_enable=YES
…
4)使匿名用户有权限管理自己的目录和文件
思路:如果要使匿名用户有管理权限,就要给目录的o+w权限,但是如果在/var/ftp 这个目录里给这个权限,就不安全。所以,在其子目录下赋予w权限。[root@server ~] # chmod o+w /var/ftp/pub
不允许让根目录(/var/ftp)其他用户有w权限;
可以在其子目录下赋予w权限。这样匿名用户就可以管理自己的目录和文件了。
5)开放服务器端的文件给客户端下载
[root@server ~] # chmod o+r filename或
[root@server ~] # chmod 644 filename
至少要给可读权限
7. 补充
默认就允许匿名用户下载文件默认允许使用本地用户上传和下载文件
不能上传目录 但可以把目录打包上传下载
FTP的工作模式配置:
主动模式(默认):数据传输时,服务器去链接客户端(送货上门)。服务器的20端口去主动链接客户端的一个1024以上的端口来传输数据。
被动模式:数据传输时,服务器等待客户端来链接。客户端开启一个1024以上的端口,来链接服务器的一个1024以上的端口来传输数据。
1024以下的端口都分配给了特定的服务。
[root@server ~] # vim /etc/vsftpd/vsftpd.conf
…
port_enable=YES
//主动模式开启,默认是开启的,只有关闭了才可以打开被动模式,被动 模式也是默认开启的。
pasv_enable=YES
//被动模式开启,默认时开启的。
pasv_min_port= 被动模式的最小端口
pasv_max_port= 被动模式的最大端口
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍