CentOS 搭建 vsftpd
来源:互联网 发布:java方法重写是什么 编辑:程序博客网 时间:2024/05/21 09:49
Installation, Starting/Stopping
# yum install vsftpd# /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf# service vsftpd {start,stop,status,...} # 2.2.2(/etc/init.d/vsftpd)# systemctl {start,stop,status,...} vsftpd[.service] # 3.02(/usr/lib/systemd/system/vsftpd*)
version:
vsftpd-3.0.2-9.el7.x86_64
Note: 不同的版本配置差异非常大,笔者使用 3.0.3 的源码包安装的版本按本文方式配置就完全不生效。
Create FTP user
There are 3 kinds of users in vsftpd:
1. anonymous
2. guest - virtual user
3. local user
PAM with virtual users
# vim /etc/vsftpd/virtual_user_list.txtxxxxxx@xxx# db_load -T -t hash -f /etc/vsftpd/virtual_user_list.txt /etc/vsftpd/virtual_user_list.db# chmod 600 /etc/vsftpd/virtual_user_list.db# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default# vi /etc/pam.d/vsftpdauth required pam_userdb.so db=/etc/vsftpd/virtual_user_listaccount required pam_userdb.so db=/etc/vsftpd/virtual_user_list
- /etc/vsftpd/virtual_user_list.txt
用于生成 db_load 读取生成用户密码数据库/etc/vsftpd/virtual_user_list.db
, PAM 读取/etc/vsftpd/virtual_user_list.db
进行访问控制,文件名可以任意取,只需要配置正确就行。
db_load 上述命令行选项对应的/etc/vsftpd/virtual_user_list.txt
的格式如下:
<user1><passwd1><user2><passwd2>...
- /etc/pam.d/vsftpd
此文件为 vsftpd 认证用户时需要读取的文件,需在 vsftpd 的配置中指定此文件的文件名(见下文)
Note: 用上述两行覆盖之前的内容,而不是追加,否则用户登录时会返回530 Login incorrect
, /var/log/secure:
pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=xxx rhost=...
Basic configuration
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.default# vim /etc/vsftpd/vsftpd.conf
Note: 每一个配置项结尾都不能有多余的空格
- Run vsftpd in standalone mode
listen=YES#listen_ipv6=YES
Note: listen
和 listen_ipv6
只能开启一个
- Disable anonymous login
anonymous_enable=NO
- Specifiy the PAM service name for vsftpd
pam_service_name=vsftpd
即上文编辑过的 /etc/pam.d/vsftpd
Note: 只填文件名,不填目录
- Configure virtual user
guest_enable=YES # enable virtual userguest_username=vsftpd # the local user that the virtual user is mapped tovirtual_use_local_privs=YES # virtual users use the same privileges as local users.user_sub_token=$USERlocal_root=/data/ftp/$USER
Create local user vsftpd:
# useradd -m -b /home -s /sbin/nologin vsftpd# chmod 700 /home/vsftpd
Create “home” directory for vritual user xxx:
# mkdir /data/ftp# mkdir /data/ftp/xxx# chown vsftpd:vsftpd /data/ftp/xxx
- Specifiy listening address
listen_address=10.105.87.168 # default: 0.0.0.0listen_port=10101 # default: 21
chroot
ftp> pwd257 "/data/ftp/xxx"ftp> cd ../../..250 Directory successfully changed.ftp> pwd257 "/"
通过 FTP 能直接访问上级目录,这样会有较大的安全隐患,因此我们使用 chroot 限制每个虚拟用户的根目录为自己的 “home” 目录:
chroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list
创建文件 chroot_list, 并且保证文件 chroot_list 为空,即所有用户均被限定:
# cd /etc/vsftpd# touch chroot_list# chmod 600 chroot_list
2.2.2 版本已到达了限定目录的效果:
ftp> pwd257 "/"
但是 3.0.2 版本会返回如下错误:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
因此需要去掉根目录的写权限:
# chmod a-w /data/ftp/xxx
Appendix: a full configuration example
anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022#anon_upload_enable=YES#anon_mkdir_write_enable=YESdirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YES#chown_uploads=YES#chown_username=whoever#xferlog_file=/var/log/xferlogxferlog_std_format=YES#idle_session_timeout=600#data_connection_timeout=120#nopriv_user=ftpsecure#async_abor_enable=YES#ascii_upload_enable=YES#ascii_download_enable=YES#ftpd_banner=Welcome to blah FTP service.#deny_email_enable=YES#banned_email_file=/etc/vsftpd/banned_emailschroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list#ls_recurse_enable=YESlisten=YES#listen_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESguest_enable=YESguest_username=vsftpdvirtual_use_local_privs=YESuser_sub_token=$USERlocal_root=/data/ftp/$USER
0 0
- CentOS 搭建 vsftpd
- CentOS 搭建 vsftpd
- CentOS搭建vsftpd服务器详解
- CentOS 7 vsftpd 搭建 FTP
- [积累] CentOS 配置 vsftpd 搭建 ftp 服务
- CentOS下搭建vsftpd实现文件上传下载
- CentOS 6.8 使用vsftpd搭建ftp
- linux centos FTP服务器搭建vsftpd配置
- Centos(linux)下VSFTPD搭建FTP服…
- centOS 7.1.1503 搭建vsftpd环境-使用虚拟用户登录
- 阿里云CentOS使用vsftpd搭建FTP服务器
- Linux CentOS 6.5 下 vsftpd ftp服务器搭建
- Linux CentOS 6.5 下配置vsftpd 搭建FTP服务器
- 阿里云CentOS 7 搭建图片服务器 (Nginx+Vsftpd)
- CentOS 5.3 Vsftpd配置
- CentOS vsftpd安装
- centos下安装vsftpd
- centos vsftpd 安装配置
- 微信公众号服务器配置注意事项
- sencha touch 2.4.2修改app.sass文件,compass出错的问题
- java Map 基于Value值排序
- 权限学习(spring+springMVC+mybatis)
- "activity和service通信"-三大方法之-继承Binder类
- CentOS 搭建 vsftpd
- ADO对象之Connection用法总结
- Python入门自学笔记20160705
- HandlerThread
- Visual Leak Detector无法显示Call Stack文字的解决方法
- nil和Nil的区别
- shell中利用自定义命令简化操作
- Mysql Oracle Sql server 三种类型的存储过程
- 常用的正则表达式一览