失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 阿里云搭建FTP服务器

阿里云搭建FTP服务器

时间:2023-06-25 02:37:46

相关推荐

阿里云搭建FTP服务器

阿里云搭建 FTP 服务器

前置条件

阿里云服务器vsftpd(介绍)

安装与配置

安装

yum install -y vsftpd

进入文件夹

cd /etc/vsftpd/

vsftpd.conf是核心配置文件ftpusers是黑名单文件,此文件里的用户不允许访问 FTP 服务器user_list是白名单文件,是允许访问 FTP 服务器的用户列表

常用配置

#允许匿名用户登录FTPanonymous_enable=YES#设置匿名用户的登录目录(如需要,需自己添加并修改)anon_root=/var/ftp/pub#打开匿名用户的上传权限anon_upload_enable=YES#打开匿名用户创建目录的权限anon_mkdir_write_enable=YES#打开匿名用户删除和重命名的权限(如需要,需自己添加)anon_other_write_enable=YES#匿名用户的掩码(如需要,需自己添加,含义:如umask是022,这时创建一个权限为666的文件,文件的实际权限为666-022=644)anon_umask=022

vsftpd安装后默认开启了匿名 FTP 的功能,使用匿名 FTP,用户无需输入用户名密码即可登录 >FTP 服务器,但没有权限修改或上传文件

配置匿名用户上传文件权限

在此之前我们先复制一份配置文件如下:

cat vsftpd.conf |grep -v "#" | grep -v "^$" > vsftpd.conf1

在重命名一下,这样做的原因是把没有注释的成为主配置来使用

mv vsftpd.conf vsftpd.conf2mv vsftpd.conf1 vsftpd.conf

修改 vsftpd.conf 的配置文件的选项,可以赋予匿名 FTP 更多的权限。

vim /etc/vsftpd/vsftpd.conf

# 是否禁止匿名登录anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YES# 是否允许登录用户的写入操作allow_writeable_chroot=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES# 是否关闭passive的安全检测pasv_promiscuous=YESpasv_enable=YESpasv_min_port=30000pasv_max_port=30999

运行以下命令更改/var/ftp/pub目录的权限,为FTP用户添加写权限,并重新加载配置文件

chown root /var/ftpchmod o+w /var/ftp/pub/systemctl restart vsftpd.service

配置本地用户登录

本地用户登录就是指用户使用 Linux 操作系统中的用户账号和密码登录 FTP 服务器

可在 ftpuser(黑名单)和 userlist(白名单)中添加用户

vsftpd 安装后默只支持匿名 FTP 登录,用户如果试图使用 Linux 操作系统中的账号登录服务器,将会被 vsftpd 拒绝,但可以在 vsftpd 里配置用户账号和密码登录。具体步骤如下:

cd /var/ftp/pub/useradd test1passwd test1

添加test1本地帐户,下面是用业查询本地帐号,及黑名单

cat /etc/passwd

vi /etc/vsftpd/ftpusers

vi /etc/vsftpd/user_list

Windows FTP 来登录及测试

在用Windows连接前我们先做几个配置:

服务器就可以把安全组放开21端口,不是服务器也要放开 21端口那就先执行以下命令

firewall-cmd --zone=public --add-port=21/tcp --permanentfirewall-cmd --zone=public --permanent --add-port=30000-30999/tcpfirewall-cmd --reload

坚信vsftp安装后不对/etc/vsftpd/vsftpd.conf做任何修改就可以通过新建的Linux用户(本地用户)访问下载和上传文件

匿名用户配置

修改配置文件

vim /etc/vsftpd/vsftpd.conf

# 是否禁止匿名登录anonymous_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YES# 是否允许登录用户的写入操作allow_writeable_chroot=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES# 是否关闭passive的安全检测pasv_promiscuous=YESpasv_enable=YESpasv_min_port=30000pasv_max_port=30999

重启服务器

systemctl restart vsftpd

touch /var/ftp/pub/xm.txtchown ftp /var/ftp/pub

服务器配置上面的就可以访问并上传文件到pub目录下

虚拟用户配置

