阿里云重装系统记录3:Centos安装vsftp上传软件

阿里云重装系统记录3:Centos安装vsftp上传软件

上篇文章我们讲了在Centos安装LAMNP(Linux+Apache+Mysql+Nginx+PHP)环境,下面将一下安装vsftp上传软件的步骤操作。

环境介绍:
1.IP地址:192.168.1.107
2.设置vsftp端口:51810(端口范围1024到65535)
3.FTP用户名:myftp
5.FTP用户密码:a123456

阿里云重装系统记录3:Centos安装vsftp上传软件

1.新建FTP目录

mkdir -p /data/wwwroot/ftp
chown www:www /data/wwwroot/ftp -R

2.安装vsftp

yum -y install vsftpd

3.设置防火墙

/sbin/iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 51810 -j ACCEPT
/sbin/iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
/sbin/iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 9000:9045 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart

4.修改vsftp配置文件,配置前先备份,直接改名,后面做软链接

cp  /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
mkdir /data/conf/vsftpd/
mv  /etc/vsftpd/vsftpd.conf /data/conf/vsftpd/

5.修改ftp配置

vi /data/conf/vsftpd/vsftpd.conf

修改文件内容为:

#ftp时间和系统同步,如果启动有错误,请注销
use_localtime=YES
#添加此行,解决客户端登陆缓慢问题!重要!默认vsftpd开启了DNS反响解析!这里需要关闭,如果启动有错误,请注销!
reverse_lookup_enable=NO
#默认无此行,ftp端口为21,添加listen_port=2222把默认端口修改为2222,注意:防火墙同时要开启2222端口
listen_port=51810
#禁止匿名用户
anonymous_enable=NO
#设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问
local_enable=YES
#全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启他)
write_enable=YES
#创建或上传后文件的权限掩码,文件的权限是644
local_umask=022
#禁止匿名用户上传
anon_upload_enable=NO
#禁止匿名用户建立目录
anon_mkdir_write_enable=NO
#设定开启目录标语功能,进入目录时可以显示一些设定的信息,可以通过message_file=.message来设置
dirmessage_enable=YES
#设定开启日志记录功能
xferlog_enable=YES
#主动连接的端口号
connect_from_port_20=YES
#设定禁止上传文件更改宿主
chown_uploads=NO
#设定Vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来,并且由于这里更改了Vsftpd的服务宿主用户为手动建立的Vsftpd。必须注意给与该用户对日志的写入权限,否则服务将启动失败,如chown  vsftpd.vsftpd /var/log/vsftpd.log
xferlog_file=/data/wwwroot/log/other/vsftpd_xferlog.log
#格式化日志格式,使用标准格式
xferlog_std_format=YES
# 如果启用该选项,将生成两个相似的日志文件,默认在 /var/log/xferlog 和 /var/log/vsftpd.log 目录下。前者是 wu-ftpd 类型的传输日志,可以利用标准日志工具对其进行分析;后者是Vsftpd类型的日志。
dual_log_enable=YES
vsftpd_log_file=/data/wwwroot/log/other/vsftpd.log
#设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限等
nopriv_user=vsftpd
#设定支持异步传输功能
async_abor_enable=YES
#设定支持ASCII模式的上传
ascii_upload_enable=YES
#设定支持ASCII模式的下载
ascii_download_enable=YES
#设定Vsftpd的登陆欢迎语
ftpd_banner=Welcome to funet8 FTP service ^_^
#禁止本地用户登出自己的FTP主目录(NO表示禁止登出,YES表示允许登出)
chroot_local_user=NO
#禁止虚拟用户登出自己的FTP主目录,即限定在自己的目录内,不让他出去,就比如如果设置成NO,那么当你登陆到ftp的时候,可以访问服务器的其他一些有权限目录。设置为YES后,即锁定你的目录了
chroot_list_enable=YES
#文件中的用户被禁锢在自己的宿主目录中。/etc/vsftp/chroot_list本身是不存在的,这要建立vim /etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了
chroot_list_file=/etc/vsftpd/chroot_list
#设为YES时,以standalone方式来启动,否则以超级进程的方式启动。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。
listen=YES
#设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置
pam_service_name=vsftpd
#在/etc/vsftpd/user_list中的用户将不得使用FTP,设为YES的时候,如果一个用户名是在userlist_file参数指定的文件中,那么在要求他们输入密码之前,会直接拒绝他们登陆
userlist_enable=YES
#设为YES时,ftp服务器将使用tcp_wrappers作为主机访问控制方式,支持 TCP Wrappers 的防火墙机制
tcp_wrappers=YES
#设定空闲连接超时时间,这里也可以不设置,将具体数值留给每个具体用户具体指定,当然如果不指定的话,还是使用系统的默认值600,单位秒。
idle_session_timeout=300
#空闲1秒后服务器断开
data_connection_timeout=1
#########################################################
# ssl设置												#
#########################################################
ssl_enable=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem
ssl_ciphers=HIGH

