centos

来源:互联网 发布:mysql 查询一年总数 编辑:程序博客网 时间:2024/06/07 11:37

vsftpd 文件传输服务。我们总不想在服务器上面写程序敲代码吧,既不安全也不方便。在本地调试好了通过某种工具将写好的代码传输给服务器。

这周把我整惨了。centos vsftpd 安装好尼玛复杂。 整理网上很多资料,讲解下虚拟用户vsftpd(安全性很好,虚拟用户不能登录服务器,只能通过vsftpd 工具传输文件)

pwd 命令可以查看你当前所在的目录
你的位置在随便某个目录都可以

1、检查你的centos 服务器是否安装了vsftpd 服务
rpm -qa | grep vsftpd

注解:如果你没有安装请执行第二步安装vsftpd服务

2、yum install vsftpd -y

注解 : 从yum库中安装vsftpd 服务 -y 参数作用是中途的所有提示都回复y

将vsftpd 设置为开机自动启动
chkconfig vsftpd on

3、vim /etc/vsftpd/vsftpd.conf vsftpd 的服务已经安装完成 我们来设置vsftpd 的配置
更改以下配置:
anonymous_enable=NO //设定不允许匿名访问
local_enable=YES //设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
chroot_list_enable=YES //使用户不能离开主目录
ascii_upload_enable=YES
ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能
pam_service_name=vsftpd //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
以下这些是关于vsftpd虚拟用户支持的重要配置项,默认vsftpd.conf中不包含这些设定项目,需要自己手动添加

guest_enable=YES //设定启用虚拟用户功能
guest_username=tanyong //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名

保存配置 ( esc -> :wq)

4、设置ftp用户
创建用户文本vuser_passwd
vim /etc/vsftpd/vuser_passwd
www_php
woshishuaige
文件内容 ftp 用户名和密码 注意奇行是用户名,偶行是密码
设置好后,我们对该文件进行编译处理,处理如下:
安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包
yum install db4 db4-utils
注解: 从yum库中下载
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db

5、编辑认证文件/etc/pam.d/vsftpd (与vsftpd.conf 中 pam_service_name 参数值对应)
先注释掉 /etc/pam.d/vsftpd 这个文件所有的内容 “#”
vim /etc/pam.d/vsftpd

#........#.........#.......auth required pam_userdb.so db=/etc/vsftpd/vuser_passwdaccount required pam_userdb.so db=/etc/vsftpd/vuser_passwd

注解 : vuser_passwd 就是映射的vuser_passwd.db

6、创建虚拟用户配置文件
mkdir /etc/vsftpd/vuser_conf/ (与vsftpd.conf 中 user_config_dir参数值对应)
vi /etc/vsftpd/vuser_conf/www_php (文件名等于vuser_passwd里面的账户名,否则下面设置无效
内容如下)

local_root=/web_www/www_php //虚拟用户根目录,根据实际情况修改
write_enable=YES //可写
anon_umask=022 //掩码
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

7、设置Selinux (linux 安全机制)
setsebool -P ftp_home_dir=1 //设置ftp可以使用目录
setsebool -P allow_ftpd_full_access=1 //设置ftp用户可以有所有权限

8、创建用户根目录 我这里对应用户配置文件中的/web_www/www_php
mkdir /web_www
mkdir /web_www/www_php

chmod 755 /web_www
chmod 777 /web_www/www_php

由于我是使用root权限创建的文件 文件和文件夹的所属者是root 而在vsftpd.conf中guest_username参数配置的是用户tanyong(ftp用户登录映射成tanyong这个用户的操作) 而在前面我们没有添加tanyong这个用户 我在这里补上
useradd -M -d /web_www -s /sbin/nologin tanyong
passwd tanyong (这里会提示你输入两次密码,自己写吧 , 我这里假设我设置的密码是tanyong123)

chown tanyong:tanyong /web_www
chown tanyong:tanyong /web_www/www_php

更改我们创建的目录的所有者从root 更换成tanyong

9、vim /etc/sysconfig/iptables 设置防火墙
在”COMMIT”之前和 包含 REJECT 的语句之前 添加这一行 开启21端口
-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A OUTPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 20 -j ACCEPT
-A OUTPUT -m state –state NEW -m tcp -p tcp –dport 20 -j ACCEPT

重启防火墙服务
service iptables restart
如果你没有安装防火墙服务 就不用管这一步 怎么查看自己服务器是否安装了该服务看第一步

10、配置PASV模式
vsftpd默认没有开启PASV模式,现在FTP只能通过PORT模式连接,要开启PASV默认需要通过下面的配置
打开/etc/vsftpd/vsftpd.conf,在末尾添加
pasv_enable=YES //开启PASV模式
pasv_min_port=40000 //最小端口号
pasv_max_port=40080 //最大端口号
pasv_promiscuous=YES

在防火墙配置内开启40000到40080端口
vim /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 40000:40080 -j ACCEPT
-A OUTPUT -m state –state NEW -m tcp -p tcp –dport 40000:40080 -j ACCEPT

11、重启iptabls和vsftpd

service iptables restart
service vsftpd restart

现在在本地用8uftp 或者是其它的ftp服务软件访问一下。 有的人会说 我不知道我服务器的地址怎么办?我是在本地通过VM虚拟机安装的环境,不是用的服务商的环境

在shell命令行中输入
ifconfig 你就可以查看到自己的ip地址了。
当然你还得检查一下 vsftpd.conf 中 参数 listen = YES 监听ipv4

如果你的ftp 响应了500报错 请继续进行第12步

12、(我就是这里卡住了几天,泪奔)
vim /etv/vsftpd/vsftpd.conf

chown_uploads = YES
chown_username=tanyong

chroot_local_user=YES #是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)

chroot_list_enable=YES #是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)

chroot_list_file=/etc/vsftpd/chroot_list #是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制”,所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),”例外”就是:不被锁定的用户是哪些;当”全部用户不被锁定于主目录”时(即chroot_local_user=NO),”例外”“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!

chown_uploads = YES
chown_username=tanyong
注解 : 所属用户组有上传权限,组名称是tanyong组

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
注解 :开启虚拟用户映射,映射系统用户配置/etc/vsftpd/chroot_list

vim /etc/vsftpd/chroot_list
tanyong
tanyong123

保存 再次执行第11步

资料采集整理地址

原创粉丝点击