Linux尚学堂笔记(三)

FTP(File Transfer Protocol):文件传输协议是Internet上使用非常广泛的一种通讯协议,它是为Internet用户进行文件传输(包括文件的上传和下载)而制定的。要想实现FTP文件传输,必须在相连的两端都装有支持FTP协议的软件,装在您的电脑上的叫FTP客户端,通用的有IE浏览器,专用的有FlashFXP,CuteFTP, FTP服务器,WuFTPD,微软的IIS FTP服务器,Crob FTP, Raiden FTPD, SerV-U.登陆,下载与上传。

HTTP是Hyper Text Transportation Protocol(超文本传输协议)的缩写,它们是计算机之间用来交换数据的方式,也是两种最经典的文件下载方式,FTP专门用来下载,而HTTP的主要工作是用来浏览网页,不过也能用来下载,这两种下载方式的原理并不复杂,就是用户按照一定的规则(协议)和提供文件的服务器取的联系并将文件搬到自己的计算机中来,FTP下载方式最古老,在没有WWW的日子,FTP就已经广为使用。访问ftp站点的方式很多常用的有:

※   命令行ftp ftp站点,然后输入用户名,密码。

※   直接在网址中输入:ftp://username:password@ftp站点

※   用专业的软件例如:Flashxp, ftpcute等

好了,在来学习下怎么架起自己的ftpServer

常用工具Serv-u:首先按装,然后就行简单的配置你就可以架起自己的ftpServer 然后就可以进行资源的控制与访问。

下面再比较以下几个协议:

IP协议为网际层协议,只负责将数据包发送到目的主机,但并不能保证一定能够使目的主机接受到

TCP协议为传输层协议,通过超时重发等规则,使用IP协议,能够确保目的主机接受到数据包

HTTP为应用层协议,使用TCP协议,实现超文本传输,而SOAP在HTTP的基础上,是一种用在非集中式,分布式环境中交互信息的轻型网络协议,它是一种基于XML的协议,TCP方式进行交互(甚至IP,如果你愿意的话),优点也很明显,那就是效率高,因为避免了应用层的封装,但是,TCP是不能穿越防火墙的,适用于局域网内对传输性能要求比较高的系统,同时开发成本也上升很多。.NET还是封装了TCP传输的。

如果用NETBEUI协议(微软网上邻居使用),就是NETBIOS扩张用户接口。  
如果用TCP/IP协议,就是NETBIOS-Base-TCI/IP,即NetBT。  
如果用IPX协议,就是NETBIOS   for   IPX。  

Windows和Linux间文件共享,这里假如你的Host计算机室Windows,Guest是Linux

1.     用vmware tools工具:

SharedFolders是Vmware4 的一个新功能,更加方便了在Host,Guest操作系统间共享文件。但是使用前
要安装vmware tools.
点击setting->vmware tools install
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
里面有一个vmware tools的tar包,解开执行vmware-tools-install.pl脚本,一路回车,一般没有问题。
点击Edit->Virtual Machine Settigns->Option->SharedFolders->Add,选定要共享的文件夹并给这个文件夹命名,下一步。选定“Enable
thisshare”, 确定以后,vmware会把这个文件夹自动mount到/mnt/hgfs目录下。

2.     Windows下配置Ftp
用serv-u比较简单(或直接设置iis的ftp服务器)
3.Windows下配置WWW服务
用IIS,Apache或者其它的都可以。如果你的Linux只有命令行的话,就用wget命令吧,可以很方便地下载文件。
4.利用Windows的文件共享功能
比如说你的Windows的IP为192.168.0.1,共享了一个叫share的目录,那么就可以用下列命令
mount -t smbfs //192.168.0.1/share /mnt -o username=user%passwd
或者smbmount //192.168.0.1/share /mnt -o username=user%passwd(用这个命令要安samba哦)  

