【centos】【vsftpd】本地用户登录配置

目录

    • 安装vsftpd和ftp
    • 本地用户登录-不限制访问目录
    • 本地用户登录-限制访问目录
    • 有可能影响连接的问题
      • pam认证
      • selinux策略
      • 被动模式
      • 防火墙
      • ipv4和ipv6
    • 报错
      • 1、 530 Login incorrect
      • 2、500 OOPS: vsftpd: refusing to run with writable root inside chroot()
      • 3、227 Entering Passive Mode (10,1,58,5,242,166). ftp: connect: 没有到主机的路由
      • 4、425 Failed to establish connection. Error EElFTPSError: Control channel transfer error 114690

安装vsftpd和ftp

  1. ftp用于测试
    yum install -y vsftpd* ftp*
    
  2. 启动
    systemctl start vsftpd
    
  3. 防火墙开放21端口
    firewall-cmd --zone=public --add-port=21/tcp --permanent
    firewall-cmd --reload
    firewall-cmd --zone=public --list-ports
    
  4. 测试
    systemctl status vsftpd
    netstat -ntlp | grep vsftpd
    ftp XX.XX.XX.XX
    
    默认配置下,匿名用户登录,密码为空
    在这里插入图片描述

本地用户登录-不限制访问目录

不可匿名登录
禁止其他用户访问
仅本地用户ftpuser可访问
默认访问目录/home/ftpuser
可访问其他目录

  1. 新增本地用户ftpuser

    useradd -d /home/ftpuser -s /bin/bash ftpuser
    passwd ftpuser
    
  2. 修改配置
    /etc/vsftpd/vsftpd.conf默认配置如下

    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    

    修改后

    anonymous_enable=NO #禁止匿名用户登录服务器
    local_enable=YES #允许本地用户登录服务器
    write_enable=YES #允许写操作
    local_umask=022 
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES# YES,user_list用户为黑名单,禁止登录;NO则为白名单,可登录
    userlist_deny=YES
    # chroot_list本地用户可登录ftp名单,且本地用户需要在/etc/shells范围内或者修改/etc/pam.d/vsftpd的pam限制
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    # 设置根目录可写
    allow_writeable_chroot=YES
  3. /etc/vsftpd/下新建chroot_list文件,然后写入本地用户ftpuser,一行代表一个用户

  4. 重启systemctl restart vsftpd

  5. 本机测试ftp XX.XX.XX.XX 成功

本地用户登录-限制访问目录

不可匿名登录
禁止其他用户访问
仅本地用户ftptest可访问
仅可访问目录/var/ftp

  1. 新增本地用户ftptest
    useradd -d /var/ftp -s /sbin/nologin ftptest
    passwd ftptest
    chmod -R 777 /var/ftp
    
  2. 修改/etc/pam.d/vsftpd,使用户可通过pam验证
    [root@localhost vsftpd]# vi /etc/pam.d/vsftpd#%PAM-1.0session    optional     pam_keyinit.so    force revokeauth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed#auth       required     pam_shells.soauth       include      password-authaccount    include      password-authsession    required     pam_loginuid.sosession    include      password-auth
    
  3. 修改配置
    anonymous_enable=NO #禁止匿名用户登录服务器
    local_enable=YES #允许本地用户登录服务器
    write_enable=YES #允许写操作
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES# YES,user_list用户为黑名单,禁止登录;NO则为白名单,可登录
    userlist_deny=YES
    # 限制访问目录本地用户仅可访问/var/ftp
    chroot_local_user=YES
    local_root=/var/ftp
    # 设置根目录可写
    allow_writeable_chroot=YES
    
  4. 重启systemctl restart vsftpd
  5. 本机测试ftp XX.XX.XX.XX 成功

有可能影响连接的问题

pam认证

可根据情况注释

  • auth required pam_shells.so: 仅允许用户的shell是 /etc/shells文件内的shell,才能登录
  • auth required pam_listfile.so:/etc/ftpusers 中的用户禁止登陆
# cat /etc/pam.d/vsftpd
#%PAM-1.0
session    optional     pam_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       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

selinux策略

安全增强模块,根据情况修改

  • ftpd_full_access :影响创建新目录等
  • tftp_home_dir:影响ftp根目录访问等
setsebool -P tftp_home_dir 1
setsebool -P ftpd_full_access 1
systemctl restart vsftpd
# sestatus -b | grep ftp
ftpd_anon_write                             off
ftpd_connect_all_unreserved                 off
ftpd_connect_db                             off
ftpd_full_access                            on
ftpd_use_cifs                               off
ftpd_use_fusefs                             off
ftpd_use_nfs                                off
ftpd_use_passive_mode                       off
httpd_can_connect_ftp                       off
httpd_enable_ftp_server                     off
tftp_anon_write                             off
tftp_home_dir                               on

