标签:
操作系统:ubuntu (GNU/Linux)
为了在机子上架设ftp服务器,我们需要安装ftp服务器软件。Linux下具有代表性的ftp服务器软件有Wu-FTP,ProFTP和Vsftp。
Wu-FTP(Washington University FTP)由美国华盛顿大学开发。它的功能强大,配置较复制。由于开发时间较早,应用十分广泛,也因此成为黑客们主要的攻击目标。
ProFTP针对Wu-FTP的弱项而开发,在安全性方面进行了改进,并提供了一些Wu-FTP没有的功能,大大简化了架设和管理FTP服务器的工作。
Vsftp在安全性,高性能及稳定性3个方面上有上佳的表现。它提供的主要功能包括虚拟IP设置,虚拟用户,standalone(可自行单独启动的daemon),inetd操作模式(由一支特殊的super daemon管理),强大的单用户设置能力以及带宽限流等。接下来我们主要讲解在ubuntu上如何架设vsftpd。
vsftpd的安装:
在ubuntu可直接通过apt安装 sudo apt-get install vsftpd
安装完毕,检查vsftpd进程是否已启动,可以查看进程或者查看监听端口
ps -eaf|grep vsftpd vsftpd进程已开启
netstat -tnl|grep :21
vsftpd的配置文件:
在ubuntu中,vsftpd的主要配置文件分布如下:
/etc/vsftpd.conf vsftpd服务器的配置文件
/usr/sbin/vsftpd vsftpd服务器的进程文件
/etc/pam.d/vsftpd vsftpd服务器的PAM接口配置文件
/var/ftp vsftpd服务器匿名用户的工作目录
配置vsftpd服务器:
vsftpd服务器的配置文件以及各参数代表的意义如下:
/etc/vsftpd.conf
匿名用户配置:
配置匿名用户,使得
1 FTP服务器支持匿名用户(帐号:anonymous 密码:任意)登录
2 只要ftp用户(操作系统用户)在操作系统有读权限,就可以下载文件
3 匿名用户登录后进入/var/ftp/anonymous目录,可以下载该目录中的文件
4 可以上传文件到目录/var/ftp/anonymous/upload目录中,但不能下载或删除该目录中的文件
利用vim修改vsftpd.conf文件
anonymous_enable=YES
anon_world_readable_only=NO
anon_root=/var/ftp/anonymous
anon_upload_enable=YES
chown_uploads=YES
在/var目录下新建目录anonymous,所以者为root,在/var/anonymous目录下新建目录upload,所有者为ftp
重启vsftpd进程
sudo killall -HUP vsftpd
测试匿名用户
以匿名用户登录本地FTP服务器(127.0.0.1)
测试完毕
虚拟主机的配置:
何为虚拟主机?vsftpd的虚拟主机是指在一台主机上配置多个vsftpd服务,各个vsftpd服务可以采用不同的配置,给用户的感觉好像这些vsftpd服务是不同的主机上运行的。vsftpd的虚拟主机是基于IP地址。既然是基于IP地址的,那您可能会问我只有一个网卡一个IP怎么配置虚拟主机?
这时,我们可以利用linux的逻辑网卡来实现不同IP。
一个虚拟主机的配置例子:
1 增加逻辑网卡,我现在的IP地址为192.168.1.100,增加逻辑网卡IP为192.168.1.101
sudo ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0 up
2 停止vsftpd服务
sudo killall vsftpd
3 修改vsftpd.conf配置,增加以下一栏
listen_address=192.168.1.100
4 重新启动vsftpd服务 & 表示后台运行
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &
5 为第二个vsftpd服务器建立匿名用户对应的本地帐号以及个人目录,参数-d指定个人目录,需自己建立,-s指定登录shell,/sbin/nologin是一种不登录shell
sudo useradd -d /var/ftp/myftp -s /sbin/nologin myftp
6 创建/var/ftp/myftp目录,改变/var/ftp/myftp的所有者(默认就是root),目的是使myftp用户对其没有写权限
sudo mkdir /var/ftp/myftp
sudo chown root /var/ftp/myftp
7 复制vsftpd.conf,命名为myvsftpd.conf放在/etc目录下
sudo cp /etc/vsftpd.conf /etc/myvsftpd.conf
8 修改myvsftp.conf
ftpd_banner=Welcome to my virtual FTP server
ftp_username=myftp
listen=YES
listen_address=192.168.1.101
9 启动第二个vsftpd
sudo /usr/sbin/vsftpd /etc/vsftpd/myvsftpd.conf
测试虚拟主机:
登录192.168.1.100 和 192.168.1.101
测试完毕
虚拟用户的配置:
vsftpd中的用户有3种。匿名用户,本地用户。还有一种就是接下来介绍的虚拟用户,该用户无法登录你的操作系统,但是能够登录FTP服务器,而且当存在很多虚拟用户,您并不需要在操作系统上为每个虚拟用户新建一个不可登录的本地用户,只需要一个。而且还有一个更强大的用法,我们可以通过为每个虚拟帐号创建一个配置文件来不同虚拟帐号不同的权限,目录,这将对我们管理FTP用户有很大的方便。
1 新建user.txt,输入以下内容,表示有2个虚拟用户,分别为xuni1(密码pass1),xuni2(密码pass2)
2 接下来我们需要生成虚拟帐号数据库,先安装DB库工具
sudo apt-get install db4.8-util
在/etc下新建目录/etc/vsftpd
sudo mkdir /etc/vsftpd
将数据库文件导入到刚刚产生的目录
sudo db4.8_load -T -t hash -f /home/stone/user.txt /etc/vsftpd/vsftpd_login.db
将数据库文件设置权限为600,并不需要被其他用户读,修改
sudo chmod 600 /etc/vsftpd/vsftpd_login.db
3 新建/etc/pam.d/vsftpd_login文件,输入以下内容
所有支持PAM的程序都有一个与PAM进行对接的配置文件,它们存放在/etc/pam.d目录,vsftpd与PAM的对接配置文件名可以由vsftpd.conf文件中的pam_service_name选项指定,默认是pam_service_name=vsftpd,当以后认证本地用户时,会根据/etc/pam.d/vsftpd文件的配置内容进行认证。
4 建立所有FTP虚拟用户帐号使用的操作系统帐号,需要我们自己新建目录,并设置该帐号工作目录的权限,所有者(貌似可以修改使之自动新建目录)
sudo useradd -d /home/ftpsite -s /sbin/nologin ftp_virt
sudo mkdir /home/ftpsite
sudo chown ftp_virt /home/ftpsite
sudo chgrp ftp_virt /home/ftpsite
sudo chmod 700 /home/ftpsite
5 在vsftpd.conf配置文件中添加有关虚拟帐号用户的配置内容
guest_enable=YES
guest_username=ftp_virt
pam_service_name=vsftpd_login
最后一项将于原来的默认值冲突,可以注释掉原来的项,重启vsftpd之后,你将发现本地用户无法登录vsftpd了
6 设置虚拟用户的权限,我们可以通过添加下面这一行,来指定放置用户配置文件的目录位置是/etc/vsftpd
user_config_dir=/etc/vsftpd
解释下这一项的作用,添加这一项之后,当我们以虚拟用户登录vsftpd时,服务器将会寻找/etc/vsftpd目录下于虚拟用户名相同的配置文件,从而确定该虚拟用户的权限等属性。这方便了我们管理FTP虚拟用户。
7 配置虚拟用户配置文件
在/etc/vsftpd下,我们新建文件xuni1,输入以下内容
新建文件xuni2,输入以下内容
8 然后重启vsftpd
先关闭
sudo killall vsftpd
启动
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &
测试
虚拟用户具体的权限,目录配置方法将可以通过各种方法来配置,这里不再描述。
继续编辑中...
ubuntu server vsftpd 匿名用户上传下载及目录设置
1:vsftpd服务器安装;
sudo apt-get install vsftpd #安装 cd /srv/ #切换到默认匿名用户ftp目录;
运行 ls -l 我们可以看到 默认的 ftp目录是,虚拟用户ftp的根目录,并且此目录是匿名用户管理的根目录,
无论是对 ftp,改组,改用户,改权限都不能在ftp根目录下,上传东西,要么就是ftp匿名无法连接,要么就是不能上传;折腾了几天,终于明白了!
ftp 作为匿名用户根目录,vsftpd有特殊处理;
vsftpd对此 ftp 根目录,有两点特殊要求;该用户所有者必须是root,该目录的权限对其他不能为 w;
也就是说其他人,匿名用户来说 ftp 目录是根目录,只能是只读的,不能上传,不能更改;如下官方解释
1.匿名用户就是ftp,想要匿名用户写入,必须文件夹的权限为ftp可写。
2.匿名用户的根目录不允许写,所以根目录的权限绝对不能是ftp可写和其他用户可写,如果根目录所有者为ftp的话,所有者的权限也不能写。
所以解决方法是建个单独的public文件夹用于上传文件,设置其为ftp可写或”其他用户可写“
还可建个download文件夹只用于下载,设置其他用户没有写权限便可。
那么我们如果设置匿名用户上传,下载,新建目录呢,
就是在 ftp目录下,新建立一个目录,并且,设置其权限 777,就可以了,还要加上配置 vsftpd.conf 文件
二:配置匿名用户上传下载;
1: 先创建匿名用户可发布的文件目录
cd /srv/ftp/ 切换到根目录 sudo mkdir pub #新建立pub目录做为 匿名用户的上传目录 sudo chmod ftp:ftp pub #为pub目录改其所有者组为 ftp sudo chmod -R 777 pub #为pub目录设置权限为全部可读可写可执行
配置好之后,ls -l 查看
2:配置 vsftpd.conf 配置文件修改
sudo vim /etc/vsftpd.conf
用vim,打开-修改如图示
设置如图几个选项就可以了
anonymous_enable=YES #设置匿名用户可用 write_enable=YES # 设置用户写的权限 YES anon_upload_enable=YES #设置匿名用户上传YES anon_mkdir_write_enable=YES # 设置匿名用户新建目录YES
配置好之后:保存退出
重新启动vsftpd服务
sudo restart vsftpd
3: 测试 匿名用户访问,上传,新建立目录
#打开终端连接ftp服务器 ftp 192.168.8.35 #回车 anonymous #输入用户名,匿名用户 #要求输入密码,直接回车 #出现Using binary mode to transfer files 表示连接成功 #ls 查看远程服务器目录 #cd pub 切换到远程目录pub #ls 查看远程目录 # get hi.txt 下载远程文件到本地 #pub mac0.txt 上传本地文件到远程服务器
如上图测试;
测试新建目录;直接使用
mkdir test
即可;
可以在浏览器里面输入ftp://192.168.8.35 打开ftp服务器目录,查看,下载,执行操作测试
注意:权限的问题
标签:
原文地址:http://www.cnblogs.com/jack2014/p/5034406.html