zoukankan      html  css  js  c++  java
  • Ubuntu下FTP服务器的设置

    就用最常用的vsftpd,安装:sudo apt-get install vsftpd

    启动服务:sudo service vsftpd start

    重启服务:sudo restart vsftpd

    配置文件在/etc/vsftpd.conf,每次更改完配置文件记得重启服务。

    开启匿名访问很简单:anonymous_enable=YES

    匿名访问的主目录在/srv/ftp,如要更改,则anon_root=<the folder you want>

    有几个配置项也要注意,可以根据自己的需要灵活配置:


    anon_world_readable_only=<YES/NO> 是否开放匿名用户的浏览权限 anon_upload_enable=<YES/NO> 设置是否允许匿名用户上传 anon_mkdir_write_enable=<YES/NO> :设置是否允许匿名用户创建目录 anon_other_write_enable=<YES/NO> :设置是否允许匿名用户其他的写权限(注意,这个在安全上比较重要,一般不建议开,不过关闭会不支持续传) anon_umask=<nnn> :设置匿名用户上传的文件的生成掩码,默认为077

    但是一般情况下我们不会满足于创建一个只能下载文件的FTP服务器,至少要做到匿名可下载,登录用户可双传,我就是这样。。。

    要实现这个还是费了番功夫的:

    创建账户和密码文件:


    sudo touch /home/loguser.txt sudo nano /home/loguser.txt

    然后将下面的字符粘帖入loguser.txt中,此处代表创建了两个用户:


    user1 user1_pwd user2 user2_pwd

    生成数据库:


    sudo apt-get install db4.8-util sudo db4.8_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db sudo chmod 600 /etc/vsftpd_login.db

    配置PAM文件:

    编辑文件/etc/pam.d/vsftpd,删掉已有内容,添加以下两行:


    auth required pam_userdb.so db=/etc/vsftpd_login account required pam_userdb.so db=/etc/vsftpd_login

    FTP用户上传时实际上需要用到本地的用户,所以我们需要一个系统用户ftpuser,用户家目录为/home/ftpuser, 用户登录终端设为/bin/false(即使之不能登录系统):


    sudo useradd ftpuser -d /home/ftpuser -s /bin/false sudo chown ftpuser:ftpuser /home/ftpuser
    sudo chmod 755 /home/ftpuser

    编辑FTP配置文件/etc/vsftpd.conf,照如下是指即可:


    listen=YES anonymous_enable=YES anon_root=/home/ftpuser anon_world_readable_only=NO dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES chroot_local_user=NO guest_enable=YES guest_username=ftpuser user_config_dir=/etc/vsftpd_user_conf local_enable=YES
    local_umask=022
    secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem
    use_localtime=YES

    在上面的配置中有这么一行user_config_dir=/etc/vsftpd_user_conf,我们需要在这个目录下为每个FTP用户创建一个用户自己的配置文件


    sudo mkdir /etc/vsftpd_user_conf cd /etc/vsftpd_user_conf sudo touch user1

    如果你想让user1有上传的权限,则sudo nano 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=/home/ftpuser/ anon_umask=022

    到这里应该就配置完成了,重启下服务然后试试吧!

    2013-11-22 注: 如果使用sudo service vsftpd restart时提示restart: Unknown instance,可以用sudo apt-get remove --purge vsftpd重装一下vsftpd.

    2014-05-21 注: 如果提示530 Login incorrect,也可以用sudo apt-get remove --purge vsftpd试着重装一下vsftpd.

    2014-05-26 注: 如果你安装的vsftpd的版本是2.3.5,在升级到Ubuntu 12.04后可能会报“500 OOPS: vsftpd: refusing to run with writable root inside chroot”的错误,这时可以安装一个特殊的2.3.5的版本或是升级到3.0.0以上的版本。

    详细的信息可以参考这里: http://blog.thefrontiergroup.com.au/2012/10/making-vsftpd-with-chrooted-users-work-again/

    简单步骤如下:

    1. 下载安装包https://launchpad.net/~thefrontiergroup/+archive/vsftpd/+packages

    2. 卸载已安装的vsftpd,安装刚刚下载的deb包进行安装

    3. 重新执行以上步骤,并且添加allow_writeable_chroot=YES/etc/vsftpd.conf中。

    4. 重启vsftpd服务即可。

  • 相关阅读:
    js实现倒计时
    CSS解决ul下面最后一个li的margin
    js手动定时清除localStorage
    js应用中的小细节-时间戳的转换和input输入框有效数字
    javaScript将string转换成array,并将汉字按汉语拼音排序方法
    CSS3属性之text-overflow:ellipsis,指定多行文本中任意一行显示...
    移动端下拉刷新,向后台请求数据
    进程 线程 协程
    网络编程
    flask 2 进阶
  • 原文地址:https://www.cnblogs.com/qinull/p/3039104.html
Copyright © 2011-2022 走看看