centos系统下安装ftp服务器_CentOS系统下安装FTP服务vsftpd脚本

更新时间:2018-08-08    来源:CentOS    手机版     字体:

【www.bbyears.com--CentOS】

安装配置vsftpd

#查看是否已安装
rpm -q vsftpd
#yum安装vsftpd
yum install vsftpd

#允许root登录
vi /etc/vsftpd/user_list
vi /etc/vsftpd/ftpusers
#屏蔽掉 root
#root
#SElinux如果开启的话:
setsebool -P ftpd_disable_trans=1
#创建用户[只用于FTP不能登录系统]
adduser -d /home/www.111cn.net -g ftp -s /sbin/nologin tianya
#设置密码:
passwd tianya

#限制禁止切换到上级目录
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#添加用户[文件不存在则新建]
vi /etc/vsftpd/chroot_list
tianya
#如果chkconfig不存在vsftpd则先添加
chkconfig --add mysqld
#设置vsftpd开机启动
chkconfig vsftpd on

附一VSFTPD配置 匿名——本地用户——虚拟用户

1,下载VSFTPD.TAR.GZ
程序下载地址:ftp://vsftpd.beasts.org/users/cevans/
2,检查和建立相应账户和目录
1,nobody用户
[root@main vsftpd-2.1.0]# cat /etc/passwd |grep nobody
nobody:x:99:99:Nobody:/:/sbin/nologin
如不存在请建立相关账户。
2,/usr/share/empty 目录, 如不存在请创建
3,如允许匿名访问,需创建Ftp用户,家目录为/var/ftp(一般ftp用户存在而家目录不存在)
[root@main vsftpd-2.1.0]# mkdir /var/ftp/
[root@main vsftpd-2.1.0]# chown root.root /var/ftp
[root@main vsftpd-2.1.0]# chmod 755 /var/ftp

