linux下的vsftp服务


  这里以vsftpd.-2.0.4.bz为范例,请留意你的系统是否装有开发环境,vsftpd的网站是 http://vsftpd.beasts.org .

  ftp<file tranfer protocol>是特意提供上传和下载的一项服务,一般会开21为默认端口,其中有message和date二条通信通道,一个信息传递,另一个就是传输数据,其中在dos系统登陆ftp的软件直接是ftp ftp.server.org win下面的很多了,unix下面的有ftp和gftp.

  首先把下载来的vsftpd拷贝到"/usr/src"目录里,



  1.   #pwd


  2.   /usr/src


  3.   #ls


  4.   vsftpd-2.0.4.tar.gz


  5.   #tar zxvf vsftpd-2.0.4.tar.gz


  6.   #cd vsftpd-2.0.4


  7.   #make;make install


  8.   #useradd -d /var/ftp ftp


  9.   #cp vsftpd.conf /etc/


  10.   #cp RedHat/vsftpd.pam /etc/pam.d/ftp

 第五句是表示解压缩文件,注意的是第七句.往往其它软件解压后的第一件事是./config,但这个没有,可以直接make进行编译,安装好后,运行man INSTALL<保证你现在的位置在/usr/scr/vsftpd-2.0.4中>,那里会一步一步的教你,我说的都是些大概,第八句是测试本机是否存在了ftp这个用户,当然也可以用finger先行查看,这里方便了^_^,安装好后的vsftpd的服务器是匿名服务器,也就是说不允许有密码有帐号的人访问,匿名的文件夹默认指定为"/var/ftp"所以上面的并不完整,我们还需要手工建立一下,"#mkdir /var/ftp"由于建立的是匿名服务器,安全一定要有所保证.


 #chown root.root /var/ftp


 #chmod og-w /var/ftp


  这两句话的意思就是把属主分给root用户,其它用户<不能创建文件>


   第九句是把当前目录下</usr/src>的vsftpd.conf移到/etc/下,否则系统找不到配置文件,第十句是把当前目录下的RedHat子目录下的vsftpd.pam拷贝到/etc/下并更名为ftp,这一点需要注意,




  1.  #which vsftpd


  2.  /usr/local/sbin/vsftpd


  3. #/usr/local/sbin/vsftpd &  #后台启动ftp服务


  4. #echo "/usr/local/sbin/vsftpd &" >> /etc/rc.local #开机自动启动!

使用which 命令查看vsftpd所处的目录,"/usr/local/sbin/vsftpd"因为vsftpd是一个系统服务,所以它也将会在/etc/xinetd.d/也会有vsftpd这个文件,我们让vsftpd是一个独立的进程,需要把/etc/xinetd.d下的vsftpd关闭,chkconfig vsftpd off可用chkconfig vsftpd --list查看是否成功关闭了,接下来就是查看当前系统端口中是否已经别的服务占用了21端口.



  1. #netstat -tnlp | grep 21
  2. #/etc/rc.local  #如果没有的话就运行这条

下面就开始配置这个服务器了vi /etc/vsftpd,这里是以本地用户为主.


其中有几个比较常用的选项.这里加以说明;



  1. anonymous_enable=yes 允许匿名用户访问
  2. local_enable=yes 允许本地用户,默认是注解了
  3. write_enable=yes 允许客户写命令,
  4. local_umask=022 本地用户新建文件的值
  5. anon_upload_enable=yes 允许匿名用户上传
  6. anon_mkdir_enable=yes允许匿名用户建文件夹,不要选此项
  7. dirmessage_enable=yes 允许使用文件夹的说明选项
  8. ftpd_banner=welcome to my frist ftp server 欢迎辞
  9. ls_recurse_enable=yes 允许使用ls -R,不使用
  10. listen=yes 监听模式,独立运行的关键
  11. 保存退出后#killall -9 vsftpd
  12. #/usr/local/sbin/vsftpd & 或者是
  13. killall -i vsftpd 抑或是killall -HUP vsftpd
  14. 之后重新登陆测试;

ftp localhost


会看到成功的提示符吧..这样你就可以用系统用户进行登陆,登陆后的主目录是帐号的主目录,可以用put上传,get下载.具体的在进入后可用help查看帮助,那匿名用户能否传和下载文件呢?



  1. #ftp localhost
  2. Name (localhost:root):ftp<or anonymous>
  3. #password:回车
  4. #put /etc/services services227 Entering Passive Mode (127,0,0,1,236,198)
    553 Could not create file. 
    你会看到不能创建文件,我们在/etc/vsftpd.conf已经设置了,怎么还是不可以呢??检查一下匿名用户的目录;

get hosts  正常.说明上传有错.配置文件是没错的,因为get命令可以下载文件,只有匿名用户的主目录有错了,


[root@server root]# ls -ld /var/ftp/
drwxr-xr-x    2 root     root         4096  5月 23 20:03 /var/ftp/
只有读和执行的权限,没有写的权限.问题就是这儿了,那我们动手把它改成可写不就行了吗??你觉的可行吗?那你就试试;我这里讲的是在/var/ftp里再另行创建一个文件夹作为匿名用户可写的地方,


