阿里云重装系统记录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
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
出现错误:
[root@localhost ~]# 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
交个朋友好吗?
牛牛牛牛呀