3,解压、编译、安装程序(其实vsftpd用rpm和用源码安装差不多,编译安装反而不方便,推荐各位RPM安装,呵呵)
[root@main ~]# tar xzfv vsftpd-2.1.0.tar.gz
[root@main ~]# cd vsftpd-2.1.0
[root@main vsftpd-2.1.0]# make && make install
4,复制相关文件
如果是用RPM安装,可能会和源码安装的文件路径略有不同,如/etc/vsftpd.conf变成了/etc/vsftpd/vsftpd.conf,这类变动请自行 find相关文件。
主配置文件
[root@main vsftpd-2.1.0]# cp vsftpd.conf /etc/vsftpd.conf
PAM身份验证用文件
[root@main vsftpd-2.1.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
5,配置vsftpd.conf
启用/禁止匿名用户访问。
anonymous_enable=YES/NO
允许本地用户登录并允许其上传文件。
local_enable=YES
write_enable=YES
将本地用户锁定在主目录中,不允许切换到上一级目录中
chroot_local_user=YES
匿名和本地用户限速(单位byte)
anon_max_rate=数字
local_max_rate=数字
禁止某些用户通过ftp登录服务器。如果设置了local_enable=YES,那么所有的用户包括root也能通过ftp登录服务器,出于安全考虑,需要对某些用户进行限制。在vsftpd.conf中有三个选项控制:
userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
如果userlist_deny=YES,/etc/vsftpd.user_list中列出的用户名就不允许登录ftp服务器;如果userlist_deny=NO,/etc/vsftpd.user_list中列出的用户名允许登录ftp服务器。我们只要在/etc目录下创建vsftpd.user_list文件,文件内容为允许登录或禁止登录的用户名,每个用户一行。
禁止用户通过FTP修改文件或文件夹的权限。
chmod_enable=NO(
设置本地用户上传的文件或文件夹的umask值(默认为077)
local_umask=022
最多同时允许100个客户连接
max_clients=100
每个ip地址最多允许开3个线程
max_per_ip=3
只监听来访问192.168.0.2(适用本机多网卡、多IP的情况)的FTP服务请求
listen_address=192.168.0.2
6,安装完成后使用vsftpd命令即可启动vsftpd服务。保证防火墙开放相关端口后尝试下匿名登陆吧,注意所有匿名用户都登录到相同的目录中/var/ftp。
我们可以通过pgrep vsftpd 来查看vsftpd是否运行起来,可以用pkill vsftpd 来杀死vsftpd进程,把vsFTPd关闭。所以上文说更推荐用rpm安装,那样就可以用service vsftpd start|stop|restart来控制了。
[root@main ~]# pgrep vsftpd
2745
[root@main ~]# pkill vsftpd
7,设置pub目录,允许匿名用户上传、下载文件。
更改配置文件,确保有这几项:
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
新建文件夹,并更改权限。
[root@main ~]# mkdir /var/ftp/pub
[root@main ~]# chmod 777 /var/ftp/pub
尝试一下匿名上传下载吧,应该没问题。
8,设置使用本地用户登陆FTP服务器,并进行权限设置。
添加一个只能从ftp登录服务器,而不能从本地shell登录的用户。以下创建一个用户ftpuser,不允许从本地登录
[root@localhost root]# useradd -g ftp -s /sbin/nologin ftpuser
创建账户和密码后改一下配置文件vsftpd.conf ,以确保本地虚拟用户能有读写权限:
local_enable=YES
write_enable=YES
local_umask=022
尝试用本地用户上传和下载文件。(PS,我不知道为什么我无法进行上传下载操作,但我重启系统后可以应用了)
还可以用userlist_deny=YES/NO
userlist_enalbe=YES
userlist_file=/etc/vsftpd.user_list
这些选项对用户进行控制。
9,尝试使用虚拟用户访问FTP服务。
创建一个口令源文件,文件格式是第一行用户名、第二行密码、第三行用户名、第四行密码……
[root@main ~]# cat temp_pass.txt
caocao
caomengde
xiaocaocao
xiaocaomengde
使用db_load命令生成认证文件。我遇到的情况就是本机没有db_load这个命令,网上搜到的答案是缺少DB4的rpm包,应该是把光盘中DB4开头的rpm包都装全,我嫌麻烦,采用的yum -y install db4*,装了以后就有db_load命令了。
[root@main ~]# db_load -T -t hash -f temp_pass.txt /etc/vuser.db
设置db文件的权限,同时删除口令文件。
[root@main ~]# chmod 600 /etc/vuser.db
[root@main ~]# rm temp_pass.txt
建立虚拟用户所需的PAM配置文件
[root@main ~]# vi /etc/pam.d/ftpuser.vu
#添加如下内容
auth required /lib/security/pam_userdb.so db=/etc/vuser
account required /lib/security/pam_userdb.so db=/etc/vuser
添加新用户,可以考虑设置该用户nologin
[root@main home]# useradd vuserftp
修改vsftpd.conf配置文件,有则改,无则添加。
guest_enable=YES
guest_username=vuserftp
pam_service_name=ftpuser.vu
重启一下,现在访问ftp://caocao@ftp是否可以用caomengde做密码访问?如果期间有小问题,可以考虑以下目录权限问题。
10,尝试给虚拟用户分配权限
修改VSFTPD的配置文件,有则改,无则加。创建并进入这个文件夹。
user_config_dir=/etc/vuserftp/
[root@main vuserftp]# mkdir /etc/vuserftp/
[root@main vuserftp]# cd /etc/vuserftp/
创建虚拟用户权限的配置文件
[root@main vuserftp]# vi caocao
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vuserftp/caocao
创建虚拟用户的目录,并配置权限。
[root@localhost ~]# mkdir /home/vuserftp/caocao
[root@localhost ~]# chown vuserftp /home/vuserftp/caocao/
11,我又照着这个教程复核了一下虚用户登录FTP的相关过程。show 相关配置文件和权限,因仅仅是实验用的,所以配置比较粗糙。大家可以自己优化和精简。
[root@localhost ~]# ll /home/vuserftp/
total 4
drwxr-xr-x 2 root root 4096 Mar 30 09:47 caocao
[root@localhost ~]# grep -v "#" /etc/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
listen=YES
guest_enable=YES
guest_username=vuserftp
pam_service_name=ftpuser.vu
user_config_dir=/etc/vuserftp/
[root@localhost ~]# rpm -qa |grep db4-
db4-java-4.3.29-9.fc6
db4-devel-4.3.29-9.fc6
db4-tcl-4.3.29-9.fc6
db4-4.3.29-9.fc6
db4-utils-4.3.29-9.fc6

[root@localhost ~]# cat /etc/passwd |grep vuserftp
vuserftp:x:500:500::/home/vuserftp:/bin/bash(可以改成nologin)
[root@localhost ~]# cat /etc/pam.d/ftpuser.vu
auth required /lib/security/pam_userdb.so db=/etc/vuser
account required /lib/security/pam_userdb.so db=/etc/vuser

vsftpd的配置文件/etc/vsftpd/vsftpd.conf解析:

anonymous_enable=YES
是否允许匿名用户访问,匿名用户访问的时候是被映射为系统的ftp用户,它的家目录为/var/ftp,故我们用匿名访问的时候,访问的是/var/ftp的目录(这个目录的权限请不要随意改动,如果改动可能造成无法访问)。
 
local_enable=YES
是否允许本地用户登录ftp,登录之后是用户的家目录,但uid号小于500的用户都不允许登录
 
write_enable=YES
本地用户是否有上传权限
 
local_umask=022
本地用户上传的文件的反向掩码。而f用户访问ftp对文件的实际权限是:所访问目录和这个文件权限的交集
 
anon_upload_enable=YES
是否允许匿名用户上传文件
 
anon_mkdir_write_enable=NO
匿名用户是否有创建目录的权限
 
anon_other_write_enable=NO
匿名用户是否有删除和重名名文件的权限
 
anon_world_readable_only=NO
匿名用户只能下载全局可读的文件,即文件的属组,属主,其他用户都有读权限
 
dirmessage_enable=YES
当用户切换目录时,定义的欢迎信息。可以在家目录中定义一个.message的文件
 
xferlog_enable=YES
是否打开传输日志
 
connect_from_port_20=YES
是否启用20号端口进行数据传输,这样会工作在主动模式
 
chown_uploads=YES
chown_username=whoever
当用户上传了文件,是否更改该上传的文件属主,并且属主更改为哪个用户
 
xferlog_file=/var/log/xferlog
定义传输日志的位置,默认在/var/log/messages中
 
xferlog_std_format=YES
定义日志的格式
 
idle_session_timeout=600
会话的超时时间
 
data_connection_timeout=120
数据连接的超时时间
 
nopriv_user=ftpsecure
指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。一般不启用
 
async_abor_enable=YES
是否允许运行特殊的ftp命令"async ABOR",一般不启用
 
ascii_upload_enable=YES
ascii_download_enable=YES
以ascii形式传输,一般不启用
 
ftpd_banner=Welcome to blah FTP service.
登录ftp的欢迎信息
 
deny_email_enable=YES
banned_email_file=/etc/vsftpd/banned_emails
是否要禁止匿名用户使用某些邮件地址,如果是输入禁止的邮件地址的路径和文件名,可防Dos攻击
 
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
当这个文件中的用户登录时,把其用户的目录锁定,不能随意切换,对保证系统的安全重要。
 
chroot_local_user=YES
把所有登录的用户都锁进自己的家目录,不能随意切换
 
ls_recurse_enable=YES
当用户查看ftp服务器上目录文件时,支持递归显示
 
listen=YES
以独立守护进程工作
 
listen_ipv6=YES
是否启用ipv6地址上监听
 
pam_service_name=vsftpd
定义以pam实现ftp用户认证,根据/etc/pam.d/vsftpd定义进行认证
 
userlist_enable=YES
是否启用用户列表,并且只允许/etc/vsftpd/user_list文件中的用户登录
 
userlist_deny=YES
启用用户列表,禁止此列表/etc/vsftpd/usr_list中定义的用户登录
 
tcp_wrappers=YES
是否启用tcp_wrapper对vsftpd的控制
 
六,用tcp_wraper来控制vsftpd:
首先,要确保vsftpd的主配置文件"tcp_wrappers=YES"这一行启用
 
允许192.168.0网段访问:
#vim /etc/hosts.allow
添加:
vsftpd:192.168.0.
禁止172.16.30网段访问:
#vim /etc/hosts.deny
添加:
vsftpd:172.16.30.

本文来源:http://www.bbyears.com/caozuoxitong/43459.html

热门标签

更多>>

本类排行