Linux下搭建ftp服务(按照步骤不会出现问题)
Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令
rpm -qa | grep vsftpd 来查看是否安装相应的包,如果没有安装那么可以执行 yum -y install vsftpd 来安装,安装之后首先创建ftp用户,比如ftp_test,命令如下:useradd -s /sbin/nologin -d /home/ftp_test ftp_test
目录尽量不要选择根目录下,这里是/home/ftp_test,并且ftp_test这个目录不要手动创建,否则权限会有问题,执行命令的
时候会自动创建,
可以看到权限现在是对于ftp_test用户是可读可写可执行的,其他用户和组下面的都没有任何权限,现在为ftp_test用户创建密码:
passwd ftp_test
执行之后输入2次密码确认就设置好了密码
然后编辑vsftpd配置文件,位置是:vim /etc/vsftpd/vsftpd.conf
找到anonymous_enable这个配置项,默认是YES,修改成NO,表示不允许匿名用户登录
现在直接保存配置文件,执行 systemctl start vsftpd.service 启动vsftp服务,然后可以通过命令: systemctl status vsftpd.service 查看ftp服务的运行状态,现在就可以用ftp客户端进行连接了,这里用FileZilla测试,连接正常(低版本使用:service vsftpd restart)
现在基本的ftp服务就部署完了,客户端可以正常上传,下载,修改文件;但是这样有个问题就是所有的目录都暴露给客户端了,虽然客户端不能随意修改删除其余的文件,但是因为目录可见,所以总会有一些风险,所以接下来还需要配置让ftp用户只在自己的家目录下面活动,而无法查看其它任何目录,同样是打开配置文件/etc/vsftpd/vsftpd.conf,找到chroot_local_user=YES这个配置,默认是注释的,这里去掉注释,表示只让用户在自己的目录里面活动,如果只是保存这一个配置的话,用ftp连接客户端会返回500 OOPS: vsftpd: refusing to run with writable root inside chroot()的错误,即禁止运行在可写的家目录中,因为刚才ftp_test这个目录有w权限,而现在我们使用的vsftpd版本是3.0.2 属于比较新的版本,为了安全性做了一些限制,如果你此时想通过 chmod a-w /home/ftp_test 来去掉目录的写权限,那么连接成功是没问题的,但是无法上传文件了,所以网上很多说修改权限的方法是不可取的,正确的做法是应该在下面添加一行配置allow_writeable_chroot=YES表示允许对家目录的写权限,具体配置如下:
配置完这两项以后保存退出,然后执行 systemctl restart vsftpd.service 重启vsftpd服务,现在重新使用ftp连接就成功了,并且任何操作也是没问题的
现在可以看到上面的路径是一个/,对于ftp用户来说也就是根目录了,只能在这个目录下操作,而无法跳出这个目录
以上就是vsftpd服务的基本搭建过程,实际使用时可以分配多个用户
备注:
1.若显示为无法显示远程文件夹 一般都是文件夹权限不足得问题(使用chomd -R 755 文件夹)
2.若是ftp连接上可以上传文件使用Java代码连接包空指针异常 状态码未550都是ftp默认时不容许上传文件需要配置 配置文件/etc/vsftpd/vsftpd.conf,找到
chroot_local_user=YES
allow_writeable_chroot=YES (如果启动报错换成 :write_enable=YES)
遇到yum -y install vsftpd 报错 未安装yum源
RHEL6 安装解决YUM使用的问题(以上版本解决思路一样 只是下载的软件包版本不同而已)
RHEL的YUM源需要注册用户才能更新使用,并且付费,所以可以把YUM源替换掉,由于CentOS和RHEL基本没有区别,并且CentOS已经被REHL收购。所以将RHEL的YUM源替换为CentOS即可。
问题如下:
[root@bogon ~]# yum repolist
Loaded plugins: product-id, refresh-packagekit, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repolist: 0
解决方法:
1.清除原有RHEL6的YUM及相关软件包。
rpm -qa | grep yum | xargs rpm -e --nodeps
rpm -qa |grep python-urlgrabber|xargs rpm -e --nodeps
2.下载CentOS的相关软件包。
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-urlgrabber-3.9.1-11.el6.noarch.rpm
如果无法通过wget下载,
自己去网站变更地址 网站数据源有变更
还可以到源网站手动下载,再用WinSCP将压缩文件传到REHL中
http://mirrors.163.com/centos/6/os/x86_64/Packages/ 目录下,选择下载上述软件包。网上很多文章没法直接使用就是因为软件包的版本问题。
3.安装软件包。
rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
rpm -ivh yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm yum-3.2.29-81.el6.centos.noarch.rpm
*注释yum-plugin-fastestmirror和yum-3.2.29要一起安装。
4.替换新的repo文件。
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
sed -i “s;$releasever;6;g” CentOS6-Base-163.repo
mv rhel-source.repo rhel-source.repo.bak
5.执行yum repolist查看。
6.使用yum安装软件包测试。
yum -y install lrzsz
7.现在可以进软件跟新了
yum update
如果按照遇到问题:发现错误,python-urlgrabber版本必须大于等于3.9.1-10
rpm -ivh yum-3.2.29-73.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
warning: yum-3.2.29-73.el6.centos.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:
python-urlgrabber >= 3.9.1-10 is needed by yum-3.2.29-73.el6.centos.noarch
查看系统的python信息
rpm -qa|grep python
发现python-urlgrabber-3.9.1-9.el6.noarch 版本低于3.9.1-10
卸载:python-urlgrabber-3.9.1-9.el6.noarch
rpm -e python-urlgrabber-3.9.1-9.el6.noarch
安装:rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
有关于ftp安装或Java方面的问题欢迎评论留言 加关注哟!!!!!!!!