首页 > 代码库 > Linux的ftp设置

Linux的ftp设置

实验03FTP

 实验目标

    通过下面FTP配置完成下面几个简单实验

 实验步骤

实验一

实验要求:

测试默认安装vsftpd的结果并验证下面几个问题。

匿名用户与本地用户是否可以登录

匿名用户与本地用户登录的家目录在哪里

匿名用户与本地用户登录后的权限

        [root@dhcpser ~]# rpm -q vsftpd

        package vsftpd is not installed  //没有安装软件包

        [root@dhcpser ~]# cd /misc/cd/Server  //这里你必须先挂载镜像才有

        [root@dhcpser Server]# ls *vsftpd*

        vsftpd-2.0.5-28.el5.x86_64.rpm

        [root@dhcpser Server]# rpm -ivh vsftpd-2.0.5-28.el5.x86_64.rpm

        [root@dhcpser Server]# service vsftpd restart 

        [root@dhcpser Server]# chkconfig vsftpd on  //开机自动运行

        [root@dhcpser Server]# ls -lh /etc > /var/ftp/pub/etc.txt

        [root@dhcpser ~]# useradd test

        [root@dhcpser ~]# echo "redhat" | passwd --stdin test

        Changing password for user test.

        passwd: all authentication tokens updated successfully.

 

验证:(客户端测试)

        [root@localhost ~]# ftp 192.168.10.253

        Connected to 192.168.10.253.

        220 (vsFTPd 2.0.5)

        530 Please login with USER and PASS.

        530 Please login with USER and PASS.

        KERBEROS_V4 rejected as an authentication type

        Name (192.168.10.253:root): ftp  //匿名登录

        331 Please specify the password.

        Password:  //不需要输入密码

        230 Login successful.

        Remote system type is UNIX.

        Using binary mode to transfer files.

        ftp> pwd

    257 “/”

        ftp> cd pub

        250 Directory successfully changed.

        ftp> ls  

        227 Entering Passive Mode (192,168,10,253,75,98)

        150 Here comes the directory listing.

        -rw-r--r--    1 0        0           11627 Jun 13 02:04 etc.txt

        226 Directory send OK.

        ftp> get etc.txt  //下载文件,下载到进入ftp时用户所在目录

        local: etc.txt remote: etc.txt

        227 Entering Passive Mode (192,168,10,253,136,141)

        150 Opening BINARY mode data connection for etc.txt (11627 bytes).

        226 File send OK.

        11627 bytes received in 0.00082 seconds (1.4e+04 Kbytes/s)

        ftp> !ls  //查看是否成功下载

        anaconda-ks.cfg  etc.txt      install.log.syslog

        Desktop          install.log

        ftp> put install.log  //测试是否可以上传文件

        local: install.log remote: install.log

        227 Entering Passive Mode (192,168,10,253,46,17)

        550 Permission denied.

        ftp> quit

        [root@localhost ~]# lftp 192.168.10.253  //另一种ftp登录

        lftp 192.168.10.253:~> user test

        口令

        lftp test@192.168.10.253:~> put install.log

        ...   //下载操作以及验证上传不再操作

答案:

匿名用户与本地用户都可以登录

匿名用户登录到/var/ftp,只能下载不能上传

本地用户登录到本地用户的家目录,可以上传和下载

 

实验二:

禁止匿名用户登录

修改FTP默认端口为2121

禁锢本地用户在自己家目录

实验步骤:

        [root@ser01 ~]# cd /etc/vsftpd/

        [root@ser01 vsftpd]# cp vsftpd.conf vsftpd.conf.bak

        [root@ser01 vsftpd]# vim vsftpd.conf

        在设置文件中改动下面三行

        12 anonymous_enable=NO

        119 listen_port=2121

        120 chroot_local_user=YES

        [root@ser01 vsftpd]# service vsftpd restart

        [root@ser01 vsftpd]# netstat -tulnp | grep vsftpd

        tcp        0      0 0.0.0.0:2121         0.0.0.0:*           LISTEN   4705/vsftpd 

测试:

        [root@ser01 vsftpd]# ftp 192.168.10.253 //登录不上

        [root@ser01 vsftpd]# ftp 192.168.10.253 2121 或者

        [root@localhost ~]# lftp 192.168.10.253 -p 2345

        lftp 192.168.10.253:~> user dong

        口令

        lftp dong@192.168.10.253:~> 

 

