FTP服务器

来源:互联网 发布:python 调用应用程序 编辑:程序博客网 时间:2024/04/24 16:34

1、vsftpd服务器

    安装:yum -y install vsftpd

    启动:/usr/sbin/vsftpd

    查看进程和监听端口:ps -eaf | grep vsftpd   //查看进程
                                        netstat -an | grep :21  //查看端口

    匿名用户配置:vi /etc/vsftpd.conf

    测试:windows下使用WinSCP连接到Linux服务器。只需要在Linux系统中设置对应文件或者目录的权限,即可进行文件的上传、下载、修改、删除、目录的创建等所有的操作。

       

2、Linux登录到Windows下Xlight FTP服务器

    Xlight FTP服务器配置:

        新建虚拟服务器:选择ip地址和端口号
        启动服务器
        在虚拟服务器操作里面选择用户列表增加用户:设置用户名、密码、主目录。然后对其进行编辑,在用户目录设置中编辑权限

    Linux下:ftp 192.168.100.117

                    输入用户名和密码

                    ls查看服务器根目录下面的文件

                    使用get 1.txt下载1.txt到Linux执行该命令的当前路径

                    使用put 1.c上传1.c到服务器根目录(服务器端需要设置相对应的上传权限)

       

3、vsftp服务器匿名用户配置

    修改/etc/vsftpd.conf和/etc/vsftpd/vsftpd.conf:

        anonymous_enable=YES
        local_enable=YES
        write_enable=YES
        local_umask=022
        anon_mkdir_write_enable=YES

        anon_world_readable_only=NO
        anon_upload_enable=YES
        chown_uploads=YES
        anon_root=/var/ftp/pub

    登录过程可能会出现”500 OOPS: vsftpd: refusing to run with writable anonymous root“,解决方法是,chown 755 /var/ftp。

    测试:ftp 127.0.0.1(不能修改和覆盖已经存在的目录或者文件)

        下载文件:初始时/home/cl/test1/test目录为空,通过lcd切换到该目录执行get ftp_get_test语句,可以看到成功下载文件ftp_get_test,并且保存到/home/cl/test1/test目录下。见下图:

       

        上传文件:初始时/var/ftp/upload目录为空,通过lcd切换到/home/cl/test1目录,cd切换到upload目录,执行put 1.c,可以看到成功上传1.c文件到/var/ftp/upload目录中。见下图:

       

