FTP 服务器 linux安装

打印 上一主题 下一主题

主题 924|帖子 924|积分 2772


前言

提示:这里可以添加本文要记录的大概内容:


  • ftp 毗连失败:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
  • ftp 毗连失败:530 permission denied
  • ftp 毗连成功,但是能访问到上级目录和其他目录

提示:以下是本篇文章正文内容,下面案例可供参考
注意: 以下全部操纵都是基于 SELinux= disable、防火墙关闭
一、了解

二、安装

参考文档: https://blog.csdn.net/DoupeLe/article/details/138261457
  1. # 查询是有安装ftp
  2. rpm -qa|grep vsftpd
  3. # 卸载 vsftpd
  4. yum remove vsftpd
  5. # yum安装ftp
  6. yum install -y vsftpd
复制代码
默认几个位置:
配置文件 :/etc/vsftpd
根目录: /var/ftp
日记: /var/log/vsftpd.log
注意: 这里的yum 卸载会有遗留,最好去各主要文件夹下确认一下。
启动

  1. # 查看版本号信息
  2. vsftpd -v
  3. # 查看ftp状态
  4. systemctl status vsftpd
复制代码
匿名毗连

默认环境下是允许匿名毗连的,进入后的根目录就是 /var/ftp
三、创建用户

1. 创建体系用户

  1. [root@localhost vsftpd]# useradd people -s /bin/bash
  2. [root@localhost vsftpd]# echo 123456 | passwd --stdin people
  3. 更改用户 people 的密码 。
  4. passwd:所有的身份验证令牌已经成功更新。
复制代码
  注意,这个people 账户 指体系(linux)的用户账户哦。和 ftp 没有任何关系
  好比,我这里创建了一个用户 people people@123。之后,people就可以通过xshell 登录到这个服务器了
并且,虽然我没有在useradd 的时候指定任何关联路径,但是这时候就默认登录后就到了 home/people 中了。


这里,aaa 和 people 都是我们创建的体系用户,可以看到分配了 /home/aaa 和 /home/people 两个家目录。
并且同一完成了:
  1. # 家目录所有者
  2. chown -R username:username /home/username
  3. # 家目录权限 用户 rwx
  4. chmod 700 /home/username
复制代码
2. 毗连

此时创建好的用户 test ,可以shell 登录,也可以xshell -> xsftp ,但是 不能走 ftp协议登录

还 需要vsftp(/etc/vsftpd/vsftpd.conf)包管如下配置
  1.    # ☆☆☆☆☆☆ 允许本地用户登录(默认开启)。vsftpd 的“本地用户”指的是所在系统的用户,即在 Linux 系统中通过 useradd 命令或其他用户管理工具创建的用户
  2.    local_enable=YES
  3.    
  4.    # ☆☆☆☆☆☆ 用户登录ftp后,只能到自己的家目录下,不能随便切换到其它目录。
  5.    chroot_local_user=YES
  6.    
复制代码
修改配置文件后肯定要重启!
之后就能通过ftp 毗连了。
3. 毗连不上? 500

我们在本地测试一下ftp localhost,发现登录失败:

缘故原由: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
解释: 新版本的vsftp(我这里是3.0.2-28)针对用户安全性进行了升级使,用户被锁定的 chroot 目录不可写,防止安全毛病
由此衍生出了两种解决方法:
(1)既然说家目录不能有写权限,那我就去掉好了。当然前提是本身没有写业务
  1. dr-xr-x---
  2. chmod 550 /home/test
复制代码
(2) 假如你非写不可,那就只有修改ftp 服务器的规则了
在配置文件中加上:
  1. # 允许在锁定用户家目录 (chroot) 的情况下保留用户的写权限
  2. allow_writeable_chroot=YES
复制代码
记得重启!
4. 还是毗连不上? 500

  1. [root@localhost var]# ftp localhost
  2. Trying ::1...
  3. Connected to localhost (::1).
  4. 220 (vsFTPd 3.0.2)
  5. Name (localhost:root): ftpuser
  6. 331 Please specify the password.
  7. Password:
  8. 500 OOPS: cannot change directory:/home/pheno/camera/dist/manage/upload
  9. Login failed.
  10. 421 Service not available, remote server has closed connection
