ftp建立虚拟用户实现文件上传和下载
2017-04-26 01:30
549 查看
环境 centos7
1.开启vsftpd服务
2.检查vsftpd服务是否开启
3.添加虚拟用户口令文件
vi etc/vsftpd/vuser.txt
4.生成虚拟用户口令认证文件
如果没有db_load口令认证命令,则需要安装
yum -y install db4-utils
如果有,那么直接把文档转变为认证文件
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
5.编辑vsftpd的PAM认证文件
vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
#注释掉其他行,加入此两行即可
#注释掉其他行,可以禁止本地用户登录,因为本地用户登录时的验证依然依赖这个文件
6.建立本地映射用户并设置宿主目录权限
useradd -d /home/vftproot -s /sbin/nologin vuser
#此用户不需要登录,只是映射用户 #用户名必须和下一步配置文件中一致
然后查看该目录的权限
发现权限是700,也就是说只有所有者才能rwx权限,其他人都没有权限,所以需要修改该目录下的权限,否则其他用户无法访问该目录
7.修改配置文件
vi /etc/vsftpd/vsftpd.conf
加上以下配置
#开启虚拟用户
guest_enable=YES
#FTP虚拟用户对应系统用户
guest_username=vuser
#PAM认证文件(默认存在)
pam_service_name=vsftpd
8.
调整虚拟用户权限
vi /etc/vsftpd/vsftpd.conf
#关闭匿名用户登陆,更加安全(不影响虚拟用户登陆
) anonymous_enable=NO
#给虚拟用户设定权限,允许所有虚拟用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
9.重启vsftpd服务并测试
service vsftpd restart
在测试过程中,如果遇到了530失败,则可能是pam验证文件路径错误,可以用find命令查找pam_userdb.so验证文件,然后从新修改vsftpd文件,改为正确的路径
而遇到远征主机关闭连接,则可能是防火墙的问题,需要运行一下命令
关闭防火墙 iptables -F
关闭SELinux setenforce 0(用sestatus查看如果发现selinux还是enable状态的话,则需要修改etc/selinux/config 中的enforcing 模式改为disabled, 然后重启)
如果遇到这种情况的话,是因为如果你开启了chroot_local_user=YES这个选项把用户限制在了主目录(用户不能跳出主目录),从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了。
果然,因为我们是该目录的所有者,拥有7权限,所以只要我们使用chown命令把所有者改成root就能登录了
因为我们在该目录下没有写权限,所以是只能下载文件而不能上传文件的
解决方法:在根目录下创建一个755所属自己的目录,在该目录下进行上传文件和下载
成功上传!
10.为每个虚拟用户建立自己的配置文件,单独定义权限
之前定义了两个虚拟用户,一个是test1,一个是test2,现在来单独配置一下test1的独立配置
(1)修改配置文件
vi /etc/vsftpd/vsftpd.conf
#指定保存虚拟用户配置文件的目录
user_config_dir=/etc/vsftpd/vusers_dir
(2)手工建立目录
mkdir /etc/vsftpd/vusers_dir
(3)为每个虚拟用户建立配置文件
vi /etc/vsftpd/vusers_dir/test1(虚拟用户名),加入一下权限
#允许此用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#给虚拟用户指定独立的上传目录
local_root=/tmp/test1
然后登陆测试
独立配置之后,使用test1登陆就会来到配置的目录下(/tmp/test1/)
因为和上面的那些操作几乎是一样的,这里就不演示了,如果不能登陆成功,记得检查根目录是否具有写权限,然后改掉写权限就可以了,最重要的一点就是配置不要错了,配置文件不能存在空格,否则也会报错!
1.开启vsftpd服务
2.检查vsftpd服务是否开启
3.添加虚拟用户口令文件
vi etc/vsftpd/vuser.txt
4.生成虚拟用户口令认证文件
如果没有db_load口令认证命令,则需要安装
yum -y install db4-utils
如果有,那么直接把文档转变为认证文件
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
5.编辑vsftpd的PAM认证文件
vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
#注释掉其他行,加入此两行即可
#注释掉其他行,可以禁止本地用户登录,因为本地用户登录时的验证依然依赖这个文件
6.建立本地映射用户并设置宿主目录权限
useradd -d /home/vftproot -s /sbin/nologin vuser
#此用户不需要登录,只是映射用户 #用户名必须和下一步配置文件中一致
然后查看该目录的权限
发现权限是700,也就是说只有所有者才能rwx权限,其他人都没有权限,所以需要修改该目录下的权限,否则其他用户无法访问该目录
7.修改配置文件
vi /etc/vsftpd/vsftpd.conf
加上以下配置
#开启虚拟用户
guest_enable=YES
#FTP虚拟用户对应系统用户
guest_username=vuser
#PAM认证文件(默认存在)
pam_service_name=vsftpd
8.
调整虚拟用户权限
vi /etc/vsftpd/vsftpd.conf
#关闭匿名用户登陆,更加安全(不影响虚拟用户登陆
) anonymous_enable=NO
#给虚拟用户设定权限,允许所有虚拟用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
9.重启vsftpd服务并测试
service vsftpd restart
在测试过程中,如果遇到了530失败,则可能是pam验证文件路径错误,可以用find命令查找pam_userdb.so验证文件,然后从新修改vsftpd文件,改为正确的路径
而遇到远征主机关闭连接,则可能是防火墙的问题,需要运行一下命令
关闭防火墙 iptables -F
关闭SELinux setenforce 0(用sestatus查看如果发现selinux还是enable状态的话,则需要修改etc/selinux/config 中的enforcing 模式改为disabled, 然后重启)
如果遇到这种情况的话,是因为如果你开启了chroot_local_user=YES这个选项把用户限制在了主目录(用户不能跳出主目录),从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了。
果然,因为我们是该目录的所有者,拥有7权限,所以只要我们使用chown命令把所有者改成root就能登录了
因为我们在该目录下没有写权限,所以是只能下载文件而不能上传文件的
解决方法:在根目录下创建一个755所属自己的目录,在该目录下进行上传文件和下载
成功上传!
10.为每个虚拟用户建立自己的配置文件,单独定义权限
之前定义了两个虚拟用户,一个是test1,一个是test2,现在来单独配置一下test1的独立配置
(1)修改配置文件
vi /etc/vsftpd/vsftpd.conf
#指定保存虚拟用户配置文件的目录
user_config_dir=/etc/vsftpd/vusers_dir
(2)手工建立目录
mkdir /etc/vsftpd/vusers_dir
(3)为每个虚拟用户建立配置文件
vi /etc/vsftpd/vusers_dir/test1(虚拟用户名),加入一下权限
#允许此用户上传
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
#给虚拟用户指定独立的上传目录
local_root=/tmp/test1
然后登陆测试
独立配置之后,使用test1登陆就会来到配置的目录下(/tmp/test1/)
因为和上面的那些操作几乎是一样的,这里就不演示了,如果不能登陆成功,记得检查根目录是否具有写权限,然后改掉写权限就可以了,最重要的一点就是配置不要错了,配置文件不能存在空格,否则也会报错!
相关文章推荐
- linux下实现ftp匿名用户的上传和下载文件功能
- 搭建ftp服务,匿名用户登录可实现文件的上传下载
- 通过FTP服务端来实现匿名用户和基本用户的访问,可以实现文件上传和下载。通过web网站来浏览内容
- linux下实现ftp匿名用户的上传和下载文件功能
- Vsftpd 虚拟用户实现公司各部门文件的上传下载
- 探究ftp的奥妙之系统用户如何上传下载文件、vsftpd如何识别证书并利用客户端来实现远程连接传输
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- php下连接ftp实现文件的上传、下载、删除文件实例代码
- 利用FTPClient类实现文件的上传下载功能
- [转]文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- ACTIVEX实现大文件FTP上传下载---上
- ACTIVEX实现大文件FTP上传下载---下
- Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1
- 利用Socket 实现 FTP 文件上传和文件下载
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- 本周的小任务:(java编程实现)网站上的文件下载后,再FTP上传
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- .Net 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总