5.利用Samba
这是我用得最多的方式(Samba服务器毕竟是多系统文件共享不错的解决方案

6.在Linux下配置Apache
在Linux下配置Apache,然后在Windows下通过www方式把Linux下的文件下载下来。这种方式只能把Linux的文件传到Windows,不能把Windows的文件传到Linux.
(设置apache配置文件,并提供一个类似webshell的东西,可以把文件从windows通过www方式把win系统下的文件上传到linux)

7.在Linux下配置Ftp
用vsftp或者wu-ftp都可以,配置成上传权限的,然后Windows和Linux就可以相互共享文件了。
8.用ISO文件
虚拟机里面的光驱可以有物理光驱和ISO文件两种,我们可以把我们的文件重点制件成ISO文件(用WinIso),然后在Linux中作为CDROM挂接。

dos下删除目录树: rd /s/q  目录

dos下删除文件 : del

dos下查看所有服务的命令:查看正在运行的服务:

sc   query   state=   all      net start + 【服务名】开启相应服务

linux下查看所有服务的命令  查看正在运行的服务

service --status-all #列出所有的服务运行状态
service --status-all |grep httpd #查看某个服务的运行状态

dos下开启防火墙:net start sharedaccess,关闭防火墙:net stop sharedaccess

Linux下开启防火墙:

1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop

linux下配置ip

1、         命令行ifconfig  

ifconfig eth0 192.168.1.10 netmask 255.255.255.0  //配置IP地址
ifconfig eth0 up | down                  //激活,关闭备eth0
route add default gw 192.168.1.1                
2、修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth0  

#vi /etc/syssconfig/network-scripts/ifcfg-eth0

  DEVICE=eth0

  BOOTPROTO=static

  HWADDR= ;这里是你网卡的物理地址,通常检测到的网卡你就不用输入了

  ONBOOT=yes

  IPADDR=192.168.0.1

  NETMASK=255.255.255.0

  NETWORK=192.168.1.0

  BROADCAST=192.168.1.255

GATEWAY= ;这里输入你的网关,路由器的IP地址

/etc/init.d/network reload 命令或service network [命令]
3、系统提供的管理工具setup命令   (直接输入setup即可图形配置)
chown [-cfhvR] [--help[--version] user[:group] file

Linux/Unix是多人多工作业系统,所有的档案皆有拥有者,利用chown可以将档案的拥有者加以改变,一般来说,这个指令只有是有系统管理者(root)所使用,一般的使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人,只有系统管理者(root)才有这样的权限。

在Fedora上安装及配置vsftp服务 

注意在fc11下面可能有些目录是没有的,这个就需要你自己建立,这点不同于redhatLinux

安装VSFTP:

准备:下载VSFTP源码包或VSFTP或VSFTP的RPM包,这里使用的是:vsftpd-2.1.10.tar.gz,

£下载vsftpd-2.1.10.tar.gz

£新建文件夹ftp目录

£cp vsftpd-2.1.10.tar.gz /bjsxt/ftp

£tar zxvf vsftpd-2.1.10.tar.gz,解压之后ftp目录下多了一个名为vsftpd-2.1.10的目录,进入该目录编译VSFTP:
£make,编译之后目录下多了一个可执行文件vsftpd,这是vsftp的主程序。因为vsftp默认需要使用"nobody"这个用户来配置,所以你必须确定你的系统中有这个用户,一般说都会有的,但为了明确起见,执行下述命令,添加nobody用户:#adduser nobody,adduser: user nobody exists,因为我的系统里已经有nobody用户了,所以提示该用户已经存在了。vsftp默认的配置还需要一个空的目录(empty),该目录的绝对路径应该是/usr/share/empty/,另外若ftp服务器需要匿名用户(anonymous)需要加一个用户
ftp,此用户的要求这样:用户目录设为/var/ftp,它是VSFTP的匿名用户的映射本地用户,即指anonymous用户在进程中以ftp用户身分运行 进程,但anonymous用户并不继承了ftp用户的文件权限,它只拥有其他组的文件权限。

可使用下述的命令
完成上面的需求:
#mkdir /var/ftp/
#useradd -d /var/ftp ftp
如果你的系统已经存在有ftp用户的话,使用下面的命令更改目录属主和用户目录:
#chown root:root /var/ftp
#chmod og-w /var/ftp

接下来把编译的文件安装到相应目录:
make install

安装之后,在/usr/local/sbin/目录下有vsftpd这个主程序。

在/etc/xinetd.d下也有一个vsftpd配置文件,这个文件是由xinetd守护进程启动vsftpd的配置文件。另外你不使用xinetd启动vsftp的话,你应该在/etc/目录下加一个vsftp的配置文件,默认的文件名为/etc/vsftpd.conf,这个文件你可以手动编辑,但在我们的源码目录里已经有一个样本配置文件了,可以直接修改这个文件以满足我们的需求,现在把这个样本配置文件拷贝到这个目录下:#cp vsftpd.conf /etc/这样在/etc/下有一个配置文件vsftpd.conf了。我们来测试一下VSFTP是否能够正常运行,我们采取使用独立进程而不是xinetd来启动VSFTP,这样要在刚才的文件/etc/vsftpd.conf后面加入一行:listen=YES加入之后用下面的命令试试启动VSFTP:

加入之后用下面的命令试试启动VSFTP:#/usr/local/sbin/vsftpd &[1] 7208好了,VSFTP已经启动,进程号为7208。接下来测试FTP(你应该确定你的机器里没有里别的FTP服务软件运行,否则使用相同的端口会发生冲突):# ftp 127.0.0.1Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.2.1)Name (127.0.0.1:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.OK,FTP服务器运行正常,使用匿名用户ftp登陆成功,你也可以使用anonymous代替用户名ftp,一样可以成功登陆。使用RPM包安装VSFTP就容易多了,只需要执行下面的命令:#rpm -ivh sftpd-1.1.3-8.i386.rpm好了,看来我们的VSFTP至此为止安装得很正确并且运行得非常良好,这样我们可以进入第二大步:配置VSFTP。

第二步:配置VSFTP

a)  使本地用户能登录FTP。按照上面的源码安装配置我们的FTP还不能让本地用户登录,因为缺少一个认证PAM文件,在源码目录下有一个RedHat/vsftpd.pam认证文件,把它复制到/etc/pam.d/ftp。#cp RedHat/vsftpd.pam /etc/pam.d/ftp测试一下,假设有一个本地用户test,登录FTP:#ftp 127.0.0.1Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.2.1)Name (127.0.0.1:root): test331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.看来情况很好:)

b)  配置匿名用户有浏览,读写,创建目录权限的FTP。这种配置的FTP是极度不安全
的FTP,但在某些FTP网站上可能希望能匿名用户能上传文件,因此有必要讲解一下:
编辑配置VSFTP的配置文件vsftpd.conf,在文件加入下面几行:

   anon_world_readable_only=NO //关闭匿名用户只读权限,这个选项是控制匿名用