复制代码
检查发现,由于 这个 upload 的上上级目录是属于非root的另一个用户。相称于,在别人家里建家
这里提示: 体系用户的家目录,尤其是特别深的环境时,肯定要注意,其父级只能属于root,不能为其他非root用户
5. 还还还是连不上?530

  1. [root@localhost var]# ftp localhost
  2. Trying ::1...
  3. Connected to localhost (::1).
  4. 220 (vsFTPd 3.0.2)
  5. Name (localhost:root): test
  6. 331 Please specify the password.
  7. Password:
  8. 530 Login incorrect.
  9. Login failed.
复制代码
检查发现: 创建用户时候,关联了错误的shell 命令
  1. [root@localhost var]# cat /etc/shells  
  2. /bin/sh
  3. /bin/bash
  4. /usr/bin/sh
  5. /usr/bin/bash
  6. /bin/tcsh
  7. /bin/csh
  8. /usr/bin/nologin
  9. [root@localhost var]# usermod -s /usr/bin/nologin  test
复制代码
注意,先确认一下,体系中可接受的 shell 类型,即那些可以被用作用户登录 shell 的 shell。假如用户的 shell 不在 /etc/shells 文件中,那么用户将无法登录。
之前用户创建用的是 -s /sbin/nologin,不是本体系的支持的shell,改成/usr/bin/nologin就可以了。
补充

关于创建用户

创建体系用户 默认家目录


  • 拥有者都是当前用户,
  • 而且权限都是固定的:drwx------ (对应数值的700)
d:表现这是一个目录(directory)。
rwx:表现所有者的权限。 可读、可写、可执行
—:表现所属组的权限。 无权限
—:表现其他用户的权限。 无权限
useradd 命令

现在来详细解释一下这个命令
  1. useradd 【选项】 用户名
  2. -m :  为用户创建家目录,不存在,则自动创建。默认是 /home/用户名
  3. -d :  指定用户家目录  这个家目录最好不要预先存在,最好由系统自动建立
  4. -s :指定用户的登录 shell     -s /bin/bash(普通的默认的)   -s /usr/bin/nologin
  5. 注意: 这里能指定的shell,一定要是系统承认的,也就是在/etc/shells 列表中的。
复制代码
移除用户:
  1. userdel -r aaa
  2. -r : 同时还删除对应的家目录。
复制代码
如何设置用户不能登录shell

先确认一下,体系中可接受的 shell 类型,即那些可以被用作用户登录 shell 的 shell,如下:
  1. [root@localhost var]# cat /etc/shells  
  2. /bin/sh
  3. /bin/bash
  4. /usr/bin/sh
  5. /usr/bin/bash
  6. /bin/tcsh
  7. /bin/csh
  8. /usr/bin/nologin
复制代码
当用户尝试登录时,体系会检查用户的 shell 是否合法。假如用户的 shell 不在 /etc/shells 文件中,那么用户将无法登录。
几种shell 类型的解读:
/bin/sh
/bin/bash : 最常用的,默认
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
/usr/bin/nologin : 克制用户登录
不消体系指定的家目录

  1. useradd -m -d /path/to/custom/home/directory username
  2. 如果指定的目录不存在,-m 选项会自动创建该目录。
复制代码
vsftpd 配置

chroot

在 vsftpd(Very Secure FTP Daemon)中,chroot 是一个紧张的安全特性,它用于限定 FTP 用户的活动范围
chroot 的全称是 “change root”
  1. chroot_local_user=YES
  2. # 当设置为 YES 时,所有本地用户都会被 chroot 到他们的家目录。这意味着用户登录后只能访问他们的家目录及其子目录
  3. chroot_list_enable=YES
  4. # 如果设置为 YES,那么 vsftpd 会检查 chroot_list_file 指定的文件列表,只有在这个文件列表中的用户才会被 chroot 到指定的目录
  5. chroot_list_file=/etc/vsftpd/chroot_list
  6. # 配合上面的chroot_list_enable ,指定一个包含用户名的文件,其中每个用户行对应一个将被 chroot 的用户
  7. ## 注意,如果上面两个都被注释了,表示,任意用户都会被chroot到其根目录。
  8. allow_writeable_chroot=YES
  9. # 允许根目录可写
复制代码
禁用匿名登录

  1. anonymous_enable=NO
  2. 为了安全,最好禁用
复制代码
日记

黑白名单

由于,默认ftp毗连的用户都是体系用户,更多时候并不允许所有的体系用户都可以登录ftp服务器。
这里可以对这些本地用户加入白名单,来限定哪些本地用户可以毗连ftp
  1. userlist_enable=YES
  2. userlist_deny=NO
  3. userlist_file=/etc/vsftpd/user_list   # 在这里设置白名单
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表