[root@server root]#
[root@server root]# mkdir /var/ftp/incomeing
[root@server root]# ls /var/ftp/incomeing/
[root@server root]# ls -ld /var/ftp/incomeing/
drwxr-xr-x    2 root     root         4096  5ÔÂ 23 21:29 /var/ftp/incomeing/
[root@server root]# chogrp ftp /var/ftp/incomeing/
[root@server root]# chmod go+w /var/ftp/incomeing/


   再次登陆一下就会有创建文件的权限了,你问我没有创建文件夹的权限?看你的配置文件有设置允许没??进入后我们的文件别人都可以进行查看,下载,修改,可不安全啊..
  这样的都会遇到别人的覆盖和修改,我们把它修改为只让他看不让他破坏!


   我们把incoming文件夹ftp组的"r"拿去,只让他们只上传,不允许查看,这样它们依靠那天才的思维也不能查看的到吧!哈,到了这里有人不信了,不会吧,这么天才,那好用匿名用户登陆,自己传一个"/etc/services"然后你再用get下载看能否行的通???不行吧!


  在此我们用匿名用户登陆,用pwd进行查看的时候会发现我们所处的环境是"/",我们指定的是"/var/ftp/"怎么变成了"/",这个环境就是"chroot"在次指明了vsftp是非常安全的,那我们用非匿名用户登陆还会有此功能吗?答案是否定的,我们如果对一些特别的用户进行指定chroot,让他们只看到"/"而不知道他们所处真实系统的位置,再次配置/etc/vsftpd.conf.




  1. chroot_list_enable=yes 

  2. chroot_list_file=/etc/vsftpd.chroot.list

 第一项是启用.默认是注解的,如果你在此写个no,也是没用的,第二项是仅依第一项的yes而存的,其中要看明白chroot_list_file=/etc/vsftpd.chroot.list,其中把指定的文件位置就是默认支持chroot的系统用户清单,切记的是一行一个用户,这样里面的帐号进入后就进入他们的主目录,也就是ftp里的"/"但是系统帐号可以自由的查看上传和修改了,因为是他们的主目录了,


  下面开始对user进行控制,如果哪些用户比较不适合访问这个ftp服务器,怎么禁用它呢??,我们只能在/etc/ftpusers里进行配置了,和/etc/sftpd.chroot_list的一样哦, 都是一行一个用户名,存在这里面的用户默认是禁止他们登陆的,我们也可以修改"/etc/pam.d/ftp"把它改成允许的,其它这个文件是由我们刚才复制的pam控制的,先看一下pam.d




  1. #more /etc/pam.d/ftp


  2. #%PAM-1.0
    auth       required     /lib/security/pam_listfile.so item=user sense=deny file=
    /etc/ftpusers onerr=succeed
    auth       required     /lib/security/pam_pwdb.so shadow nullok
    auth       required     /lib/security/pam_shells.so
    account    required     /lib/security/pam_pwdb.so
    session    required     /lib/security/pam_pwdb.so
    看到的是pam是一个接口型的文件,首先我们登陆ftp服务的时候会自动检查是否存在于/pam_listfile,这个pam_listfile就是/etc/ftpusers,类型是user,怎么处理呢?sense=deny禁止,把它改为allow就变成允许了,


  3. 用一个登陆成的帐号加进/etc/ftpusers里,再次登陆,


  4. 你会看到的是失败,

 再讲一个vsftp的精华点就是虚拟帐号,这样就能防止一些危险用户猜测系统帐号密码对系统造成破坏,当然也可以用"useradd -s /etc/nologin username",让别人知道我们系统的帐号总不会是好事,还是从根本上杜绝!


这里以图文解说;

[root@server root]# useradd vuser #新建一个虚拟登陆指定的号!
[root@server root]# vi users.txt  #虚拟号范本一行用户名下一行密码
[root@server root]# db_load -T -t hash -f users.txt /etc/vsftpd.login.db #把users.txt的内容加为虚拟用户的帐号和密码
[root@server root]# chmod 600 /etc/vsftpd.login.db #为了安全修改里面的内容
[root@server root]# vi /etc/pam.d/ftp  #修改里面的内容,使之与下面的相同
[root@server root]# more /etc/pam.d/ftp
#%PAM-1.0
#auth       required    /lib/security/pam_listfile.so item=user sense=allow file
=/etc/ftpusers onerr=succeed
#auth       required    /lib/security/pam_pwdb.so shadow nullok
#auth       required    /lib/security/pam_shells.so
#account    required    /lib/security/pam_pwdb.so
#session    required    /lib/security/pam_pwdb.so
auth        required    pam_userdb.so db=/etc/vsftpd.login
account     required    pam_userdb.so db=/etc/vsftpd.login
再次修改/etc/vsftpd.conf,使其内容与anonymous有关的全部禁用,还有刚才的chroot也被列为禁用,如果想用的话保证虚拟号能常的前提下再另行测试,并在最后加入二句话:

guest_enable=YES

guest_username=vuser  接下来就是重启vsftpd

[root@server root]# killall -HUP vsftpd  #!
[root@server root]# ftp localhost  #测试
Connected to server.redhat.org.cn.
220 Welcome to linfeng's ftp server.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): tom   #虚拟号
331 Please specify the password.
Password:   #虚拟号tom的密码
230 Login successful.  #成功
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,136,56)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).   #怎么会禁止了呢?想一下上面的,,呵呵,这就是因为vuser用户的权限啊,只需"chmod o+r /home/vuser"那可浏览,但不可上传,因为没有"w"位

 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值