ftp搭建步骤

1.  安装相关软件
yum -y install vsftpd*  pam*   db4*

vsftpd:ftp软件      pam:认证模块       DB4:支持文件数据库


2.新建一个用户,可以不设置密码,并且不让他能够登陆shell

useradd ftpuser -d   /ftpfile     -s   /sbin/nologin

3.vsftpd.conf文件中添加以下配置
#启用虚拟用户功能
guest_enable=YES
 
#指定虚拟的宿主用户
guest_username=virtusers
 
#设定虚拟用户的权限符合他们的宿主用户
virtual_use_local_privs=YES
 
#设定虚拟用户个人vsftp的配置文件存放路劲。这个被指定的目录里,将被存放每个虚拟用户个性的配置文件,注意的地方是:配置文件名必须
和虚拟用户名相同。
user_config_dir=/etc/vsftpd/vconf
#设定pam服务下的vsftpd验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。
pam_service_name=vsftpd
4.建立虚拟用户
(1)mkdir /etc/vsftpd/vconf/
(2)建立一个虚拟用户名单文件,用来记录虚拟用户的账号和密码,格式为:一行用户名,一行密码。奇数行表示用户名,偶数行表示密码

vim /opt/vsftp/passwd

test
123456
test1
654321
3.)生成虚拟用户数据文件

db_load -T -t hash -f   /opt/vsftp/passwd  /opt/vsftp/passwd.db


5.设置pam验证文件
cat /etc/pam.d/vsftpd

#%PAM-1.0
#####32位系统配置
#auth    sufficient      /lib/security/pam_userdb.so     db=/etc/se'rvsftpd/xnpasswd
#account sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/xnpasswd
#####64位系统配置
##注意/opt/vsftp/passwd这个路径是你用db_load命令生成db密码数据库相对应的,并且这里不用加db后缀,切记
auth    sufficient      /lib64/security/pam_userdb.so     db=/opt/vsftp/passwd
account sufficient      /lib64/security/pam_userdb.so     db=/opt/vsftp/passwd

#以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。
#这里的auth是指对用户的用户名口令进行验证。
#这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
session    required     pam_loginuid.so 

6.
虚拟用户的配置

1.)定制虚拟用户模板配置文件(虚拟用户的配置文件名需要和虚拟用户名字一致,因为在登录ftp时输入相应的用户名之后会根据名称去加载相应的配置文件)

vim /etc/vsftpd/vconf/test

复制代码
local_root=/opt/vsftp/file
#指定虚拟用户仓库的具路径
anonymous_enable=NO
#设定不允许匿名访问
write_enable=YES
#允许写的操作
local_umask=022
#上传文件的权限掩码
anon_upload_enable=NO
#不允许匿名上传
anon_mkdir_write_enable=NO
#不允许匿名用户建立目录
idle_session_timeout=300
#设定空闲链接超时时间
data_connection_timeout=1000
#设定单次传输最大时间
max_clients=0
#设定并发客户端的访问数量
max_per_ip=0
#设定客户端的最大线程数
local_max_rate=0
#设定用户的最大传输速率,单位b/s
复制代码
 

2.)建立虚拟用户的仓库目录并更改相应属主/组且赋予相应权限

mkdir -p /opt/vsftpd/file

chown virtusers:virtusers /opt/vsftpd/file

chmod 755 /opt/vsftpd/file

7.测试

如果连接不上,可以将系统的防火墙关闭,或者检查是否开放相应的端口
建议关闭iptables 与 selinux 进行测试。

可能会出现的错误:

1.)500 OOPS:错误

有可能是你的vsftpd.con配置文件中有不能被实别的命令,还有一种可能是命令的YES 或 NO 后面有空格

2.)若是提示权限问题,检测配置文件无误后执行:setsebool -P ftp_home_dir=1

vsftpd 对于权限的要求并不严格,对于指定ftp的宿主用户vsftpd也只是需要有日志文件的权限,其他地方默认即可,而虚拟用户的宿主则需要有相关的虚拟用户仓库路径的权限,且新版本下针对仓库的上级目录貌似不能是777权限可以是755

猜你喜欢

转载自blog.csdn.net/weixin_30563001/article/details/89961684