linux下vsftpd的安装及配置介绍

本文主要介绍linuxvsftpd的安装及配置使用详细步骤 ,需要的朋友可以参考下,希望能帮助到大家。

vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。

vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。

比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

1.1  安装

命令:

yum install vsftpd -y

配置Vsftpd

安装完之后我们要对它进行配置,才能正常使用。

编辑vsftpd的配置文件

 vi /etc/vsftpd/vsftpd.conf

在配置文件中找到“anonymous_enable=YES”,将”YES”改为”No”,将匿名登录禁用。

添加开机自动启动,

chkconfig vsftpd on

不确定是否已经加入了开机启动项可以运行chkconfig –list进行查看

1.2  创建用户

命令:useradd ftpuser

指定密码:passwd ftpuser

此用户就是用来登录ftp服务器用的。

这样一个用户建完,可以用这个登录,记得用普通登录不要用匿名了。登录后默认的路径为 /home/ftpuser.

———————————————————————————————————————————-

设置FTP用户的账号,例如账号为“ftpuser1”,目录为/home/ftpuser1,且设置不允许通过ssh登录。

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

设置账号对应的密码,例如密码为“ftpuser”

passwd ftpuser

1.3  开启selinux权限

VSFTPD是一个FTP服务器程序,然后SELinux是CentOS的防火墙组件。由于 vsftpd 默认被 SELinux 拦截,所以会遇到的FTP以下的问题:

1.226 Transfer done (but failed to open directory).(传输完成,但是打开路径失败)

2.550 Failed to change directory(更改路径失败)

3.
553 Could not create file.

4.

或者干脆在发送了LIST命令以后,服务器没响应,超时断开。

遇到这样的问题,通常是vsftpd 没有足够的权限,很有可能是被SELinux阻止了。

查看命令:getsebool -a | grep ftp

getsebool -a | grep ftpd#以下是显示出来的权限,off是关闭权限,on是打开权限allow_ftpd_anon_write --> offallow_ftpd_full_access --> offallow_ftpd_use_cifs --> offallow_ftpd_use_nfs --> offftpd_connect_db --> offftpd_use_passive_mode --> offftp_home_dir --> off

其中,ftp_home_dir和allow_ftpd_full_access必须为on 才能使vsftpd 具有访问ftp根目录,以及文件传输等权限。

      设置命令:setsebool -p xxxxxx on

[root@bogon ~]# setsebool -P allow_ftpd_full_access on[root@bogon ~]# setsebool -P ftp_home_dir on

1.4  设置或关闭防火墙

因为ftp默认的端口为21,而centos默认是没有开启的,所以要修改iptables文件

设置:vi /etc/sysconfig/iptables

在行上面有22 -j ACCEPT 下面另起一行输入跟那行差不多的,只是把22换成21,然后:wq保存。

还要运行下,重启iptables

重启:service iptables restart

关闭防火墙:service iptables stop

禁用防火墙重启:chkconfig iptables off

1.5  启动vsftpd

命令:service vsftpd start

  java客户端(代码)调用