1、添加虚拟用户口令文件并生成认证文件

vim /etc/vsftpd/vuser.txt

文件格式:用户名和密码分别占两行,用户名在前。

添加虚拟用户tom和jack,密码分别为 tom123 和 jack123。

tomtom123jackjack123

下载依赖和配置

yum -y install db4-utilsdb_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

2、编辑vsftpd的PAM认证文件

vim /etc/pam.d/vsftpd

#%PAM-1.0#session optionalpam_keyinit.so force revoke#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed#auth required pam_shells.so#auth includepassword-auth#account includepassword-auth#session requiredpam_loginuid.so#session includepassword-authauth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuseraccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

3、建立本地映射用户并设置宿主目录权限

useradd -d /home/vftproot -s /sbin/nologin vuserchmod 600 /home/vftproot/

4、修改配置文件,重启vsftpd服务,并测试

vi /etc/vsftpd/vsftpd.conf

把你之前的删除,只留现在我的

# 是否禁止匿名登录anonymous_enable=NOanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES# 是否允许登录用户的写入操作allow_writeable_chroot=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YES# 是否关闭passive的安全检测pasv_promiscuous=YESpasv_enable=YESpasv_min_port=30000pasv_max_port=30999##guest_enable=YESguest_username=vuser

重启服务器

systemctl restart vsftpd.service

5、调整虚拟用户权限,并继续设置:到此下载可以但上传是不是行的

mkdir /home/vftproot/pubchmod 777 /home/vftproot/publl -d /home//vftproot/pub

常用命令

/vsftpd_conf.html

# 设置是否允许匿名用户登录anonymous_enable=NO# 匿名用户登录目录anon_root=/home/anonymitys/# 用户只读配置# 设置 NO 表示用户可以浏览 FTP 目录和下载文件anon_world_readable_only=NO# 设置是否允许本地用户登录local_enable=YES# 设置本地用户目录(因为是映射到另一个用户配置目录,所以这里暂时不需要指定目录)local_root=/home/locals/robotlab# NO 不允许下载#download_enable=NO# 不同用户不同权限,将不同用户不同权限的配置映射到其他目录下的文件去配置#user_config_dir=/etc/vsftpd_user_conf# 是否允许本地用户对FTP服务器文件具有写权限,默认设置为YES允许# 因为具体的是否有此权限调整到/etc/vsftpd_user_conf配置了,所以这里注释掉,不打开#write_enable=YES# 掩码,本地用户掩码默认为777,也可直接设置为缺省的022local_umask=022# 匿名用户是否允许上传,须将全局的write_enable=YES。默认为YESanon_upload_enable=NO# 是否允许匿名用户创建新文件夹#anon_mkdir_write_enable=YES###dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YES#chown_uploads=YES#chown_username=whoever#xferlog_file=/var/log/xferlogxferlog_std_format=YES#idle_session_timeout=600#data_connection_timeout=120#nopriv_user=ftpsecure#async_abor_enable=YES#### 是否以ASCII方式传输数据。默认情况下,服务器会忽略ASCII方式的请求。# 启用此选项将允许服务器以ASCII方式传输数据#ascii_upload_enable=YES#ascii_download_enable=YES####ftpd_banner=Welcome to blah FTP service.#deny_email_enable=YES#banned_email_file=/etc/vsftpd/banned_emails#### 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为 NO。chroot_local_user=YES# 设置是否启用 chroot_list_file 配置项指定的用户列表文件。默认值为 NO。chroot_list_enable=NO# 用于指定用户列表文件,该文件用于控制哪些用户 可以 切换到用户家目录的 上级目录。#chroot_list_file=/etc/vsftpd/chroot_list############################ 注:#(1)当chroot_local_user=YES,chroot_list_enable=YES 时,在 /etc/vsftpd.chroot_list 文件中#列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。#(2)当 chroot_local_user=NO,chroot_list_enable=YES 时,在 /etc/vsftpd.chroot_list 文件中#列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。# !!(3)当 chroot_local_user=YES, chroot_list_enable=NO 时,所有的用户均不能切换到其他目录。#(4)当 chroot_local_user=NO, chroot_list_enable=NO 时,所有的用户均可以切换到其他目录。############################ls_recurse_enable=YES# 是否允许监听。# 如果设置为YES,则vsftpd将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求listen=YES# 设定是否支持IPV6。如要同时监听IPv4和IPv6端口,# 则必须运行两套vsftpd,采用两套配置文件# 同时确保其中有一个监听选项是被注释掉的#listen_ipv6=YES# 虚拟用户使用 PAM 认证方式pam_service_name=vsftpd####控制用户访问 FTP 的文件,里面写着用户名称。一个用户名称一行。(用 userlist 来限制用户访问)userlist_enable=YES# 名单中的人不允许访问# userlist_deny=no # 限制名单文件放置的路径# userlist_file=/etc/vsftpd/userlist_deny.chroottcp_wrappers=YES# 若设置为 YES,则使用 PASV 工作模式(被动模式);若设置为 NO,则使用 PORT 模式。默认值为 YES,即使用 PASV 工作模式。pasv_enable=YES# 设置 FTP 服务器在指定的 IP 地址上侦听用户的 FTP 请求。pasv_address=<ip地址># 在 PASV 工作模式下,数据连接可以使用的端口范围的最小端口和最大端口,0表示任意端口。默认值为 0。pasv_min_port=<最小端口号>pasv_max_port=<最大端口号>#500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误时添加# 从 2.3.5 之后,vsftpd 增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!# 如果检查发现还有写权限,就会报该错误。# 要修复这个错误,可以用命令 chmod a-w /home/dgut 去除用户主目录的写权限,注意把目录替换成你自己的;# 或者可以在 vsftpd 的配置文件中增加下列项,将值设置为 YESallow_writeable_chroot=YES

