CentOS下安装VSFTP及配置
来源:互联网 发布:网络管理结构的重要性 编辑:程序博客网 时间:2024/05/16 18:53
一、安装vsftp pam db4
一般pam和db4默认系统已经安装,如果没有安装如下一并安装
yum install vsftpd pam* db4* -y
将vsftp配置为系统服务
chkconfig --level 35 vsftpd on
安装完成后生成如下配置文件:
[root@localhostvsftpd]# ll /etc/vsftpd/
-rw-------. 1 root root 125 Feb 19 2013 ftpusers
-rw-------. 1 root root 361 Feb 19 2013 user_list
-rw-r--r--. 1 root root 4691 Sep 17 16:54 vsftpd.conf
-rwxr--r--. 1 root root 338 Feb 19 2013 vsftpd_conf_migrate.sh
二、 建立ftp虚拟宿主帐户
#useradd vsftpd -s /sbin/nologin
vsftpd供虚拟帐户映射的系统真实用户,不需要登录shell权限
三、配置vsftpd.conf
备份现有配置文件:
[root@localhostvsftpd]# cd /etc/vsftpd/
[root@localhostvsftpd]# cpvsftpd.confvsftpd.conf.bak
下面更改配置文件:
[root@localhostvsftpd]# vi vsftpd.conf
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). #anonymous_enable=YES
anonymous_enable=NO //不允许匿名用户访问
# Uncomment this to allow local users to log in.
local_enable=YES //设定本地用户可以访问。主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问。
# Uncomment this to enable any form of FTP write command.
write_enable=YES //设定可以进行写操作
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022 //设定上传后文件的权限掩码
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
anon_upload_enable=NO //禁止匿名用户上传
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
anon_mkdir_write_enable=NO //禁止匿名用户建立目录
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES ///设定开启目录标语功能
# Activate logging of uploads/downloads.
xferlog_enable=YES //设定开启日志记录功能
# Make sure PORT transfer connections originate from port 20 (ftp-data). connect_from_port_20=YES ///设定端口20进行数据连接
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
chown_uploads=NO ///设定禁止上传文件更改宿主
#chown_username=whoever
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/vsftpd.log ///设定Vsftpd的服务日志保存路径。该文件要手动建立,并且必须给与该vsftpd用户对日志文件vsftpd.log的读写权限,否则服务将启动失败
# If you want, you can have your log file in standard ftpdxferlog format xferlog_std_format=YES ///设定日志使用标准的记录格式
# You may change the default value for timing out an idle session. #idle_session_timeout=600 ///设定空闲连接超时时间,单位秒。
# You may change the default value for timing out a data connection. #data_connection_timeout=120 ///设定单次最大连续传输时间,单位秒。
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user. #nopriv_user=ftpsecure
nopriv_user=vsftpd ///设定支撑Vsftpd服务的宿主用户为手动建立的Vsftpd用户。注意,一旦做出更改宿主用户后,必须注意一起与该服务相关的读写文件的读写赋权问题。比如日志文件就必须给与该用户写入权限
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
async_abor_enable=YES ///设定支持异步传输功能
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
ascii_upload_enable=YES
ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能
# You may fully customise the login banner string:
ftpd_banner=Welcome to blah FTP service. //设定Vsftpd的登陆标语
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
chroot_local_user=YES
chroot_list_enable=YES ///禁止用户登出自己的FTP主目录
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list ///如果开启了
chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置。
# You may activate the "-R" option to the builtinls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it. #ls_recurse_enable=YES
ls_recurse_enable=NO ///禁止用户登陆FTP后使用"ls -R"的命令。该命令会对服务器性能造成巨大开销。如果该项被允许,那么挡多用户同时使用该命令时将会对该服务器造成威胁
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES ///设定该Vsftpd服务工作在StandAlone模式下。顺便展开说明一下,所谓StandAlone模式就是该服务拥有自己的守护进程支持,在ps -A命令下我们将可用看到vsftpd的守护进程名。如果不想工作在StandAlone模式下,则可以选择SuperDaemon模式,在该模式下 vsftpd将没有自己的守护进程,而是由超级守护进程Xinetd全权代理,与此同时,Vsftp服务的许多功能将得不到实现。
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd whith two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES
pam_service_name=vsftpd ///设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
userlist_enable=YES ///设定userlist_file中的用户将不得使用FTP
tcp_wrappers=YES ///设定支持TCP Wrappers
使用虚拟用户需要增加以下部分默认中不包含这些设定项目,需要自己手动添加:
guest_enable=YES ///设定启用虚拟用户功能
guest_username=vsftpd ///指定虚拟用户的宿主用户
virtual_use_local_privs=YES ///设定虚拟用户的权限符合他们的宿主用户
user_config_dir=/etc/vsftpd/vconf ///设定虚拟用户个人Vsftp的配置文件存放路径。这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,注:就是这些配置文件名必须和虚拟用户名相同
注:建立chroot_list文件
touch/etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了,如果不需要限制用户,也可以只建立一个空文件,或者将chroot_list_enable=NO
四、创建日志文件
[root@localhostvsftpd]# touch /var/log/vsftpd.log //日志文件
[root@localhostvsftpd]# chown vsftpd.vsftpd /var/log/vsftpd.log
五、创建虚拟用户名单文件
建立了一个虚拟用户名单文件,用来记录vsftpd虚拟用户的用户名和口令的数据文件,这里命名为v_user。为了目录清晰,这个名单文件就放置在/etc/vsftpd/vconf/下
[root@localhostvsftpd]#mkdir /etc/vsftpd/vconf/
[root@localhostvsftpd]#touch /etc/vsftpd/vconf/v_user
六、创建虚拟用户
编辑上面创建的虚拟用户名单文件v_user,在其中加入用户的用户名和口令信息。 格式:奇数行为用户名,偶数行是密码,其他的以此类推
[root@localhostvsftpd]#vi /etc/vsftpd/vconf/v_user
test //用户名
123123 //密码
七、生成虚拟用户数据库文件
[root@localhostvsftpd]#db_load -T -t hash -f /etc/vsftpd/vconf/v_user /etc/vsftpd/vconf/v_user.db 注: 上面的为一整行,不要分开。
需要特别注意的是,以后再要添加虚拟用户的时候,只需要按照上面的格式:“奇数行为用户名,偶数行是密码”的格式将新用户名和口令添加进虚拟用户名单文件。如此不会生效的,还要再执行一遍“ db_load -T -t hash -f虚拟用户名单文件虚拟用户数据库文件.db ”的命令使其生效才可以!
八、设置数据库文件的权限
[root@localhostvsftpd]#chmod 600 /etc/vsftpd/vconf/v_user.db
[root@localhostvsftpd]#chmod 600 /etc/vsftpd/vconf/v_user
九、修改/etc/pam.d/vsftpd文件,增加以下红色部分内容
#%PAM-1.0
auth sufficient pam_userdb.so db=/etc/vsftpd/vconf/v_user
account sufficient pam_userdb.so db=/etc/vsftpd/vconf/v_user
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusersonerr=succeed
auth required pam_shells.so auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
以上红色部分两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。 这里的auth是指对用户的用户名口令进行验证。 这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。 其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。 再后面的pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。 最后的db=/etc/vsftpd/v_user则指定了验证库函数将到这个指定的数据库中调用数据进行验证。 特别注意:一定要使用“sufficient”,按照老版本的做法,这里使用required ,则会发生用户认证不通过,报如下错误:
[root@localhostvsftpd]#tail /var/log/secure Sep 17 17:28:20 localhostvsftpd[1387]: pam_unix(vsftpd:auth): check pass; user unknown Sep 17 17:28:20 localhostvsftpd[1387]: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=test r host=localhost Sep 17 17:28:20 localhostvsftpd[1387]: pam_succeed_if(vsftpd:auth): error retrieving information about user test
十、创建用户的配置文件
用户配置文件的名字要和创建的“虚拟用户”名字对应
#touch /etc/vsftpd/vconf/test
#vim /etc/vsftpd/vconf/test
local_root=/data/ftp/ //虚拟用户的个人目录路径
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_max_rate=1048576 //本地用户的最大传输速度,单位是Byts/s,
十一、建立虚拟用户目录
如果不建立虚拟用户的个人目录,那么所有的虚拟用户登录后所在的目录都是同一个目录下 # mkdir/data/ftp/
# chown vsftpd.vsftpd/data/ftp/
# chmod 700 /data/ftp/ ///如果不设置为700的权限,则会发生如下错误 “500 OOPS: cannot change directory:/data/ftp”
配置就此完成,如果想增加新的用户,只要按照上面的第七步、第十步进行就可以了。
十二、所有配置完后的目录文件及结构
[root@localhostvsftpd]# ll /etc/vsftpd/
-rw-r--r--. 1 root root 0 Sep 17 16:47 chroot_list
-rw-------. 1 root root 125 Feb 19 2013 ftpusers
-rw-------. 1 root root 361 Feb 19 2013 user_list drwxr-xr-x. 2 root root 4096 Sep 17 18:22 vconf
-rw-r--r-- 1 root root 4689 Sep 18 10:32 vsftpd.conf
-rwxr--r--. 1 root root 338 Feb 19 2013 vsftpd_conf_migrate.sh [root@localhostvsftpd]# ll /etc/vsftpd/vconf
-rw-r--r-- 1 root root 125 Sep 17 18:22 test
-rw-------. 1 root root 12 Sep 17 16:55 vir_user
-rw-------. 1 root root 12288 Sep 17 16:55 vir_user.db
十三、必须关闭selinux(这一步是不完全正确的,有的系统不能关闭selinux,可以为ftp开启所需)
查看SELinux状态:
1、/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
2、getenforce ##也可以用这个命令检查
关闭SELinux:
1、临时关闭(不用重启机器):
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
2、修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
重启机器即可
- CentOS下安装VSFTP及配置
- CentOS下安装VSFTP及配置
- centos vsftp安装及配置
- centos 安装 vsftp 及虚拟用户配置
- 转载-CentOS下安装、配置VSFTP
- CentOS下vsftp安装、配置、卸载
- CentOS下安装配置vsftp服务
- CentOS Vsftp 安装配置
- centos安装配置vsftp
- CentOS下安装vsftp
- Linux下vsftp的安装及配置
- Linux下vsftp的安装及配置
- CentOS 下vsftp 配置及遇到的坑
- Centos 7 FTP(vsftp)服务安装及配置
- centos下配置vsftp服务器
- centos 下 vsftp的 配置
- CentOS 7 VSFTP安装配置
- linux(centos)下安装和配置 vsftp 服务器
- python实现人脸实时监控识别程序 face_recognition
- Struts2对jsp页面进行拦截
- 【模板】归并排序
- JSON总结
- POJ 2255(理解别人的代码的)
- CentOS下安装VSFTP及配置
- 51Nod 1459 迷宫游戏
- 浅谈敌兵设计
- 状态栏的使用
- 【学术】矩阵&特征值:如果知道同阶矩阵A,B的特征值,A+B的特征值是A和B特征值的和吗?
- C++学习笔记--函数模板
- 实用网址链接
- apt-get update失败处理
- can not create a session after response is commited