package com.jonychen.util;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.net.SocketException;import java.util.Date;import java.util.UUID;import org.apache.commons.net.ftp.FTP;import org.apache.commons.net.ftp.FTPClient;public class FtpUploadUtil {  private static ThreadLocal threadLocal = new ThreadLocal();  private static ThreadLocal threadLocalHost = new ThreadLocal();  public static void init(String host,int port,String username,String password) throws SocketException, IOException {    FTPClient client = threadLocal.get();    if(client==null) {      client = new FTPClient();      //1.连接      client.connect(host,port);      //2.登录      client.login(username,password);      threadLocal.set(client);      threadLocalHost.set(host);    }  }  public static String upload(InputStream local,String fileName,String path) throws SocketException, IOException {    String datePath = DateUtil.date2Str(new Date(),"/yyyy/MM/dd/");    //路径添加日期    path+=datePath;    FTPClient client = threadLocal.get();    String host = threadLocalHost.get();    //3.指定文件上传路径(路径不存在返回false)    boolean exists = client.changeWorkingDirectory(path);    if(!exists) {      String pathArray[] = path.split("/");      String temp = "/";      for(String p:pathArray) {        temp+=(p+"/");        //4.如果文件路径不存在,则创建(一次只能创建一级目录)        client.makeDirectory(temp);      }      //重新指定文件上传路径      client.changeWorkingDirectory(path);    }    //5.指定文件类型    client.setFileType(FTP.BINARY_FILE_TYPE);    //获取后缀    String suffix = fileName.substring(fileName.lastIndexOf("."));    String uuid = UUID.randomUUID().toString();    //6.执行上传    client.storeFile(uuid+suffix, local);    //7.退出    client.logout();    //8.断开连接    client.disconnect();    threadLocalHost.remove();    threadLocal.remove();    return "http://"+host+"/jonychen"+datePath+uuid+suffix;  }  public static void main(String[] args) throws SocketException, IOException {    InputStream local = new FileInputStream("D:\Documents\Pictures\01.png");    init("192.168.178.161", 21, "ftpuser", "111111");     //上传路径    String res = upload(local, "code.png","/home/ftpuser/ego");    System.out.println(res);  }}

相关推荐:

Linux vsftpd连接报错:500 OOPS: vsftpd的解决办法详解

Linux下利用MySQL建立VSFTPD下的虚拟用户

vsftpd+MySQL创建虚拟用户在Debian Linux之下

以上就是linux下vsftpd的安装及配置介绍的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/183316.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上汽奥迪1月销量2800辆 同比增长38.1% A7L表现抢眼
上一篇 2026年9月3日 23:31:25
JS异步代码中try…catch失效:为什么我的try…catch块无法捕获异步函数中的异常?
下一篇 2026年9月3日 23:35:36

相关推荐

  • Reflection AI 完成 20 亿美元融资,打造“开放智能”

    美国人工智能初创企业 reflection ai 宣布成功募集 20 亿美元资金,其中英伟达领衔投资 8 亿美元,推动公司估值跃升至 80 亿美元。这家成立仅一年的科技新星,致力于打造“人人可及的前沿开放智能(open intelligence)”。 Reflection AI 表示,已集结一支由顶…

    2026年9月23日
    500
  • [272]如何把Python脚本导出为exe程序

    [272]如何把Python脚本导出为exe程序[272]如何把Python脚本导出为exe程序[272]如何把Python脚本导出为exe程序[272]如何把Python脚本导出为exe程序

    文章目录:一. PyInstaller简介二. PyInstaller在Windows下的安装三. 打包四. 小实例(Windows下) 附加:pyinstaller简介 PyInstaller能够将Python脚本打包成可执行程序,使得在没有Python环境的机器上也可以运行这些程序。 PyIns…

    2026年9月23日 用户投稿
    100
  • VSCode搭建Flutter开发环境(移动开发,完整配置指南)

    本文详细指导如何在VSCode中搭建高效的Flutter开发环境,包括安装JDK、配置JAVA_HOME、安装Android Studio并设置ANDROID_HOME、安装VSCode及Flutter和Dart插件、配置FLUTTER_HOME环境变量,通过flutter doctor检查并解决A…

    2026年9月23日
    100
  • 渗透测试|利用curl回传文件

    在处理低权限shell回传文件的问题时,如果无法使用scp命令且无法安装sshpass,可以考虑使用curl命令进行文件传输。以下是详细的伪原创内容: 至少我们曾经在一起过。 来自:一言 var xhr = new XMLHttpRequest();xhr.open(‘get’, ‘https://…

    2026年9月23日
    200
  • VSCode如何配置Scala开发环境 VSCode搭建Scala项目的完整教程

    首先安装jdk 11或17并正确配置java_home和path环境变量;2. 通过包管理器或官网安装sbt,用于项目构建与依赖管理;3. 在vscode中安装scala (metals)插件,以获得代码补全、错误检查等语言服务;4. 使用sbt new scala/scala-seed.g8创建项…

    2026年9月23日
    100
  • 无代码调整聚类热图分支顺序

    无代码调整聚类热图分支顺序无代码调整聚类热图分支顺序无代码调整聚类热图分支顺序无代码调整聚类热图分支顺序

    聚类热图的分支结构会因不同的聚类算法和距离计算方式而有所不同。在保持分支结构不变的前提下,我们有时需要调整热图分支的顺序,以满足特定的需求。这就是文章聚类热图如何按自己的意愿调整分支顺序的出发点。 现在,这种功能已经移植到BIC平台,具体操作如下: 使用之前的绘图数据: 采用默认的绘图参数: 生成的…

    2026年9月23日 用户投稿
    300
  • Java中ConnectException连接异常的解决方法

    答案:Java中ConnectException通常因服务未启动、网络不通或配置错误导致,需检查服务状态、IP端口配置及防火墙设置,并合理设置连接超时与重试机制。 Java中出现ConnectException通常表示应用程序尝试连接到远程服务器时失败,最常见的原因是目标主机拒绝连接或网络不通。这个…

    2026年9月23日
    200
  • VSCode高效配置Elixir:Phoenix框架、中文提示、模式匹配

    要高效配置vscode支持elixir开发,必须安装elixirls扩展并确保elixir和erlang环境正确;elixirls提供代码补全、跳转、格式化和调试功能,配合手动设置.heex、.leex文件关联为html可优化phoenix框架开发体验;通过安装中文语言包、设置files.encod…

    2026年9月23日
    100
  • 鸿蒙3.0将删除谷歌代码,只是为让国产系统更纯粹

    鸿蒙3.0将删除谷歌代码,只是为让国产系统更纯粹鸿蒙3.0将删除谷歌代码,只是为让国产系统更纯粹鸿蒙3.0将删除谷歌代码,只是为让国产系统更纯粹鸿蒙3.0将删除谷歌代码,只是为让国产系统更纯粹

    作为“聚光灯下诞生的国产系统”,华为鸿蒙系统自诞生之日起就引发了激烈的争论。尽管鸿蒙系统已升级至3.0版本,但关于“鸿蒙系统是否是安卓套壳”的讨论依然是焦点。不过,这可能并不是问题的核心。 鸿蒙系统是套壳吗?对于如今的国内科技企业来说,开发一个系统并不困难。然而,为什么最终存活下来的只有MIUI、F…

    2026年9月23日 用户投稿
    100
  • 分享一个服务器一键测试脚本

    superbench是一个测试linux服务器性能的脚本,让你快速方便了解一台服务器的综合性能,支持硬件基本信息、流媒体解锁检测、磁盘io检测、cpu性能测试、以及国内和国外网络测速、网络路由追踪。 以上就是分享一个服务器一键测试脚本的详细内容,更多请关注创想鸟其它相关文章!

    2026年9月22日
    200
  • Linus Torvalds 批评 Rust 代码格式化工具:称其“完全疯狂”

    近日,linux创始人linus torvalds在linux内核邮件列表中对rust语言的代码格式化工具rustfmt提出了尖锐批评,称其行为“完全疯狂”。 他提到,在Rust代码中,类似use crate::xyz;这样的导入语句,在经过自动格式化后经常被合并为一行,导致原本清晰的结构变得混乱,…

    用户投稿 2026年9月22日
    200
  • 解决TCPDF保存文件权限问题的完整指南

    本文旨在解决使用tcpdf在%ignore_a_1%中生成pdf并保存到服务器(’f’模式)时遇到的“permission denied”错误,尤其是在macos环境下。核心问题通常源于不正确的服务器文件路径或目标文件夹缺乏写入权限。教程将详细阐述如何构建正确的绝对文件路径,…

    2026年9月22日
    300
  • LINUX如何安全地关闭系统_LINUX正确的关机与重启命令

    使用shutdown命令可安全关机,如sudo shutdown -h now立即关机,或+5表示5分钟后关机,-c取消计划;2. poweroff立即断电;3. halt停止系统运行,加–poweroff关闭电源;4. reboot重启系统,也可用shutdown -r +3延迟重启;…

    2026年9月22日
    100
  • MySQL服务无法启动怎么办?常见解决方法

    MySQL服务无法启动怎么办?常见解决方法MySQL服务无法启动怎么办?常见解决方法MySQL服务无法启动怎么办?常见解决方法MySQL服务无法启动怎么办?常见解决方法

    mysql服务无法启动常见原因包括配置错误、端口占用、数据文件损坏或权限问题。解决方法如下:1. 查看错误日志,定位问题根源;2. 检查配置文件是否存在语法错误或路径问题;3. 确认端口(如3306)未被占用;4. 核查数据目录的权限与完整性;5. 必要时修复或重置数据目录,甚至重新安装mysql。…

    2026年9月22日 用户投稿
    100
  • Linux内核13-进程切换

    进程切换,也称为任务切换、上下文切换或任务调度,本文将探讨linux内核中进程切换的实现。我们首先理解几个关键概念。 1.1 硬件上下文 每个进程都有自己的地址空间,但所有进程共享CPU寄存器。因此,在恢复进程执行前,内核必须确保挂起时的寄存器值被重新加载到CPU寄存器中。 这些需要加载到CPU寄存…

    2026年9月22日
    300
  • 如何修改MySQL的默认端口号?

    如何修改MySQL的默认端口号?如何修改MySQL的默认端口号?如何修改MySQL的默认端口号?如何修改MySQL的默认端口号?

    修改mysql默认端口号需编辑配置文件,核心步骤为:1.定位my.cnf或my.ini文件;2.在[mysqld]段落中修改或添加port参数;3.保存后重启mysql服务。更改端口主要出于避免冲突、提升安全性和适应网络策略考虑。连接时需在客户端工具或代码中指定新端口,如命令行加-p参数、编程语言连…

    2026年9月22日 用户投稿
    1300
  • 在 Linux 中如何强制停止进程?kill 和 killall 命令有什么区别?

    在日常工作中,您可能会遇到两个用于在 linux 中强制结束程序的命令:kill和killall。虽然许多 linux 用户熟悉kill命令,但使用killall命令的人相对较少。尽管这两个命令名称相似且目的相同(终止进程),但它们在使用方式和效果上有显著区别。 那么,kill和killall之间有…

    2026年9月22日
    200
  • 如何设置Linux服务超时参数 systemd服务超时配置

    如何设置Linux服务超时参数 systemd服务超时配置如何设置Linux服务超时参数 systemd服务超时配置如何设置Linux服务超时参数 systemd服务超时配置如何设置Linux服务超时参数 systemd服务超时配置

    systemd服务超时参数调整方法包括:1.使用systemctl show查看timeoutstartsec、timeoutstopsec、timeoutsec字段获取当前配置;2.通过systemctl edit编辑unit文件设置timeoutstartsec、timeoutstopsec或t…

    2026年9月22日 用户投稿
    100
  • 如何设置Linux用户会话超时 TMOUT环境变量详细配置

    如何设置Linux用户会话超时 TMOUT环境变量详细配置如何设置Linux用户会话超时 TMOUT环境变量详细配置如何设置Linux用户会话超时 TMOUT环境变量详细配置如何设置Linux用户会话超时 TMOUT环境变量详细配置

    tmout是bash shell用于设置用户会话超时的环境变量,单位为秒,常用方法包括:1. 临时设置通过执行export tmout=300仅对当前终端生效;2. 全局设置在/etc/profile中添加export tmout=600需root权限并执行source生效;3. 针对特定用户修改其…

    2026年9月22日 用户投稿
    000
  • LINUX怎么查看哪个进程占用了某个端口_LINUX端口占用查询方法

    使用ss或lsof命令可快速查看端口占用情况,如sudo ss -tulnp | grep :端口号或sudo lsof -i :端口号,结合PID进一步通过ps或/proc文件系统定位进程详情。 在Linux系统中,查看某个端口被哪个进程占用,常用的方法是使用命令行工具结合网络和进程信息进行查询。…

    2026年9月22日
    000

发表回复

登录后才能评论
关注微信