被动模式

pasv_enable=YES
pasv_min_port=31000
pasv_max_port=31999

防火墙

firewall-cmd --zone=public --add-port=31000-31999/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports

ipv4和ipv6

默认ipv6,可修改为ipv4配置

listen=YES
listen_ipv6=NO

报错

1、 530 Login incorrect

  • 确认用户账密无误

  • 网上的pam_service_name=vsftpd方法无效

  • 查看/etc/pam.d/vsftpd文件,对以下两条要求进行排查,我的用户是/sbin/nologin,不在/etc/shells范围内。

    • auth required pam_shells.so: 仅允许用户的shell是 /etc/shells文件内的shell,才能登录
    • auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed:/etc/ftpusers 中的用户禁止登陆
    [root@localhost vsftpd]# cat /etc/pam.d/vsftpd
    #%PAM-1.0
    session    optional     pam_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       include      password-auth
    account    include      password-auth
    session    required     pam_loginuid.so
    session    include      password-auth
    [root@localhost vsftpd]# cat /etc/shells
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash
    
    • 方案一:可以修改/etc/pam.d/vsftpd注释掉 auth required pam_shells.so
    • 方案二:修改用户登录属性,usermod -s /bin/bash ftptest
  • 重启验证,该报错解决,但登录时出现先报错500 OOPS: vsftpd: refusing to run with writable root inside chroot(),见下条

2、500 OOPS: vsftpd: refusing to run with writable root inside chroot()

原因:安装的最新版本,增加了对配置错误的强制检查,要求根目录不可写

Add stronger checks for the configuration error of running with a
writeable root directory inside a chroot(). This may bite people who
carelessly turned on chroot_local_user but such is life.

  • 方案一:配置文件设置allow_writeable_chroot=YES
  • 方案二:设置ftptest用户根目录不可写chmod a-w ftptest

3、227 Entering Passive Mode (10,1,58,5,242,166). ftp: connect: 没有到主机的路由

描述:本机ftp测试没问题;内网其他服务器ftp登陆成功,但执行ls等命令报错
原因:被动模式端口问题

  • 方案一:登录后,输入passive,关掉被动模式
    ftp> passive
    Passive mode off.
    ftp> ls
    200 PORT command successful. Consider using PASV.
    150 Here comes the directory listing.
    drwxrwxrwx    2 0        0               6 Jun 09  2021 pub
    drwxr-xr-x    2 1001     1001            6 Feb 20 06:05 test
    226 Directory send OK.
    
  • 方案二:配置文件设置被动模式,并开放防火墙端口31000-31999
    配置
    pasv_enable=YES
    pasv_min_port=31000
    pasv_max_port=31999
    
    防火墙
    firewall-cmd --zone=public --add-port=31000-31999/tcp --permanent
    firewall-cmd --reload
    firewall-cmd --zone=public --list-ports
    

4、425 Failed to establish connection. Error EElFTPSError: Control channel transfer error 114690

描述:内网正常,外网登陆成功但执行其他命令失败
原因:防火墙添加端口后,未firewall-cmd --reload使其生效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/693566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Avue实现批量删除等功能(附Demo)

目录 前言1. 公共逻辑2. 单个删除3. 批量删除 前言 由于近期慢慢转全栈,后续会以前后端的形式讲解 对应的Avue相关知识推荐阅读:【vue】avue-crud表单属性配置(表格以及列)对应后端知识推荐阅读:java框架 零基础从入…

Leetcode刷题笔记题解(C++):83. 删除排序链表中的重复元素

