100网站建设,北海网站建设,网站内容包括哪些,设计师兼职接单vsftpd部署流程和常见问题详解 ⭐️ 网上关于在云服务器里配置vsftpd的文章鱼龙混杂#xff0c;没有一篇是可以彻底解决问题的#xff0c;有些问题虽简单#xff0c;但也让初学者感到困惑。本文详细说明vsftpd的部署流程和一些常见问题的解决方法#xff0c;详述用户创建过…vsftpd部署流程和常见问题详解 ⭐️ 网上关于在云服务器里配置vsftpd的文章鱼龙混杂没有一篇是可以彻底解决问题的有些问题虽简单但也让初学者感到困惑。本文详细说明vsftpd的部署流程和一些常见问题的解决方法详述用户创建过程并且可以在Windows平台下直接访问vsftpd服务器实现文件传输。——©️ Sylvan Ding vsftpd简介
vsftpd是“very secure FTP daemon”的缩写安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面是一个完全免费的、开放源代码的ftp服务器软件支持很多其他的 FTP 服务器所不支持的特征。比如非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等[1]。
vsftpd 利用 chroot() 这个函式进行改换根目录的动作使得系统工具不会被 vsftpd 这支服务所误用。上层程序中依然使用 chroot() 的功能来限制使用者的执行权限。
环境说明
服务器腾讯云服务器/轻量应用服务器操作系统Ubuntu Server 18.04.1 LTS 64bitvsftpd版本version 3.0.3
安装vsftpd
ubuntuVM-12-6-ubuntu:~$ sudo su # 切换到root
rootVM-12-6-ubuntu:/home/ubuntu apt-get install vsftpd # 安装vsftpd
rootVM-12-6-ubuntu:/home/ubuntu# vsftpd -version # 查看vsftpd版本验证是否安装成功⚠️ 注意之后的操作环境都是在root权限下进行
修改配置文件
rootVM-12-6-ubuntu:/home/ubuntu# whereis vsftpd # 查找配置文件 vsftpd.conf 路径
vsftpd: /usr/sbin/vsftpd /etc/vsftpd.chroot_list /etc/vsftpd.conf /usr/share/man/man8/vsftpd.8.gz
vim /etc/vsftpd.conf # 修改配置文件重点关注如下参数我们不设置匿名访问所以和anonymous有关的参数我们都不修改也不做解释
local_enable默认YES, 允许本地用户登陆write_enable是否允许登陆用户有写权限需要取消该行注释即设置write_enableYESlocal_umask屏蔽用户创建的目录/文件的初始权限chroot_local_user, chroot_list_enable将用户限制在主目录下
local_umask
在linux系统中创建一个新的文件或者目录的时候这些新的文件或目录都会有默认的访问权限umask命令与文件和目录的默认访问权限有关。若用户创建一个文件则文件的默认访问权限为-rw-rw-rw-创建目录的默认权限 drwxrwxrwx而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值[2]。
例如用vsftpd创建一个文件夹文件夹的权限是 777此时设置local_umask077即使用其默认值那么最终文件夹的权限是 700 777 - 077 二进制相减即由用户创建的文件夹仅对该用户有RWX的权利。 Linux权限管理—基本权限 chroot
很多情况下希望限制ftp用户只能在其主目录下root dir下活动不允许他们跳出主目录之外浏览服务器上的其他目录这时候我就需要使用到chroot_local_user, chroot_list_enable, chroot_list_file这三个选项了[3]。
chroot_local_user 是否将所有用户限制在主目录,YES为启用 NO禁用. (该项默认值是NO,即在安装vsftpd后不做配置的话ftp用户是可以向上切换到要目录之外的)chroot_list_enable 是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)chroot_list_file/etc/vsftpd.chroot_list 是否限制在主目录下的用户名单至于是限制名单还是排除名单这取决于chroot_local_user的值.
对于chroot_local_user与chroot_list_enable的组合效果可以参考下表
chroot_local_userYESchroot_local_userNOchroot_list_enableYES1.所有用户都被限制在其主目录下 2.使用chroot_list_file指定的用户列表这些用户作为“例外”不受限制1.所有用户都不被限制其主目录下 2.使用chroot_list_file指定的用户列表这些用户作为“例外”受到限制chroot_list_enableNO1.所有用户都被限制在其主目录下 2.不使用chroot_list_file指定的用户列表没有任何“例外”用户1.所有用户都不被限制其主目录下 2.不使用chroot_list_file指定的用户列表没有任何“例外”用户
重启vsftpd让修改的配置文件生效
/etc/init.d/vsftpd restart设置防火墙
需要在腾讯云服务器中开放FTP服务端口(21)否则将无法连接这个端口。 创建用户
useradd -d home_dir username # 添加用户
passwd username # 修改密码
chown -R username home_dir # 修改家目录所有者-d 设定使用者的家目录为 home_dir 即登陆后的初始目录
检查监听端口
netstat -antup | grep ftp # 检查端口是否开放正常情况下应该返回表明正vsftpd正监听21端口
tcp6 0 0 :::21 :::* LISTEN 5747/vsftpd问题解决500 OOPS: vsftpd: refusing…
这时使用上述账户登陆ftp会报错500 OOPS: vsftpd: refusing to run with writable root inside chroot() 这是新版vsftpd加了安全认证导致的即如果开启了chroot 来控制用户路径则用户不能再具有该用户根目录的写的权限。 解决方法在配置文件/etc/vsftpd.conf中末尾添加allow_writeable_chrootYES表明允许该用户对根目录的写的权限[6]。别忘了重启vsftpd/etc/init.d/vsftpd restart.
禁止用户登陆
为确保创建的用户只能通过ftp访问对应的文件夹而不能在命令行下操作系统故需要禁止用户登陆。
usermod -s /sbin/nologin username-s 修改用户登入后所使用的shell系统账号的shell使用/sbin/nologin此时无法登录系统即时给了密码也不行. 所谓“无法登录”指的是仅是这个用户无法使用bash或者其他shell来登录系统而已并不是说这个账号就无法使用系统资源[4]。
设置禁止登陆后客户端尝试登陆 ftp但提示vsftpd 530 Login incorrect. 此时需要更新/etc/shells. vsftpd 通过 pam 进行验证 shell而 nologin 和 false 是不在 /etc/shells 中的所以验证不能通过自然不能登录了[5]。解决方法是在 /etc/shells 添加 nologin 即可。
问题解决Windows访问FTP文件夹错误 使用Windows的文件系统访问FTP文件夹MacOS在访达中连接ftp时却不会出现这样的问题
ftp://username:pwdhost:21/此时报 FTP文件夹错误 提示。原因是Windows默认使用ftp被动模式PASV连接而服务器端vsftpd使用主动模式PORT. PORT主动模式模式只要开启服务器的21和20端口而PASV被动模式需要开启服务器大于1024所有tcp端口和21端口。
主动模式指的是FTP服务器“主动”去连接客户端的数据端口来传输数据其过程具体是客户端从一个任意的非特权端口NN1024连接到FTP服务器的命令端口即tcp 21端口紧接着客户端开始监听端口N1并发送FTP命令“port N1”到FTP服务器。然后服务器会从它自己的数据端口20“主动”连接到客户端指定的数据端口N1这样客户端就可以和ftp服务器建立数据传输通道了。被动模式指的是FTP服务器“被动”等待客户端来连接自己的数据端口其过程具体是当开启一个FTP连接时客户端打开两个任意的非特权本地端口N 1024和N1。第一个端口连接服务器的21端口向服务器提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口P 1024并发送PORT P命令给客户端。然后客户端发起从本地端口N1到服务器的端口P的连接用来传送数据[7].注意此模式下的FTP服务器不需要开启tcp 20端口了
解决方法是通过修改配置文件在配置文件/etc/vsftpd.conf末尾添加别忘了重启/etc/init.d/vsftpd restart
pasv_enableYES # 允许pasv模式
pasv_max_port11000 # pasv使用的最大端口
pasv_min_port10100 # pasv使用的最小端口接着在防火墙中开放pasv使用的端口例如 其他云主机可能需要设置系统内的防火墙哦 ❤️ 原创文章转载请注明出处©️ Sylvan Ding
参考文献
vsftpd百度百科linux命令–umaskvsftpd 配置:chroot_local_user与chroot_list_enable详解Linux中Shell——sbin/nologin的理解vsftpd将shell设置成为nologin后不能登录解决办法500 OOPS: vsftpd: refusing to run with writable root inside chroot() 错误的解决方式vsftpd的主动模式与被动模式