idea连接ftp

<!-- 在maven工程 pom中导入 --><!--工具包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.21</version></dependency><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency><!----><dependency><groupId>ant</groupId><artifactId>ant-jakarta-oro</artifactId><version>1.6.1</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.15</version></dependency>

Java 代码开始了

public class updateHootlFtp {public static void main(String[] args) throws IOException {insertFile("远程文件夹目录","test.txt");} /*** @param directory 远程目录的位置* @param winFilePath 本地文件名称* @throws IOException*/public static void insertFile(String directory,String winFilePath) throws IOException {//匿名登录(无需帐号密码的FTP服务器)//Ftp ftp = new Ftp("远程host", 服务端口号, "远程登录用户", "远程登录密码",Charset.forName("utf-8"));Ftp ftp = new Ftp("远程host", 21, "远程登录用户", "远程登录密码",Charset.forName("utf-8"));try {//启动被动模式ftp.setMode(FtpMode.Passive);//进入远程目录ftp.cd("/root/img/");//上传本地文件boolean flag = ftp.upload("/root/img/", FileUtil.file("E:\\Test\\"+winFilePath));System.err.println( flag ? "上传成功" : "上传失败!!");} catch (Exception e) {e.printStackTrace();} finally {//关闭连接ftp.close();}}}

idea查询本地文件夹中的文件

public class WinFile {public static void main(String[] args) {//输入一个路径String path = "E:\\Game\\test";getFile(path);System.out.println("统计完毕");}private static void getFile(String path) {File f = new File(path);File[] fs = f.listFiles();if (fs == null) {return;}for (File file : fs) {//将统计的文件的字节数(单位:B) 方便计算大小if (file.isFile()) {System.out.println("文件名:" + file.getName() + ",文件大小是:" + file.length());} else {getFile(file.getAbsolutePath());}}}}

# 完成

参考文献

命令详解: /qq_57258570/article/details/121605842

FTP连接时出现“227 Entering Passive Mode”:/bkywanly/p/9767246.html

CentOS7服务器环境下vsftpd安装及配置方法:/news/posts/65516.html

vsftpd 配置文件超详细讲解(常用参数配置):/Awwwze/article/details/109405632

227 Entering Passive Mod:/whnba/1619597

虚拟用户:/owenxiaobai/article/details/128441281

如果觉得《阿里云搭建FTP服务器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。