# 是否启用隐式ssl功能,不建议开启
implicit_ssl=YES
# 隐式ftp端口设置,如果不设置,默认还是21,但是当客户端以隐式ssl连接时,默认会使用990端口,导致连接失败!!
listen_port=51810
# 输出ssl相关的日志信息
#debug_ssl=YES
#########################################################
#以下这些是关于Vsftpd虚拟用户支持的重要配置项目。
#默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置
#########################################################
#设定启用虚拟用户功能
guest_enable=YES
#指定虚拟用户的宿主用户(这个是我们后面要新建的用户),系统默认是ftp用户,这里是全局设置,在虚拟用户的配置文件中也可以单独指定来覆盖全局设置的用户
guest_username=www
#设定虚拟用户个人Vsftp的配置文件存放路径。也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的
#地方就是这些配置文件名必须和虚拟用户名相同。
#比如说vsftpd.conf的配置文件,你复制到这个目录下,你要mv一下,配置成虚拟用户的名称
user_config_dir=/data/conf/vsftpd/vconf
#当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。
#当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。
virtual_use_local_privs=YES
#设置被动模式的端口范围
pasv_min_port=9000
#设置被动模式的端口范围
pasv_max_port=9045
#保持5秒
accept_timeout=5
#1秒后重新连接
connect_timeout=1

6.输出无注释的配置文件内容,方便查看

awk '! /^(#|$)/' /data/conf/vsftpd/vsftpd.conf

7.建立Vsftpd配置文件软链接

ln -s /data/conf/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf

8.建立Vsftpd的日志文件

mkdir -p /data/wwwroot/log/other

9.用openssl生成vsftpd的证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

填写相关信息。

10.建立虚拟用户名单文件

touch /etc/vsftpd/virtusers
vi /etc/vsftpd/virtusers

将一下用户名和密码写入/etc/vsftpd/virtusers文件中,第一行为用户名第二行为密码行,新增用户也遵守此规则。
myftp
a123456

11.生成虚拟用户数据文件:

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

12.设定PAM验证文件,并指定对虚拟用户数据库文件进行读取

chmod 600 /etc/vsftpd/virtusers.db  

13.在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效,或是将vsftpd原内容全部注释掉,在文件末尾加)

cp /etc/pam.d/vsftpd  /etc/pam.d/vsftpd.bak
sed -ir 's/^/#/g' /etc/pam.d/vsftpd 

14.修改/etc/pam.d/vsftpd文件

vi /etc/pam.d/vsftpd

新增以下配置:

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

注意:如果系统为64为,则下面的lib改为lib64,否则配置失败

15.添加默认支撑Vsftpd服务的宿主用户,-M:不创建家目录

useradd vsftpd -M -s /bin/false

16.创建保存虚拟用户配置文件的目录

mkdir -p /data/conf/vsftpd/vconf
cd /data/conf/vsftpd/vconf
touch myftp

17.创建要将哪些用户固定在家目录的配置文件

