centons7安装ftp

一、ftp基础操作

1.1、查看是否安装了vsftp

方法一:rpm -qa | grep vsftp

 方法二:whereis vsftpd

 1.2、安装vsftp

方法:yum install -y vsftpd/yum install vsftpd

使用上述两个中的其中一个就可以安装vsftp,-y表示当安装过程提示选择全部为"yes",没有写-y的话需要手动补充。

1.3、ftp设置

设置开机自启:systemctl enable vsftpd.service

启动ftp服务:systemctl start vsftpd.service

重启ftp服务:systemctl restart vsftpd.service

关闭ftp服务:systemctl stop vsftpd.service

查看ftp状态:systemctl status vsftpd.service

二、ftp默认配置文件

默认配置文件:/etc/vsftpd/vsftpd.conf

2.1、修改已有配置

修改anonymous_enable(是否允许匿名ftp)参数,设置成No:anonymous_enable=NO

修改anon_mkdir_write_enable(是否允许匿名用户有创建目录的权利)参数,设置成Yes:anon_mkdir_write_enable=YES

修改chown_upload(是否改变上传文件的属主)参数设置成Yes:chown_upload=YES

修改async_abor_enable(是否允许运行特殊的ftp命令async ABOR.)参数设置成Yes:async_abor_enable=YES

修改ascii_upload_enable(是否使用ascii码方式上传文件)参数设置成Yes:ascii_upload_enable=YES

修改ascii_download_enable(是否使用ascii码方式下载文件)参数设置成Yes:ascii_download_enable=YES

2.2、新增配置

use_localtime=YES

listen_port=21

idle_session_timeout=300

guest_enable=YES

guest_username=vsftpd

user_config_dir=/etc/vsftpd/vconfig

data_connection_timeout=3

virtual_use_local_privs=YES

pasv_min_port=40000

pasv_max_port=40010

accept_timeout=5

connect_timeout=3
allow_writeable_chroot=YES

2.3、配置详解

配置参数详解表:

anonymous_enable=YES 是否允许匿名ftp,如否则选择NO
local_enable=YES 是否允许本地用户登录
local_umask=022 默认的umask码
anon_upload_enable=YES 是否允许匿名ftp用户访问 
anon_upload_enable=YES 是否允许匿名上传文件
anon_mkdir_write_enable=YES 是否允许匿名用户有创建目录的权利
dirmessage_enable=YES 是否显示目录说明文件,默认是YES但需要收工创建.message文件
xferlog_enable=YES 是否记录ftp传输过程
connect_from_port_20=YES 是否确信端口传输来自20(ftp-data)
chown_upload=YES
chown_username=username
是否改变上传文件的属主,如果是需要输入一个系统用户名,你可以把上传的文件都改成root属主
xferlog_file=/var/log/vsftpd.log ftp传输日志的路径和名字默认是/var/log/vsftpd.log
xferlog_std_format=YES 是否使用标准的ftp xferlog模式
idle_session_timeout=600 设置默认的断开不活跃session的时间
data_connection_timeout=120 设置数据传输超时时间
nopriv_user=ftpsecure 运行vsftpd需要的非特权系统用户默认是nobody
async_abor_enable=YES 是否允许运行特殊的ftp命令async ABOR.
ascii_upload_enable=YES
ascii_download_enable=YES
是否使用ascii码方式上传和下载文件
ftpd_banner=Welcome to chenlf FTP service. 定制欢迎信息
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails
是否允许禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
是否将系统用户限止在自己的home目录下,如果选择了yes那么chroot_list_file=/etc/vsftpd.chroot_list中 列出的是不chroot的用户的列表
max_clients=Number 如果以standalone模式起动,那么只有$Number个用户可以连接,其他的用户将得到错误信息,默认是0不限止
message_file 设置访问一个目录时获得的目录信息文件的文件名,默认是.message

三、虚拟用户配置

3.1、创建虚拟用户文件

在ftp的默认配置路径/etc/vsftpd下创建一个专门用来存放虚拟用户账号密码的文件,名字随便起,在这里为了好记叫做virtusers,

奇数行为用户名,偶数行为密码,当然用户名肯定不能为root咯。例如:

vim /etc/vsftpd/virtusers

wesalt

wesalt

test1

test1

3.2、生成虚拟用户数据文件

将创建的用户密码加载到数据文件中。

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

修改数据文件权限为600

chmod 600 /etc/vsftpd/virtusers.db

3.3、修改ftp读取的虚拟用户文件

备份原有的ftp配置文件

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak 或者 mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

修改ftp配置文件

vim /etc/pam.d/vsftpd

注释配置文件中的auth 及 account 的配置行,增加如下两行(32位系统lib64换成lib):

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

四、用户和目录创建

4.1、创建系统用户和指定家目录

useradd test -d /web_source -s /bin/false

web_source:test用户的家目录,也是ftp需要使用的根目录

/bin/false:最严格的禁止login选项,一切服务都不能用,后期登录ftp使用的都是虚拟用户。

4.2、修改目录属主和属组

chown -R test:test /web_source

五、虚拟用户权限配置

5.1、创建虚拟用户配置存放目录

mkdir /etc/vsftpd/vconfig

cd  /etc/vsftpd/vconfig

5.2、创建虚拟用户配置权限

创建文件跟虚拟用户名一致:vim wesalt

增加配置如下:

local_root=/web_source/wesalt/

write_enable=YES

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

5.3、创建虚拟用户管理目录

mkdir -p /web_source/wesalt/

可能在使用的时候会有权限问题,建议再次执行修改属主属组命令:chown -R test:test /web_source

六、安全设置

6.1、防火墙设置

关闭firewall:systemctl stop firewalld.service

关闭iptables:service iptables stop

配置firewall允许ftp通过:

firewall-cmd --zone=public --add-service=ftp --permanent

firewall-cmd --zone=public --add-port=21/tcp --permanent

firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent

配置iptables允许ftp通过:

vim /etc/sysconfig/iptables

在文件中增加如下内容:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT

6.2、selinux设置

查询selinux状态:sestatus、getenforce

selinux三种模式:

enforcing—是强制模式系统受selinux保护。就是你违反了策略,你就无法继续操作下去
permissive—是提示模式系统不会受到selinux保护,只是收到警告信息。permissive就是Selinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来(警告信息)
disabled—禁用selinux

ftp通过selinux的方式:

法一:临时调整selinux

setenforce 1开启(Enforcing)

setenforce 0关闭(Permissive)

法二:永久调整selinux,需重启

去配置文件/etc/selinux/config中修改SELINUX的值,重启生效。

法三、解除selinux对ftp限制

setsebool -P ftpd_connect_all_unreserved 1

七、自动创建和删除虚拟用户

7.1、自动创建虚拟用户

#!/bin/bash
echo "wesalt">> /etc/vsftpd/virtusers
ser=`openssl rand -base64 12`
echo $ser >> /etc/vsftpd/virtusers
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

7.2、删除虚拟用户

#!/bin/bash
var1=`grep -n 'wesalt' /etc/vsftpd/virtusers |cut -d ":" -f 1`
var2=$(($var1+1))
sed -i "${var1},${var2}d" /etc/vsftpd/virtusers
db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

  

原文地址:https://www.cnblogs.com/kowloon/p/13674305.html