Linux VPS用户一般都通过SFTP/SCP协议连接OpenSSH Server进行文件传输,但有时候,你希望某些用户只能上传文件到网站目录,而不能够登录系统执行命令以及访问其他目录,这时用FTP Server就能很好地实现.Linux上常用的FTP Server有VSFTPD和ProFTPD,其中ProFTPD简单易用,功能也不错,这里以ProFTPD为例搭建FTP服务器.当然,FTP也可以作为局域网内文件共享的一种方式,比如你的室友使用Windows,向你的Ubuntu ProFTPD个人电脑上传了一部影片,这样就不用拿U盘去拷贝了,其他室友也可以从你的ProFTPD上下载影片.
proftpd的配置方式类似apache,比vsftpd更易用,xampp就集成了proftpd.
代码如下:
sudo apt-get install proftpd-basic
安装时默认作为一个standalone server运行proftpd,如果每天的ftp请求量少,可以安装为inetd服务,节省服务器资源.
这里我使用默认值,安装为standalone server.
代码如下:
sudo netstat -antp|grep proftpd
查看proftpd监听的21端口
用proftpd提供的ftpasswd新建虚拟用户test并设置密码:
代码如下:
sudo mkdir -p /png/proftpd
代码如下:
sudo ftpasswd \
--passwd \
--file=/png/proftpd/passwd \
--name=test \
--uid=122 \
--gid=65534 \
--home=/srv/ftp \
--shell=/bin/false
其中uid和gid我使用的是安装proftpd时自动创建的系统用户ftp:nogroup的uid和gid,执行cat /etc/passwd|grep ftp可见.
/srv/ftp是安装proftpd时自动创建的目录,所有者为ftp:nogroup,权限为755.
这样虚拟用户test以系统用户ftp:nogroup登录/srv/ftp便可以对该目录进行读写.
Linux上的FTP Server的读写权限是映射到系统UGO(User Group Other)上的.
创建虚拟用户时通过设置系统用户uid和gid,以及合理地配置/srv/ftp目录及其文件权限来实现读写控制.
创建新用户时再次执行上述命令即可,根据需要改变一些参数.
比如我创建了一个以uid:gid为1000:1000的系统用户运行,登录目录为/png/www/example.com的虚拟用户eechen:
代码如下:
sudo ftpasswd \
--passwd \
--file=/png/proftpd/passwd \
--name=eechen \
--uid=1000 \
--gid=1000 \
--home=/png/www/example.com \
--shell=/bin/false
创建用户不需要重载proftpd,因为proftpd每次认证时都会读取认证文件.
代码如下:
sudo chown proftpd:nogroup /png/proftpd/passwd 设置passwd文件读写权限,确保proftpd能读取该文件.
代码如下:
sudo nano /etc/proftpd/proftpd.conf
在末尾加入:
代码如下:
DefaultRoot ~ #将用户限定在自己的目录中,上面test用户对应的就是/srv/ftp
RequireValidShell off #禁用Shell请求认证
AuthOrder mod_auth_file.c #认证方式顺序,这里采用文件认证
AuthUserFile /png/proftpd/passwd #存放用户名和密码的文件
代码如下:
sudo service proftpd reload
重载使配置生效。
更改proftpd的默认端口
在文件/etc/proftpd.conf找到:
代码如下:
Port 21
更改为:
代码如下:
Port 2121
如果开启了iptables,iptables限制了所有的出站端口,加载模块ip_conntrack_ftp,这时在加载ip_conntrack_ftp模块时需要更改代理端口为2121。
打开/etc/sysconfig/iptables-config,保证此文件定义加载了ip_conntrack_ftp,如:
代码如下:
IPTABLES_MODULES="ip_conntrack_ftp"
然后在文件/etc/modprobe.conf增加此模块的参数:
代码如下:
options ip_conntrack_ftp ports=2121
如果需要手动加载,则可以执行以下命令:
代码如下:
/sbin/modprobe ip_conntrack_ftp ports=2121
在LINXU平台上使用的FTP软件有Wu-ftpd、Proftpd和vsftpd等。Wu-ftpd的历史悠久,是最流行的FTP服务器程序,稳定、出色,但发布较早,安全不及Proftpd及vsftpd。Proftpd在Wu-ftpd之后开发,安全性及稳定性有所提高。而vsftpd则是在Proftpd之后开发的,意为Very Sucure,吸取了Wu-ftpd和Proftpd的优点,安全性、速度、稳定性都有很大提高。RHEL4(AS)中vsftpd的RPM软件包在第1张光盘中,名为vsftpd-2.0.1-5.i386.rpm。默认情况下没有安装。Vsftpd的主配置文件是/etc/vsftpd.conf。未修改的主配置文件去掉注释后如下(“”后为解释):
anonymous_enable=YES 是否允许匿名访问
local_enable=YES 是否允许本地用户登录
write_enable=YES 是否允许本地用户写入
local_umask=022生向掩码(文件生成掩码),跟权限有关,我记不住了,有兴趣的朋友可以去查查,知道的朋友也请告诉我一下
dirmessage_enable=YES 切换到FTP中的某目录时,是否显示该目录下的隐含文件“.message”
xferlog_enable=YES 是否启用启用上传和下载日志
connect_from_port_20=YES 是否启用FTP数据端口的连接请求
xferlog_std_format=YES 是否让FTP使用ftpd xferlog日志格式
pam_service_name=vsftpd设置PAM认证服务的配置文件,位于/etc/pam.d目录下
userlist_enable=YES需与userlist_file配合使用,稍后介绍
listen=YES 是否处于独立启动模式
tcp_wrappers=YES 为YES时,以tcp_wrappers作为主机访问控制方式
(去掉后,vsftpd的配置文件就这么一点^_^。)
/etc/vsftpd.ftpusers保存着不允许进行FTP登录的用户帐户,通常是权限很高的用户,以提高FTP的安全。
至于/etc/vsftpd.user_list文件,里面有说明:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
…………(后略)
前面说的userlist_enalbe就跟这有关(重点是第二、三行)
另外,/vsr/ftp是匿名用户的宿主目录.
配置vsftpd的虚拟用户:
1. 建立虚拟用户口令库文件(奇数行为用户名,偶数行为密码):
[root@localhost.localdomain]cat vsftpd
abc
abc12321cba
efg
vsftpd.conf
2. 生成认证文件(db_load生成认证文件,“-f”用于指明虚拟用户的口令库文件,即:vsftpd. *** 作中,口令库文件名可随便取.“-t hash”指加密方式)
db_load -T -t hash -f vsftpd /etc/vsftpd/vsftpd_login.db
3.设置权限,以提高安全:
chmod 600 /etc/vsftpd/vsftpd_login.db
4. 建立虚拟用户的PAM文件:
cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
5.建立虚拟用户的目录,并设置相应权限:
useradd -d /home/vsftpd virtual
chmod 700 /home/vsftpd/
6. 编辑vsftpd的配置文件:
vi /etc/vsftpd/vsftpd.conf
guest_enable=yes
guest_username=virtual
pam_service_name=vsftpd.vu
7. 对虚拟用户设置不同权限:
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd_user_conf 设置主配置文件
(:wq #保存退出)
mkdri /etc/vsftpd_user_conf
vi /etc/vsftpd_user_conf/abc 为虚拟用户配置权限
anon_world_readable_only=no 用户可以浏览目录并下载文件
anon_upload_enable=yes 用户可以上传文件
anon_mkdir_write_enable=yes 用户可以添加和删除目录
anon_other_write_enable=yes 用户可以进行其它 *** 作,如改名、删除文件等。
(:wq)
service vsftpd restart
如果只想让用户下载的话,则配置为:
anon_world_readable_only=no
好了,自个儿看效果吧!!!
常见问题:
1.无法匿名访问?
可能是vsftpd.conf中的anonyoums_enable出的错,或者是你根本就没连接到服务器,也有可能是服务器的iptables出的问题(过滤掉了),这种情况下一般与selinux无关。还有就是服务未运行。
2.创建的虚拟用户无法访问vsftpd?
原因或许是在创建虚拟用户的时候出的错,如果无法使用虚拟用户访问vsftpd的时候,建议先检查在创建虚拟用户时,打错什么字没有,如果还是没有检查出什么问题来的话,建议你直接推倒重做。还是一点差点忘记说了,就是在创建虚拟用户的时候,尽量将虚拟用户的密码设长一点、复杂一点,我在测试的时候,就是因为密码太短而几次没有成功。
3.在cmd下用虚拟用户登录vsftpd时,出现“200 PORT command successful. Consider using PASV.”的字样是怎么回事啊?
你所访问的电脑上的防火墙在做怪!!!我就上过这个当!!!
4.其它问题?
一般情况下,vsftpd出现问题大多数都是因为配置文件出错的,如果想要测试的话,建议在命令行了进行测试,当vsftpd出现问题时,它会在访问端的界面上显示原因。另外不成功的原因是因为服务器上的防火墙没有配置好。
需要在本地机和虚拟机上分别安装 FTP 支持软件,安装软件后还需要做配置。真要详细教你的话就太费时间了。首先,选用哪种 FTP 就得费一番功夫,因为 FTP 支持软件有很多,各有特色、难比长短,你可以根据自己的需要来选择其中一种。如果你只是用于自己的 host 和虚拟机之间交换信息,那就对传送过程的安全性方面可以不加考虑,只考虑简单快捷就行。如果你是作为学习用的,为了适用你今后找工作的需要可能要试用几种,以便面试的时候可以应付。我给你介绍几种吧。
1、1.Wu-ftp
Wu-ftp是Washington University FTP的简写,是最早的FTP软件之一,也曾经是Internet最流行的FTP软件。Wu-ftp拥有许多强大的功能,适用于吞吐量很大的FTP服务器的管理要求。
支持虚拟FTP主机(Virtual FTP Server)。
可以对不同网络上的机器做不同的存取限制。
可以在用户下载的同时对文件自动做压缩或解压缩工作。
可以设置最大连接数,提高了效率,有效地控制了负载。
能暂时关闭FTP服务器,以便系统维护。
2.VsFTP
VsFTP的全称是Very Secure FTP,从名称可以看出,编制者的初衷是代码的安全。适用于搭建高安全、高稳定性、中等以上性能的FTP服务器。
具有非常高的安全性。
支持带宽限制。
可以做基于多个IP的虚拟FTP主机服务器。
支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置。
高稳定性和中等以上的性能。
3.ProFTPD
Proftpd的全称是Professional FTP daemon,这是一个在自由软件基金会的版权声明(GPL)下开发、发布的免费软件。Proftpd是针对Wu-FTP的弱项而开发的,除了改进的安全性,还具备许多Wu-FTP没有的特点。
第二步,把选好的 FTP 支持软件安装上去。
说到安装就与你用那种发行版的 Linux 有关了,我不知道你用哪一种,我就以 Ubuntu 或 Debian 为例来说吧。比如,如果你选用了 ProFTPD,你可以用下行命令来安装:
apt-get install proftpd
注意:发布命令时你必须是 root 身份而且可以上 Internet。
第三步,做配置。
这个问题说来话长,你还是看我写的文章算了,有两个网址:
bbs.tianya.cn/post-it-684485-1.shtml
另外一个网址是:
hi.baidu.com/yangf888/item/ddc73d1ebc84ba8098ce3364
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)