拓扑园

  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • 技术研究-密保
    • FG-MySQL
    • FG-Docker/K8S
    • FG-PostgreSQL
    • FG-ORACLE_BBED
    • FG-ORACLE
    • FG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 图灵小队
    • MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • PG安装配置于RHEL/9X系列-运行环境最优配置
    • 自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • 图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • 图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • 图灵小队-Oracle常用性能查询SQL语句(文章)
    • 图灵小队-Oracle数据库上线前检查(文章)
    • 图灵小队-Oracle常用SQL语句(文章)
    • 图灵小队-Oracle脚本合集(文章)
    • 图灵小队-Oracle技巧记录(文章)
    • LLL的Oracle培训(目录)
    • LLL的docker培训(目录)
    • 标准化文档系列(目录)
    • Oracle/MySQl等面试题
    • 图灵小队
  • Oracle
    • Oracle
    • ADG
    • RAC
    • ASM
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
    • OGG
    • RMAN
  • 云计算
    • 云计算
    • docker
    • kubernetes
  • Linux
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 数据中心
    • EBS数据文件库容
    • VMware虚拟化
    • mysql
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
Oracle数据库恢复专家团队:TEL:18562510581(微信同号);QQ:284833194;QQ群:496333360
天高任鸟飞
  1. 首页
  2. Linux
  3. 正文

Linux vsftpd基础安装与部署

2020年5月7日 432点热度 0人点赞 0条评论

目录

  • 一、问题排查:
    • 1、vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法
    • 2、关于ftp连接出现"226 transfer done but failed to open directory"或550.500错误
  • 二、vsftpd(very secure FTP daemon)介绍
  • 三、安装并配置vsftpd服务
    • 1、安装
    • 2、创建用户及组:
    • 3、配置用户密码:
    • 4、创建访问目录
    • 5、配置参数
    • 6、配置chroot_list,里面写入随便的值,注释即可
    • 7、关闭selinux和firewalld
    • 8、打开vsftp服务
    • 9、使用ftp软件访问测试
  • 四、vsftpd的配置文件及详解
    • 1、vsftpd 的配置文件在为 vsftpd.conf,默认在 /etc/vsftpd/ 目录下。
  • 五、目录控制优先级解析
    • 1、未配置user_config_dir的情况
    • 2、oracle用户在chroot_list_file中不存在,则受chroot的主目录限制规则,强制限定主目录
    • 2、配置了user_config_dir的情况
  • 六、为每个系统用户配置各自的 ftp 根目录
    • 1、统一的根目录,只需要配置:local_root=/var/ftp/pub
    • 2、为每个系统用户配置各自的根目录,需要开启chroot功能,配置user_config_dir目录
  • 七、创建本地用户:
    • 1、用户创建(非系统用户)
    • 2、设置密码
    • 3、配置chroot_list,增加ftptest
  • 八、配置文件:

一、问题排查:

1、vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()错误的解决方法

2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:

allow_writeable_chroot=YES

2、关于ftp连接出现"226 transfer done but failed to open directory"或550.500错误

发现可能是selinux的安全机制导致
(1)修改/etc/selinux/config配置文件项SELINUX=disabled禁用selinux
(2)设置为临时并立即生效,setenforce 0

二、vsftpd(very secure FTP daemon)介绍

vsftpd 是 UNIX 操作系统中的一个开源的、免费的 FTP 服务软件。它具有以下特点:

1、安全性高,轻小易用
2、支持系统用户、匿名用户和虚拟用户的权限验证和相关操作,但无论哪种用户,最终都会映射为一个对应的 系统用户
3、用户认证是基于 PAM 实现的

三、安装并配置vsftpd服务

1、安装

[root@localhost pam.d]# yum install vsftpd -y

2、创建用户及组:

[root@yczbora vsftpd]# groupadd -g 40001 ftpgroup
[root@yczbora vsftpd]# useradd -u 41001 -g ftpgroup ftptest

3、配置用户密码:

[root@yczbora vsftpd]#passwd ftptest

密码:ftptest

4、创建访问目录

[root@yczbora vsftpd]# mkdir -p /backup/ftptest
[root@yczbora vsftpd]# chown ftptest:ftpgroup /backup/ftptest/

5、配置参数