4、本地用户配置

    修改/etc/vsftpd.conf:local_enable=YES

    修改本地用户文件夹权限:chmod 755 /home/cl(发现只有用户目录及其子目录才能够提供文件上传或者下载,更深层级别的目录不支持文件上传和下载)

    使用本地账号登陆出现如下问题:“500 OOPS: cannot change directory:/home/*******”,解决方法是:/usr/sbin/setsebool -P ftp_home_dir 1,然后重启vsftpd(service vsftpd restart)

    测试:首先登陆到本地服务器,然后可以使用put指令上传、get指令下载文件。

        下载文件:初始时,/var/ftp目录下只有一个名叫upload的目录,成功下载testjoin.sh文件之后,发现存放在/var/ftp目录下。见下图:

       

        上传文件:初始时,/home/cl目录下是不存在ftp_put_test文件的,文件上传之后,发现该目录下多了该文件。如下图:

       

5、虚拟主机配置

    如果主机有两个网卡,则在两块网卡上分别运行vsftpd服务。

    如果主机只有一块网卡,则可以在原有网卡基础上配置子接口,得到逻辑网卡,不同的逻辑网卡设置不同的ip地址。

    假设主机有一块网卡,ip地址为192.168.100.119,并且主机上已经配置运行了vsftpd服务。

    现在配置以下参数,以实现虚拟主机:

        1 增加逻辑网卡,我现在的IP地址为192.168.1.100,增加逻辑网卡IP为192.168.1.101
            ifconfig eth0:1 192.168.1.221 netmask 255.255.255.0 up
        2 停止vsftpd服务
            killall vsftpd
        3 修改vsftpd.conf配置,增加以下一栏
            listen_address=192.168.100.119
        4 重新启动vsftpd服务 & 表示后台运行
             /usr/sbin/vsftpd /etc/vsftpd.conf &
        5 为第二个vsftpd服务器建立匿名用户对应的本地帐号以及个人目录,参数-d指定个人目录,需自己建立,-s指定登录shell,/sbin/nologin是一种不登录shell
            useradd -d /var/ftp/myftp -s /sbin/nologin myftp
        6 创建/var/ftp/myftp目录,改变/var/ftp/myftp的所有者(默认就是root),目的是使myftp用户对其没有写权限
            mkdir /var/ftp/myftp
            chown root /var/ftp/myftp
        7 复制vsftpd.conf,命名为myvsftpd.conf放在/etc目录下
            cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/my_vsftpd.conf
        8 修改myvsftp.conf
            ftp_username=myftp
            listen_address=192.168.100.221
        9 启动第二个vsftpd
             /usr/sbin/vsftpd /etc/vsftpd/my_vsftpd.conf
    测试虚拟主机:

        登陆192.168.100.119,ls查看根目录下面有两个文件和一个目录,如下图:

        

        登陆192.168.100.221,ls查看根目录下面没有任何文件,如下图:

       

6、虚拟用户配置

    示例:设置三个虚拟用户usr1、usr2和usr3,其中usr1主目录是dir1,只有读权限;usr2主目录为dir2,只有读权限;usr3主目录为dir2,具有读写权限。

    1、创建保存账号密码的文件

        vi /etc/vsftpd/ftpusr.txt

        usr1

        123456

        usr2

        123456

        usr3

        123456

    2、生成虚拟账户数据库

        安装db4、db4-utils、db4-devel

        db_load -T -t hash -f /etc/vsftpd/ftpusr.txt /etc/vsftpd/ftpusr.db

        chmod 600 /etc/vsftpd/ftpusr.db

    3、生成与PAM对应的文件

        vi /etc/pam.d/vsftp_login

        auth required /lib/security/pam_useradd.so db=/etc/vsftpd/ftpusr

        account required /lib/security/pam_useradd.so db=/etc/vsftpd/ftpusr

    4、建立所有虚拟账户使用的操作系统账号

        useradd -d /home/ftpsite -s /sbin/nologin ftp_virt

        chmod 700 /home/ftpsite

    5、在/etc/vsftpd/vsftpd.conf中添加修改如下

        guest_enable=YES

        guest_username=ftp_virt

        修改pam_service_name=vsftpd_login

    6、设置每个虚拟账户的权限

        在/etc/vsftpd/vsftpd.conf中添加user_config_dir=/etc/vsftpd

        创建两个目录,并且让ftp_virt对其有完全的权限:

            mkdir /var/frp/dir1

            mkdir /var/ftp/dir2

            chown ftp_virt /var/ftp/dir1

            chown ftp_virt /var/ftp/dir2

        在/etc/vsftpd目录中建立三个文件,文件名称分别为三个账户的名称:

            vi /etc/vsftpd/usr1

            local_root=/var/ftp/dir1

            vi /etc/vsftpd/usr2

            local_root=/var/ftp/dir2

            vi /etc/vsftpd/usr3

            local_root=/var/ftp/dir2

            anon_mkdir_write_enable=YES

            anon_other_write_enable=YES

            anon_upload_enable=YES

            anon_world_readable_only=YES

            write_enable=YES

    测试:发现usr1和usr2用户只有读权限,usr3拥有读写权限,并且usr2和usr3工作目录是同一个目录。

7、总结

    1、服务器的安装

    2、配置文件的修改

    3、ftp基本指令操作

    4、先通过lcd进入客户端目录,cd进入服务器目录,然后在进行上传、下载操作

    5、修改/etc/vsftpd/vsftpd.conf配置文件之后,一定要执行service vsftpd restart重启vsftpd服务

    6、上述实验过程中出现了很多问题,不过百度、google还是很给力的,多学习总结吧。

 

原创粉丝点击