记录一下自己遇到的坑,以后再安装的时候看一下,大家没搭过vsfptd的也可以看一下哈!需要马上安装的先看最佳实践,如果遇到问题了去下面找找,要是问题相同的话就解决试试看!
1.安装vsftpd
$ yum -y install vsftpd
2.关闭防火墙和SELinux和设置开机自启
关闭防火墙和禁止防火墙开机自启:
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
关闭SELinux和使SELinux失效
设置文件/etc/sysconfig/selinux(永久生效)
SELINUX=disabled
执行命令(临时生效)
$ setenforce 0
设置vsftpd开机自启:
$ chkconfig vsftpd on
3.添加用户(可以不添加,用原来的用户)
添加用户,用户的主目录为/home/ftp1
$ useradd ftp1
赋予用户密码(需输入两遍密码)
$ passwd ftp1
4.修改/etc/vsftpd/vsftpd.conf(参考2.13)若启动失败,则查看文件是否后空格和空行,复制是否完全!!!一定要仔细确认!
5.创建对应的文件和文件夹
$ touch /var/log/vsftpd.log
$ mkdir /etc/vsftpd/vuser_conf
$ touch /etc/vsftpd/chroot_list
6.启动
$ service vsftpd start
7.其他配置事项
1.网络一定要通,先通过ping测试网络是否通畅
2.防火墙关掉,有需求的话测通之后再打开
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
3.生成数据库需要db_load命令,需要安装一下
yum install db4*
4./etc/pam.d/vsftpd文件是配置客户端验证的文件,其中,db后面的是需要改的值,要写上通过db_load命令生成的.db文件的位置
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
5.最好建立一个ftp用户,用来当虚拟用户的宿主用户(访问端口用户)
mkdir /ftpdir
useradd -d /ftpdir vuser
chown vuser.vuser /ftpdir
usermod -s /sbin/nologin vuser
6.修改etc/vsftpd/vsftpd.conf
pam_service_name:就是vsftpd加载的pam文件,在上面说过,里面装载了db_load生成的账号和密码
guest_enable=YES ####激活虚拟账户
guest_username=vuser ####把虚拟账户绑定为系统账户vuser
pam_service_name=vsftpd ####使用PAM验证
user_config_dir=/etc/vsftpd/vuser ####各个虚拟用户对应的个性配置文件夹
7.登录权限和目录权限
登录权限:
3、4要一起用,3为NO时,userlist_deny属性和user_list文件无效(注:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous)
例子:
vsftpd.conf:
local_enable=YES
userlist_enable=YES
userlist_deny=YES
ftpusers:
# Users that are not allowed to login via ftp
root
bin
user_list:
root
bin
目录权限
例子 :
vsftpd.conf:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
7.启动相关
启动、关闭、重启、状态
service vsftpd start
service vsftpd stop
service vsftpd restart
service vsftpd status
查看是否开机自启:
chkconfig --list
设置开机自启
chkconfig vsftpd on
8 创建文件权限
local_umask属性,创建文件的权限掩码,默认022,则创建文件的权限为755,需要设置此值。
9.其他linux命令
添加用户,之后必须设置密码!
useradd test //增加用户test,并制定test用户的主目录为/home/test
设置密码
passwd test //为test设置密码
更改用户家目录
usermod -d /test test //更改用户test的主目录为/test
限制用户登录权限(更改用户登录的shell脚本)
usermod -s /sbin/nologin test //限定用户test不能telnet,只能ftp
解开用户登录权限(更改用户登录的shell脚本)
usermod -s /sbin/bash test //用户test恢复正常
10.关闭SELinux
设置文件/etc/sysconfig/selinux(永久生效)
SELINUX=disabled
执行命令(临时生效)
setenforce 0
11.解决500 OOPS:refusing to run with writable root inside chroot()的方法
配置文件中加上这句话:
allow_writeable_chroot=YES
12.有一个配置很全的博客,留给以后查看
http://blog.csdn.net/haoge921026/article/details/51956983
13.最后成功的配置文件
#
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_std_format=YES
listen=YES
tcp_wrappers=YES
hide_ids=YES
#
#设定不允许匿名访问
anonymous_enable=NO
#禁止匿名用户上传
anon_upload_enable=NO
#禁止匿名用户建立目录
anon_mkdir_write_enable=NO
#设定开启目录标语功能
dirmessage_enable=YES
#设定开启日志记录功能
xferlog_enable=YES
#设定端口20进行数据连接
connect_from_port_20=YES
#设定禁止上传文件更改宿主
chown_uploads=NO
#设定Vsftpd的服务日志保存路径
xferlog_file=/var/log/vsftpd.log
#设定Vsftpd的登陆标语。
ftpd_banner="Welcome to FTP Server!"
#
#限制用户在自己的家目录之内
chroot_local_user=YES
#启用不被chroot的使用者账号
chroot_list_enable=YES
#不被chroot的使用者账号的列表文件
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/vuser_conf
#
#针对不同的用户做不同的配置,这个目录下都是以用户名作为文件名
#限制某些用户的访问
userlist_file=/etc/vsftpd/user_list
userlist_deny=YES
userlist_enable=YES
#认证配置
pam_service_name=vsftpd
pam_service_name=/etc/pam.d/vsftpd
#解决500 OOPS:refusing to run with writable root inside chroot()
allow_writeable_chroot=YES