思路:链表相关的问题建议就是画图去解决,虽然理解起来很容易,但就是写代码写不出来有时候,依次去遍历第二节点如果与前一个节点相等则跳过,不相等则遍历第三个节点 /*** Definition for singly-linked list.* struct …

顺序表漫谈

目录 ​编辑 1.线性表 2.顺序表 2.1概念及结构 2.2接口实现 1.顺序表的动态存储 2.顺序表初始化 3.顺序表销毁 4.顺序表增容 5.顺序表头插 6.顺序表尾插 7.顺序表头删 8.顺序表尾删 9.顺序表打印 10.顺序表在任意下标位置插入数据 11.顺序表删除任意下标位置的值…

C++11多线程: mutex(互斥元)

文章目录 mutex(互斥元)案例 1案例2 lock_guard()案例2的优化 由C标准提供的保护共享数据的最基本机制是:互斥元 (mutex 全称为: mutual exclusive) 在访问共享数据前, 锁定( lock)与该数据相关的互斥元&#xff0c…

Aspose.Words For JAVA 动态制作多维度表格(涵2024最新无水印包)

全网最全Aspose.Words For JAVA 高级使用教程: CSDNhttps://blog.csdn.net/LiHaoHang6/article/details/133989664?spm1001.2014.3001.5501 运行截图: 所谓多维度表格通常包含多个维度, 每个维度都代表一种数据属性,多维度表格可以用于数据分析,通过不…

【洛谷 P8780】[蓝桥杯 2022 省 B] 刷题统计 题解(贪心算法+模拟+四则运算)

[蓝桥杯 2022 省 B] 刷题统计 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a a a 道题目,周六和周日每天做 b b b 道题目。请你帮小明计算,按照计划他将在第几天实现做题数大于等于 n n n 题? 输入格式 输入一…

【AIGC】OpenAI推出王炸级模型sora,颠覆AI视频行业

文章目录 强烈推荐前言什么是OpenAI Sora?工作原理:算法原理:应用场景展望与其他视频生成模型相比有哪些优势和不足?优点缺点 总结强烈推荐专栏集锦写在最后 强烈推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易…

数据仓库概念梳理

数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。 数据仓库是分析…

初入职场的你,为何频繁跳槽?

大数据统计,初入职场的人跳槽频率相当高,而对于工作了2~3年的来说,跳槽频率也就没有那么频繁了,是什么原因导致了频繁跳槽?如何避免频繁跳槽呢? 是什么原因导致了跳槽? 不适应 从学校毕业&…

【算法与数据结构】200、695、LeetCode岛屿数量(深搜+广搜) 岛屿的最大面积

文章目录 一、200、岛屿数量1.1 深度优先搜索DFS1.2 广度优先搜索BFS 二、695、岛屿的最大面积2.1 深度优先搜索DFS2.2 广度优先搜索BFS 三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、200、岛屿数量 1.1 深度优先搜…

Redis篇----第十一篇

系列文章目录 文章目录 系列文章目录前言一、Redis 如何做内存优化?二、Redis 回收进程如何工作的?三、都有哪些办法可以降低 Redis 的内存使用情况呢?四、Redis 的内存用完了会发生什么?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

【前端素材】推荐优质后台管理系统Symox模板(适用电商,附带源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具,它通常作为一个独立的后台界面存在,供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能: 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

【算法与数据结构】1020、LeetCode飞地的数量

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:   程序如下: 复杂度分析: 时间复杂度: O ( ) O() O()。空间复杂…

快速清理_卸载docker_找到不用的进程_centos磁盘爆满_清理磁盘---Linux工作笔记071

查看大文件,并且按照大小排名 cd / | du -h |sort -hr|head -30 可以看到根据不用的结果进行删除 可以看到在/data/dict目录很大,里面的都可以删除 然后再去卸载docker,要不然,没有磁盘是卸载不了的 systemctl stop docker systemctl stop docker.socket yum remove docker-…

【2024上半年数学建模推荐】2024年第九届数维杯大学生数学建模挑战赛报名通知

2024上半年数模人必打的数学建模竞赛:数维杯全国大学生数学建模挑战赛已经开始报名。 赛题难度:四颗星 含金量:国家级二类 参赛对象:在校专科、本科、研究生 推荐理由:获奖率高,赛题难度比国赛略微简单…

Qt _day1

1.思维导图 2.设计一个简单登录界面 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->setWindowTitle("原神启动"); // this->setStyleSheet("background-color:rgb(255,184,64)");this->setStyl…

XSS攻击原理与解决方法

参考: web安全之XSS攻击原理及防范_xss攻击原理与解决方法-CSDN博客 跨站脚本攻击(XSS)分类介绍及解决办法_反射型跨站脚本解决方案-CSDN博客 一、概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏…

【竞技宝】DOTA2-喀山:莫言帕克毁天灭地 IG让一追二力克Neon

北京时间2024年2月21日,喀山未来运动会DOTA2项目在昨天迎来第二个比赛日。本日第二轮第二场比赛由IG对阵Neon。本场比赛两队在前两局各取一胜,决胜局IG的防守反击多次击溃Neon,最终IG让一追二击败Neon。以下是本场比赛的详细战报。 第一局: 首局比赛,IG在天辉方,Neon在夜魇方。…

算法项目(2)—— LSTM、RNN、GRU(SE注意力)、卡尔曼轨迹预测

本文包含什么? 项目运行的方式(包教会)项目代码LSTM、RNN、GRU(SE注意力)、卡尔曼四种算法进行轨迹预测.各种效果图运行有问题? csdn上后台随时售后.项目说明 本文实现了三种深度学习算法加传统算法卡尔曼滤波进行轨迹预测, 预测效果图 首先看下不同模型的指标: 模型RM…

unity学习(33)——角色选取界面(原版)

10ARPG网络游戏编程实践(十):角色选择UI及创建面板制作(一)(流畅)_哔哩哔哩_bilibili 角色选择界面教程中是这样的!(这个美工肯定是不能拿出去卖的,但是是有…