实验三:验证黑/白名单

        /etc/vsftpd/ftpusers//黑名单

        /etc/vsftpd/user_list   //用户列表

        [root@ser01 ~]# useradd jerry

        [root@ser01 ~]# useradd mike

        [root@ser01 ~]# echo "redhat" | passwd --stdin jerry

        Changing password for user jerry.

        passwd: all authentication tokens updated successfully.

        [root@ser01 ~]# echo "redhat" | passwd --stdin mike

        Changing password for user mike.

        passwd: all authentication tokens updated successfully.

        //以上是设置用户和密码

        [root@ser01 ~]# grep test /etc/vsftpd/ftpusers 

    test     //这里已经将用户test加入黑名单ftpusers

        //test能否登录FTP?            不能

        [root@ser01 ~]# grep jerry /etc/vsftpd/user_list 

        Jerry    //jerry加入user_list

        //jerry能否登录FTP?           能

        [root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf

        121 userlist_deny=NO 将配置文件中的第121行命令修改

        [root@ser01 ~]# service vsftpd restart

        //请问testjerrymike谁可以登录?   只有jerry可以登录   

实验完毕,请将主配置文件121 userlist_deny=NO注释,将user_list和ftpusers里面添加的账户去掉,这样方便设置实验四。

 

实验四:

本地用户登录到/data/ftproot目录

up上传/下载,down仅下载。拒绝所有用户登录包括匿名用户

最多20个并发,每IP地址最多2个并发

限制下载速度限制为100KB/s

        [root@ser01 ~]# mkdir -p /data/ftproot

        [root@ser01 ~]# useradd up

        [root@ser01 ~]# useradd down

        [root@ser01 ~]# echo "redhat" | passwd --stdin up

        [root@ser01 ~]# echo "redhat" | passwd --stdin down

        [root@ser01 ~]# vim /etc/vsftpd/vsftpd.conf

         12 anonymous_enable=NO

         18 write_enable=YES

        117 userlist_enable=YES

        121 userlist_deny=NO

        122 local_root=/data/ftproot

        123 max_clients=20

        124 max_per_ip=2

        125 local_max_rate=100000

        [root@ser01 ~]# service vsftpd restart

        [root@ser01 ~]# setfacl -m u:up:rwx /data/ftproot/

        [root@ser01 ~]# tail -n 2 /etc/vsftpd/user_list 

        up

        down

        [root@ser01 ~]# dd if=/dev/zero of=/data/ftproot/local.tgz bs=1M count=1000

 

测试:

        [root@localhost ~]# wget ftp://up:redhat@192.168.10.253:2121/local.tgz

 

补充:

匿名用户登录对共享根目录禁止有写入权限,否则禁止匿名账户登录!

[root@localhost ~]# ftp 192.168.10.253 2121

        Connected to 192.168.10.253.

        220 (vsFTPd 2.0.5)

        530 Please login with USER and PASS.

        530 Please login with USER and PASS.

        KERBEROS_V4 rejected as an authentication type

        Name (192.168.10.253:root): ftp

        331 Please specify the password.

        Password:

        500 OOPS: vsftpd: refusing to run with writable anonymous root

        Login failed.

 

思考题:

FTP虚拟账户

系统有lily、mike、test用户,请问以下情况,谁可以登录FTP。(拒绝优先)

        [root@localhost ~]# grep lily /etc/vsftpd/ftpusers  

        lily

        [root@localhost ~]# grep mike /etc/vsftpd/ftpusers  

        mike

        [root@localhost ~]# grep mike /etc/vsftpd/user_list  

        mike

        [root@localhost ~]# grep userlist_deny /etc/vsftpd/vsftpd.conf 

        userlist_deny=NO

        只有test可以访问

 问题和经验总结

共享文件的实际权限是共享权限和Linux文件权限取交集

 

故障现象: ftp目录设置读写权限以后不能登录

解决办法: 系统默认保护功能,不能开启写入权限

故障现象: 将用户加入user_list配置文件中不能访问

解决办法: 必须加一条userlist_deny=NO,因为默认为YES

故障现象: 用户在白名单中但不能访问

解决办法: 拒绝优先,黑名单中不能有该用户

 

 

 

 


Linux的ftp设置