ftp基础1

来源:互联网 发布:菜谱制作软件 编辑:程序博客网 时间:2024/06/07 16:22

一. 查看服务与端口的对应文件

vim  /etc/services

二. ftp是工作在应用层上的

FTP:基于tcp协议   两个链接

一个事命令(控制)链接  一个事数据链接

当你连上服务器 发现有你想要的的文件时 发出下载请求 会开启数据链接

分为两种工作模式

1.主动模式(默认端口:21传指令,20传数据)

客户端请求服务器的21端口,服务器响应,建立命令链路;当想要传输数据时,客户端会发送PORT指令告诉服务器,“我开启了xxx端口,来连我吧”,然后服务器就会开启20端口,与客户端建立数据链路,传输数据。

2.被动模式(端口:21端口传指令,开一个大于1024的随机端口传数据)

客户端请求服务器的21端口,服务器响应,建立命令链路;当想要传输数据时,客户端会发送PASV指令告诉服务器,我要发数据,服务器就会告诉客户端自己开了哪个端口,之后等待客户端来连接,客户端就按照服务器的指示来连接那个大于1024的端口,建立数据链路。

ftp命令 (get 下载 mget对文件下载  put上传 mput多文件上传 )

http传输时 会利用mine把二进制变成文本传输,而ftp传输时,原本是什么格式,就用什么格式传输,二进制就传输

二进制,文本就传输文本

三.vsftp 在redhat里

/var/ftp:作为其提供服务的根目录(除了root外 任何人不能有些权限)

要上传下载文件时,需要在/var/ftp/目录下建个子目录,给子目录写权限,用ftp来上传文件时,首先要现金这个新建的目录,在里面进行上传和下载 否则会报错553 Could not create file.

为安全,不要给ftp用户登录系统的权限

root@lyw:/etc/pam.d# finger ftp产看ftp用户的家目录在哪

root用户可以直接通过修改“/etc/passwd” 文件来修改用户的登录shell,也可以使用usermod命令来进行修改

usermod -s /bin/csh ftp

linux系统里一般都用vsftp(安全的ftp)

ftp用户分为3类:

匿名用户-------> 需要对应一个系统用户   一般是ftp

系统用户

虚拟用户---------> 需要对应一个系统用户  一般是ftp

//------------------------------------------------------------------------------------------------------------

1.匿名用户形式:在默认安装的情况下,系统只提供匿名用户访问

2.本地用户形式:以/etc/passwd中的用户名为认证方式

3.虚拟用户形式:支持将用户名和口令保存在数据库文件或数据库服务器中。相对于ftp的本地用户形式来说,虚拟用户只是ftp服务器的专有用户,虚拟用户只能访问ftp服务器所提供的资源,这大大增强了系统本身的安全性。

相对于匿名用户而言,虚拟用户需要用户名和密码才能获取ftp服务器中的文件,增加了对用户和下载的可管理性。

对于需要提供下载服务,但又不希望所有人都可以匿名下载,即需要对下载用户进行管理,又考虑到主机安全和管理

方便的ftp站点来说,虚拟用户是一种极好的解决方案。

//-------------------------------------------------------------------------------------------------------------

debian安装vsftp     (用系统用户登录ftp,默认都登录到他的家目录下)

1. apt-get install -y vsftpd

2.添加ftp账号和目录

 useradd -d /data/vsftpd -s /bin/false pwftp

3.修改账户密码

passwd pwftp

4.修改指定目录的权限

mkdir -p /data/vsftpd

chown -R pwftp.pwftp /data/vsftpd

root@lyw:/lib64# ls -ld /data/vsftpd/
drwxr-xr-x 2 pwftp pwftp 4096 Oct 19 09:14 /data/vsftpd

5.配置vsftp

vim /etc/vsftpd.conf

将配置文件中“anonymous_enable=YES” 改为 “anonymous_enable=NO” 是否允许匿名用户登录

取消如下配置前的注释符号:

local_enable=YES

write_enable=YES 定义本地用户是否能上传文件

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

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

ftp 127.0.0.1 登陆报错

530 Login incorrect.
Login failed.

解决方法:

vim /etc/pam.d/vsftpd

#auth   required        pam_shells.so  将这行注释掉

问题:远程连接登录不上ftp

解决:

vim /etc/vsftpd.conf

在最下面添加以下信息

pasv_enable=YES 开启被动模式    (主动模式下对方可能有防火墙限制连接不进去)

pasv_min_port=4000  随机最小端口

pasv_min_port=4005  随机最大端口

然后在加载内核

root@lyw:~# modprobe ip_conntrack_ftp
root@lyw:~# modprobe ip_nat_ftp

重启服务器

root@lyw:/lib64# /etc/init.d/vsftpd restart

//------------------------------------------------------------------------------

添加匿名用户登录

anonymous_enable=YES运行匿名用户登录

anon_root=/home/luyiwei匿名用户登录后的位置

anon_upload_enable=yes支持匿名用户上传

anon_mkdir_write_enable=yes  支持匿名用户创建目录

注意:/home/luyiwei/ 这个目录只能给root写权限别人都没写权限  然后在/home/luyiwei 下在建立一个目录,这个目录可以让所有人或者ftp用户有写权限 把要下载的东西放入这个新建的目录。让用户上传下载 都进入这个新的目录进行操作。

匿名登录时,也需要填账号名  anonymous或ftp 不需要添加密码

ftp>help   查询命令帮助

具体的信息可以通过抓包工具来查看

如:tcpdump抓包

tcpdump -i eth0 prot 80 -vv -X -nn

//-------------------------------------------------------------

xferlog_enable=YES 是否打开传输日志

xferlog_file=/var/log/vsftpd.log  传输日志位置

Listen=YES   ftp是否工作在一个独立守护进程(每次登陆ftp时,使用时间都很长就用独立守护进程)

//--------------------------------------------------------------

安全通信方式

ftps:ftp+ssl/tls

sftp: openssh提供的子系统SubSystem,sftp(基于ssh实现安全的传输功能)

参考文章:

  http://www.cnblogs.com/ilinuxer/p/5087447.html

http://blog.csdn.net/bluishglc/article/details/42398811