能用的centos搭建ftp的文档

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。
比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
特点:
①vsftpd 是以一般身份启动服务,所以对于 Linux 系统的使用权限较低,对于Linux 系统的危害就相对的减低了。此外, vsftpd 亦利用 chroot() 这个函式进行改换根目录的动作,使得系统工具不会被vsftpd 这支服务所误用;

②任何需要具有较高执行权限的 vsftpd 指令均以一支特殊的上层程序( parent process ) 所控制 ,该上层程序享有的较高执行权限功能已经被限制的相当的低,并以不影响Linux 本身的系统为准;

③所有来自 clients 端,想要使用这支上层程序所提供的较高执行权限之vsftpd 指令的需求,均被视为『不可信任的要求』来处理,必需要经过相当程度的身份确认后,方可利用该上层程序的功能。例如chown(), Login 的要求等等动作;

④此外,上面提到的上层程序中,依然使用 chroot() 的功能来限制使用者的执行权限。

1.安装vsftpd

环境:CentOS 7
执行yum命令安装:yum -y install vsftpd
按照下面修改配置文件cd /etc/vsftpd
vim vsftpd.conf

#是否允许匿名,默认no
anonymous_enable=NO

#这个设定值必须要为YES 时,在/etc/passwd内的账号才能以实体用户的方式登入我们的vsftpd主机
local_enable=YES

#具有写权限
write_enable=YES

#本地用户创建文件或目录的掩码
local_umask=022

#当dirmessage_enable=YES时,可以设定这个项目来让vsftpd寻找该档案来显示讯息!您也可以设定其它档名!
dirmessage_enable=YES

#当设定为YES时,使用者上传与下载日志都会被纪录起来。记录日志与下一个xferlog_file设定选项有关:
xferlog_enable=YES
xferlog_std_format=YES

#上传与下载日志存放路径
xferlog_file=/var/log/xferlog

#开启20端口
connect_from_port_20=YES

#关于系统安全的设定值:
ascii_download_enable=YES(NO)
如果设定为YES ,那么 client 就可以使用 ASCII 格式下载档案。
一般来说,由于启动了这个设定项目可能会导致DoS 的攻击,因此预设是NO。
ascii_upload_enable=YES(NO)
与上一个设定类似的,只是这个设定针对上传而言!预设是NO。
ascii_upload_enable=NO
ascii_download_enable=NO

#通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,
在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,
chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,
chroot_local_user=NO时,所有的用户均可以切换到其他目录。

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

#这个是pam模块的名称,我们放置在/etc/pam.d/vsftpd
pam_service_name=vsftpd

#当然我们都习惯支持TCP Wrappers的啦!
tcp_wrappers=YES

#不添加下面这个会报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
allow_writeable_chroot=YES

#ftp的端口号
listen_port=60021
启动被动式联机(passivemode)
pasv_enable=YES
上面两个是与passive mode 使用的 port number 有关,如果您想要使用65400 到65410 这 11 个 port 来进行被动式资料的连接,可以这样设定
pasv_min_port=65400
pasv_max_port=65410
FTP访问目录
local_root=/data/ftp/

添加防火墙开启相关端口

这里要是测试可以先关闭防火墙
systemctl stop firewalld
如果是正式环境,最好开启防火墙,添加相应端口
添加主端口
firewall-cmd --permanent --zone=public --add-port=60021/tcp
success
添加被动端口
firewall-cmd --permanent --zone=public --add-port=65400-65410/tcp
success
firewall-cmd --reload
success

2.创建FTP用户

创建主文件夹
cd /home
mkdir vsftpd
创建用户 ftpuser 指定 /home/vsftpd 目录
-s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
设置用户 ftpuser 的密码
passwd ftpuser
把 /home/vsftpd 的所有权给ftpuser.root
chown -R ftpuser.root /home/vsftpd

设置vsftpd服务开机启动
systemctl enable vsftpd.service
启动和查看状态:
systemctl start vsftpd.service
systemctl status vsftpd.service

补充:
端口号为60021
用户名为ftpuser
查看端口和pid:netstat -npal|grep vsftpd
登陆ftp服务器

以下为遇到的错误情况和部分引用的解决方案

553:不能上传文件——修改vsftpd权限
响应: 553 Could not create file.
1、检查文件夹是否设置了读写权限
2、关掉防火墙 (systemctl stop firewalld)
3、selinux限制了,把selinux关掉就可以了。(setenforce 0)

chown root:root   /home/vsftpd
 
chmod -R 755   /home/vsftpd

530:login incorrect ——检查/etc/pam.d/vsftpd
vim /etc/pam.d/vsftpd
注释掉
#auth required pam_shells.so
重启vsftpd服务
sudo service vsftpd restart

其他:
550:Create directory operation failed.错误,该目录下虚拟用户和组都有可写的的权限啊。后来翻阅文档,发现原来是SELINUX搞的鬼,原来只需要disable selinux就可以了。
方法:

     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    SELINUXTYPE= can take one of these two values:
    targeted - Targeted processes are protected,
    mls - Multi Level Security protection.

ok,正常了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8541492/viewspace-768449/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。