户只能下载具有可读权限的文件,绝不允许有其他权限,特别是写权限,因此要使
匿名用户有写权限,应该禁止它
anon_upload_enable=YES //匿名用户上传权限开放
anon_mkdir_write_enable=YES //匿名用户写和创建目录权限开放
write_enable=YES //这是VSFTP控制用户改变文件系统的权限的选项,若任何用户
要使用改变文件系统命令(如,读写,删除等等操作)都必须使它开放,默认值是NO
OK,保存后退出。

几点说明:1, anon_other_write_enable选项可以使匿名用户删除文件目录,一般不开启。2,匿名用户要拥有上传的权限除应该在上面VSFTP的配置文件里设置几项之外,还应该使目录的其他组权限有写的权限。c)其他的几种有用的配置选项。1,开启ACSII上传下载传输模式ascii_download_enable=YES //开启了下载时的ASCII模式数据传输ascii_upload_enable=YES //开启了上传时的ASCII模式数据传输因为二进制传输不用进行二进制和ASCII码之间的相互转化,因而速度较ASCII模式快,VSFTP在默认情况下是不开启ASCII码传输模式的,上述两个语句使ASCII上传下载传输模式分别开启。2,更改FTP服务器默认监听端口listen_port=2121 //改变默认的21端口号为21213,设置用户会话的空闲中断时间idle_session_timeout=300 //连接服务器的用户在5分钟时间内没有任何动作将被断开,默认为3004,设置空闲的数据连接的中断时间data_connection_timeout=300 //数据连接空闲5分钟将被断开,默认为300秒5,设置客户端空闲时的自动中断和激活连接的时间accept_timeout=60 //客户端建立PASV模式数据连接空闲1分钟自动中断,默认为60秒connect_timeout=60 //客户端在中断1分钟后自动激活连接,默认为60秒6,设置最大传输速率限制local_max_rate=50000 //本地用户最大传输速率为50kbytes/sanon_max_rate=30000 //匿名用户最大传输速率为30kbytes/s若把上述的数值设为0则为不限速,这也是VSFTP的默认值。7,设置最大客户端连接数max_clients=30 //服务器最大连接数设为30,默认为0,即不加以限制,安全的FTP应该加以限制8,设置客户端连接时的端口范围pasv_min_port=50000pasv_max_port=60000上述语句使客户端连接端口范围在50000至60000之间,这有利于提高服务器的安全。默认两个值都是0,即不限制,使用任意端口。9,把用户限制在家目录,即设置chroot()chroot_local_userchroot_list_enablechroot_list_file要设置chroot(),可以使用chroot_local_user=YES上述语句是使全部的本地用户都被限制在家目录,这无法只限制特定的用户,要限制特定用户,使用下面的方法:chroot_local_user=NO //关闭本地用户chroot()chroot_list_enable=YES //开启要设置chroot()用户项chroot_list_file=/etc/vsftpd.chroot_list //指定要设置chroot()的特定用户文件,这个文件的格式应该每个用户名占用一行11,开启进站或进入目录的欢迎或说明性文字dirmessage_enable=YES //开启目录文字选项message_file=.welcome //欢迎或说明性文字文件设为.welcome,在默认是.message这样在目录下建立文件.welcome(默认是.message),在用户进入目录时可把该文件的内容显示出来。10,开启FTP服务器的日志功能xferlog_enable=YES //启动日志记录功能,记录在xferlog_file指明的文件里xferlog_file=/var/log/ftp.log //日志记录在文件/var/log/ftp.log里,默认值为/var/log/xferlog上面不是默认配置,默认配置是如下语句xferlog_enable=YESvsftpd_log_file=/var/log/vsftpd.log //日志记录在/var/log/vsftpd.log里,默认也是这个文件默认配置xferlog_std_format语句没有启用。d)配置基于用户的访问控制有两种方法:A)使用认证文件,前面我们让本地用户能够登录服务器的时候是使用源码树里的一个样本pam文件(RedHat/vsftpd.pam),把它复制到/etc/pam.d/目录下并改名为ftp就可使本地用户登录,改名为ftp的原因是VSFTP默认的pam认证文件名为ftp,但我们可以使用下面的语句来改变pam_service_name=vsftppam //这样设置后VSFTP使用/etc/pam.d/vsftppam文件来认证用户回来主题,应该如何使本地用户不能登录呢?回想到原来本地用户不能够登录是因为没有ftp这个认证文件,那么我们把它删除就可以了。B)使用VSFTP相关的几个语句userlist_enableuserlist_denyuserlist_file用这三个语句可以控制指定用户不能登录,方法如下:userlist_enable=YES //用户清单功能开启userlist_deny=YES //把用户清单设为拒绝用户清单userlist_file=/etc/vsftpd.user_list //用户清单文件为/etc/vsftpd.user_list,这个文件的格式也是一个用户名占用一行因为第二个语句把文件/etc/vsftpd.user_list设为拒绝用户清单,那么,文件里面的用户名都不能登录。或是另外一种设置方法:userlist_enable=YES //用户清单功能开启userlist_deny=NO //把用户清单设为接受用户清单userlist_file=/etc/vsftpd.user_list //用户清单文件为/etc/vsftpd.user_list因为第二个语句把文件/etc/vsftpd.user_list设为接受用户清单,那么,文件里面的用户名都能登录,不在文件里的用户不能登录。从这里可以看出userlist_deny语句起了开关的作用,可把用户清单文件设为拒绝或是接受,是不是很有趣?:)e)配置安全的匿名FTP站点。要求匿名用户只有浏览和下载权限,没有其他的用户。通过上面的学习,配置这种常见的匿名FTP站点很容易:首先,把本地用户禁止登录,可以使用上面介绍的方法,这里不再复述。然后,确定把下面的语句设为下面的样例:anon_world_readable_only=YESanon_upload_enable=NOanon_mkdir_write_enable=NOwrite_enable=NO这样做之后,就能有一个满足要求的FTP站点了,其实只要设anon_world_readable_only=YES也可以做到上述效果的了。f)上面讲述的启动服务器的方法是都是以独立(standalone)进程的方式启动的,还有一种启动VSFTP的方法,就是使用超级服务器xinetd启动,这两种方法的区别是,xinetd的启动使支持的并发进程比独立进程方式启动少,不适合访问人数多的大站点,一般如果访问的流量少可以使用xinetd启动,如果是访问的流量多应该以独立方式启动。好了,下面介绍以xinetd启动的方法:编辑/etc/vsftpd.conf把原来加入的listen=YES这行删除,或前面加注释#编辑/etc/xinetd.d/vsftpd(这个文件在源码安装时已经被复制存在了),确定这行值为NO:disable= NO执行下面的命令重启xinetd服务器:#service xinetd restartStopping xinetd: [ OK ]Starting xinetd: [ OK ]#ftp 127.0.0.1Connected to 127.0.0.1 (127.0.0.1).220 (vsFTPd 1.2.1)Name (127.0.0.1:root): test331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.成功通过xinetd启动VSFTP了。可以通过xinetd的功能实现控制VSFTP,下面一一介绍:1,配置基于主机的访问控制配置基于主机的访问控制可以使用超级服务器xinetd的功能,由xinetd去控制特定的IP可以访问FTP服务器,VSFTP只提供基于本地用户的访问控制,控制特定的访问可使用下面的xinetd的语句:only_from //允许访问IPno_access //拒绝访问IPper_source //每个IP的最大连接数instances //并发最高连接数access_time //访问时间banner_fail //登录失败显示的内容文件这里的具体使用属于xinetd的内容,可以参考相关内容,这里就不多说了.



你可能感兴趣的:(linux)