vi /etc/vsftpd/vsftpd.conf

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
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
local_root=/backup/ftptest
allow_writeable_chroot=YES
#user_config_dir=/backup/ftptest
listen=NO
listen_ipv6=YES
reverse_lookup_enable=no
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

6、配置chroot_list,里面写入随便的值,注释即可

[root@ebsuat vsftpd]# vi /etc/vsftpd/chroot_list 
#test

7、关闭selinux和firewalld

8、打开vsftp服务

[root@ebsuat vsftpd]# systemctl start  vsftpd

9、使用ftp软件访问测试

四、vsftpd的配置文件及详解

1、vsftpd 的配置文件在为 vsftpd.conf,默认在 /etc/vsftpd/ 目录下。

属性                          属性值      含义
anonymous_enable             YES/NO      是否允许匿名用户(anonymous)登录 FTP,如果该设置被注释,则默认允许
local_enable                 YES/NO      是否允许本地系统用户登录
write_enable                 YES/NO      是否开启任何形式的 FTP 写入命令,上传文件
local_umask                  022         本地用户的 umask 设置,如果注释该设置则默认为 077,但一般都设置成 022
anon_upload_enable           YES/NO      是否允许匿名用户上传文件【前提是anonymous_enable要开启】,如果要设置为允许,则需要先开启 write_enable,否则无效,此外对应目录还要具有写权限【默认是/var/ftp/pub目录】
anon_mkdir_write_enable      YES/NO      是否允许匿名用户创建新目录【前提是anonymous_enable要开启】
dirmessage_enable            YES/NO      当进入某个目录时,发送信息提示给远程用户
xferlog_enable               YES/NO      是否开启 上传/下载 的日志记录
connect_from_port_20         YES/NO      是否使用 20 端口来连接 FTP
chown_uploads                YES/NO      匿名上传的文件是否由某一指定用户 chown_username 所有
chown_username               有效用户名   匿名上传的文件由该设定用户所有
xferlog_file                 有效路径     设置日志文件的保存位置,默认为 /var/log/xferlog
xferlog_std_format           YES/NO      是否使用标准的 ftpd xferlog日志格式,该格式日志默认保存在 /var/log/xferlog
idle_session_timeout         数值        设置空闲连接的超时时间,单位 秒
data_connection_timeout      数值        设置等待数据传输的最大时间,单位 秒(data_connection_timeout 与 idle_session_timeout 在同一时间只有一个有效)
nopriv_user                  有效用户名   指定一个非特权用户,用于运行 vsftpd
async_abor_enable            YES/NO      是否支持异步 ABOR 请求
ascii_upload_enable          YES/NO      是否开启 ASCII 模式进行文件上传,一般不开启
ascii_download_enable        YES/NO      是否开启 ASCII 模式进行文件下载,一般不开启
ftpd_banner                  …           自定义登录标语[如:'Welcome to LLL's FTP service.']
deny_email_enable            YES/NO      如果匿名登录,则会要求输入 email 地址,如果不希望一些 email 地址具有登录权限,则可以开启此项,并在 banned_email_file 指定的文件中写入对应的 email 地址
banned_email_file            有效文件     当开启 deny_email_enable 时,需要通过此项指定一个保存登录无效 email 的文件
chroot_local_user            YES/NO      是否将所有用户限制在主目录,当为 NO 时, FTP 用户可以切换到其他目录
chroot_list_enable           YES/NO      是否启用限制用户的名单列表
chroot_list_file             有效文件     用户列表,其作用与 chroot_local_user 和 chroot_list_enable 的组合有关,详见下表
allow_writeable_chroot       YES/NO      是否允许用户对 ftp 根目录具有写权限,如果设置成不允许而目录实际上却具备写权限,则会报错
ls_recurse_enable            YES/NO      是否允许 ls -R 指令来递归查询,递归查询比较耗资源
listen                       YES/NO      如果为 YES,vsftpd 将以独立模式运行并监听 IPv4 的套接字,处理相关连接请求(该指令不能与 listen_ipv6 一起使用)
listen_ipv6                  YES/NO      是否允许监听 IPv6 套接字
pam_service_name             …           设置 PAM 外挂模块提供的认证服务所使用的配置文件名 ,即 /etc/pam.d/vsftpd 文件,此文件中 file=/etc/vsftpd/ftpusers 字段,说明了 PAM 模块能抵挡的帐号内容来自文件 /etc/vsftpd/ftpusers 中
userlist_enable              YES/NO      是否启用 user_list 文件来控制用户登录【和pam模块相同功能,可以同时开启】
userlist_deny                YES/NO      是否拒绝 user_list 中的用户登录,此属性设置需在 userlist_enable = YES 时才有效
tcp_wrappers                 YES/NO      是否使用 tcp_wrappers 作为主机访问控制方式
max_clients                  数值         同一时间允许的最大连接数
max_per_ip                   数值         同一个IP客户端连接的最大值
local_root                   有效目录     系统用户登录后的根目录,可以指定任意位置,如果不指定,则会到自己的/home/家目录下
anon_root                    有效目录     匿名用户登录后的根目录
user_config_dir              有效目录     用户单独配置文件存放目录,该目录下用户的文件名就是对应用户名
reverse_lookup_enable=no                 有效解决用户登录慢的问题,vsftp的配置文件默认开启了DNS反向解析,设置为no即可快速登录

chroot_local_user 和 chroot_list_enable 组合功能如下:

五、目录控制优先级解析

【优先级:chroot_local_user+user_config_dir>local_root>chroot_local_user】

以chroot_local_user=YES,chroot_list_enable =YES为前提:

1、未配置user_config_dir的情况

(1)oracle用户在chroot_list_file中存在,则不受chroot的主目录限制规则。

①如果local_root未设置路径,那么oracle会默认被登陆到家目录下

②如果local_root设置路径/var/ftp,那么oracle会自动到/var/ftp

2、oracle用户在chroot_list_file中不存在,则受chroot的主目录限制规则,强制限定主目录

①如果local_root未设置目录路径/var/ftp,那么oracle会无法登录,报错

②如果local_root设置目录路径/var/ftp,那么oracle会强制被登录到ftp/目录下

2、配置了user_config_dir的情况

(1)oracle用户在chroot_list_file中存在,且在userconfig目录下,配置了oracle的local_root路径=/var/ftp/pub

不管vsftpd.conf中的local_root怎么配置,都以userconfig中的oracle路径为主

(2)oracle用户在chroot_list_file中不存在,则无法登录,报错

综上:chroot_local_user+user_config_dir配置>local_root配置>chroot_local_user配置

①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到根路径的上级路径;未在文件中列出的用户,则不能切换。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到根路径的上级路径;未在文件中列出的用户,则可以切换。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到用户根路径的上级路径
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到用户根路径的上级路径

六、为每个系统用户配置各自的 ftp 根目录

1、统一的根目录,只需要配置:local_root=/var/ftp/pub

2、为每个系统用户配置各自的根目录,需要开启chroot功能,配置user_config_dir目录

(1)开启chroot功能

     chroot_local_user=YES
     chroot_list_enable=YES
     chroot_list_file =/etc/vsftpd/chroot_list

(2)创建chroot_list,内部加上需要用户名称,如root,oracle等

(3)根据 user_config_dir 的设置,我们先在 /etc/vsftpd/ 目录下创建一个名为 userconfig 的目录。

 user_config_dir=/etc/vsftpd/userconfig

(4)假设想要给用户 aaa单独指定一个 FTP 根目录 /var/test1/,我们需要进入 userconfig 目录,在该目录下创建一个名为 aaa 的配置文件,编辑文件 aaa,配置内容如下:

 local_root=/var/test1/

七、创建本地用户:

1、用户创建(非系统用户)

[root@localhost vsftpd]# useradd -u 950 -s /sbin/nologin -d /var/ftp/ftptest ftptest

2、设置密码

[root@localhost vsftpd]# passwd ftptest

3、配置chroot_list,增加ftptest

[root@localhost vsftpd]# cat chroot_list
ftptest
aaa
#oracle

八、配置文件:

#config file /etc/vsftpd/vsftpd.conf
#
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
ftpd_banner=Welcome to LLL's FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
user_config_dir=/etc/vsftpd/userconfig
local_root=/var/ftp
#ls_recurse_enable=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
anon_root=/var/ftp
reverse_lookup_enable=no

 

标签: 暂无
最后更新:2023年8月23日

admin

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号