touch /etc/vsftpd/chroot_list
echo "myftp" > /etc/vsftpd/chroot_list

18.编辑用户myftp配置文件,其他的跟这个配置文件类似

mkdir -p /data/wwwroot/ftp/myftp
chown www:www /data/wwwroot/ftp/ -R 
vi /data/conf/vsftpd/vconf/myftp

将一下配置写入文件:

#起用虚拟用户,centos下yes必须为小写字母 
#guest_enable=yes 
#通过此项可以配置不同的虚拟用户属于不同宿主用户,默认则用全局配置中的设置
#映射本地虚拟用户 
guest_username=www
#如果当时创建用户的时候锁定一个目录了,那就可以不写 
local_root=/data/wwwroot/ftp/myftp
#用户会话空闲后10分钟
idle_session_timeout=600
#将数据连接空闲2分钟断
data_connection_timeout=120
#最大客户端连接数 
max_clients=10 
#每个ip最大连接数 
max_per_ip=5 
#限制上传速率,0为无限制 
local_max_rate=0
#设置一个文件名或者目录名式样(注意:只能是文件名或是目录名,不支持路径模式)以阻止在任何情况下访问它们。并不是隐藏它们,而是拒绝任何试图对它们进行的操作(下载,改变目录层,和其他有影响的操作)。
deny_file={*.mp3,*.mov,.private,*.exe}
#设置了一个文件名或者目录名(注意:只能是文件名或是目录名,不支持路径模式)列表,这个列表内的资源会被隐藏,不管是否有隐藏属性。但如果用户知道了它的存在,将能够对它进行完全的访问。
hide_file={*.mp3,.hidden,hide*,*.exe}

29.# 设置开机自动启动并重新启动vsftpd

chkconfig vsftpd on
service vsftpd restart

20.输入用户名和密码等,连接FTP。

21.将整个web目录挂载到/data/wwwroot/ftp/myftp目录中(实现权限管理)

vi /etc/fstab 

新增一条记录:
/home/data/wwwroot/web /data/wwwroot/ftp/myftp none rw,bind 0 0

mount -a
service vsftpd restart 

新增一个FTP虚拟用户的方法

需求创建FTP新用户: ftp_lxx
只给到站点文件夹权限:/data/wwwroot/web/funet8.com/

vi /etc/vsftpd/virtusers

增加一个用户和密码:
ftp_lxx
123456

生成虚拟用户数据文件

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
cd /data/conf/vsftpd/vconf/
cp myftp ftp_lxx

修改路径:
local_root=/data/wwwroot/ftp/myftp改为:local_root=/data/wwwroot/ftp/ftp_lxx

mkdir -p /data/wwwroot/ftp/ftp_lxx/funet8.com
chown -R www:www /data/wwwroot/ftp/ftp_lxx/

21.将整个/home/data/wwwroot/web/funet8.com/目录挂载到/data/wwwroot/ftp/ftp_lxx目录中(实现权限管理)

vi /etc/fstab 

新增一条记录:
/home/data/wwwroot/web/funet8.com /data/wwwroot/ftp/ftp_lxx/funet8.com none rw,bind 0 0

mount -a
service vsftpd restart 

去掉一个FTP虚拟用户权限的方法

需求:将用户ftp_lxx管理/home/data/wwwroot/web/funet8.com文件收回

1.卸载挂载点:

umount /data/wwwroot/ftp/ftp_lxx/funet8.com

出现错误:
[[email protected] ~]# umount /data/wwwroot/ftp/ftp_lxx/funet8.com
umount: /home/data/wwwroot/ftp/ftp_lxx/funet8.com: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
原因是由于自己打开Ftp软件,关掉重新执行命令。

如果还是不行,就参考:http://www.cnbloger.com/post/78.html

然后在删除文件夹,既收回权限,一定要注意顺序,先卸载文件夹再删除。

rm -rf /data/wwwroot/ftp/ftp_lxx/funet8.com

未经允许不得转载:好玩吧 » 阿里云重装系统记录3:Centos安装vsftp上传软件