Linux之ftp服务

一、什么时ftp服务

ftp是一种文件传输协议,是TCP/IP协议组中的协议之一。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。

二、ftp的安装

本次内容在虚拟机上进行,用真机当作客户去访问虚拟机上的东西

1)用yum源方式下载安装ftp,如下图

2)开启服务,并可以设置为开机自启动:


3)并且要对自己的火墙进行设置,方便他人访问;

:打开火墙设置

Configuration:选择Permanent永久

Service在ftp前选择勾,最后Options选择Reload Firewall完成,就可以关闭,记得修改完后重启firewall服务,还有下面这个文件查看其是否关闭,没有关闭记得关闭,关闭后重启虚拟机

三、ftp访问的基本信息及设定

1、ftp的默认共享目录为/var/ftp,下面我们用真机去访问,访问方式为lftp+要访问端的ip,如下图


2有时候我们让一些匿名用户来访问,我们可以在其配置文件里编辑实现,vim /etc/vsftpd/vsftpd.conf,如下图

此时我们把anonymous_enable设置为NO,编辑完成后重启vsftpd服务,发现匿名用户(真机)无法登陆,而虚拟机自身用户(本地用户student)输入密码后可以登陆,如下图

同样本地用户能否登陆,只需改变local_enable的状态即可。


3、ftp对登陆用户可写的设定,将配置文件中write_enable改为NO,记得改完重启服务

我们在student的家目录下建立一个文件student,用student用户身份去访问时发现可以查看文件,但是没有删除的权力,如下图

显示550报错(后面会统一说里面出现的报错代码代表什么)

4、匿名用户上传的权力,编辑配置文件,写权力和匿名用户可以上传的命令打开,如下图:

重启服务后 为了不破坏其他文件,将上传文件全部上传至服务器下的/var/ftp/pub中,需要改pub目录的权限和所在组,完成后我用真机(匿名用户)上传了/etc/passwd文件尝试,成功,如下图


5、配置文件里设置匿名用户可以从访问端获取文件,新建文件,删除和重命名文件的权力

将anon_world_readable_only修改为NO,即可以从ftp获取(get)文件

将anon_other_write_enable修改为YES,即可删除和重命名文件

anon_mkdir_write_enable修改为YES,即可新建文件,修改完后记得重启服务,表现如下图


6、chown_username=student(修改上传文件的所有人要和uploads一起开启,表示开启文件上传用户的功能)
chown_upload_mode=xxx(修改上传文件的权限,这个开启时umask那个失效),修改完后记得重启服务,如下图:

可以很明显的看到修改完后,我上传group文件,他的所有人变成1000(也就是student的id),他的权限也变成了我设置的0644


7、用户家目录的修改,anno_root=(这里我设置为)/westos(意思就是用户家目录的修改,原来用户用lftp命令一进来是/var/ftp/ 现在可以修改为/westos即用户lftp进来看到的是/westos/里的东西),如下图:

这里我先建立/westos文件,在其下我新建了一些文件,然后去配置文件里写入修改家目录命令配置完后重启服务

匿名 用户的修改


匿名用户再进来时,就是/westos目录,完成了匿名用户家目录的修改

本地用户的修改


8、匿名用户传输速率的限速设置(如果很多人来访问你并上传和下载文件,不限制速度会让服务器崩掉,所以限速保护服务器)

我们先在匿名用户(真机)桌面下建立一个2G的文件,如下:

在不限制的速率的条件下上传可以看到速率很快(约46M/S):


此时我们在配置文件里anon_max_rate设置速率,单位为字节,这里我设置为100kb,如下图修改完后记得重启服务

再次上传观察到速率在100k/s左右

9、最大链接数的设定,在配置文件里max_clients=数字设置,当超过链接数时需要等待,当有人退出链接,下一个才可以链接,排队机制,如下图,我设置最大链接数为2:

然后用真机打开三个shell去链接,可以看到只能有两个链接上


10、限制本地用户的浏览权限,当没限制时,本地用户可以切到/看到根目录下的所有东西;如下图

这样很不安全,因此我们可以在配置文件里限制本地用户的浏览权限,如下图

重启服务在登陆时,发现此时本地用户执行lftp命令,会报错500,是因为权限过大,为了保护安全不让访问,所以我们需要减小家目录下的权限,如下图

然后去登陆,发现用户被锁在家目录下,查看不了根目录的文件了,如下图:


11、ftp黑白名单的设定,/etc/vsftpd/chroot_list为其黑白名单,当chroot_local_user设置为YES表示写在名单里的用户是白名单,用户可以进入/访问其他目录,改成NO表示为黑名单,写在名单里的用户访问不了其他目录。

1)但是本身这个文件/etc/vsftpd/chroot_list是不存在的,我们需要去建立,建立好后可以在名单里写入用户,如下图,这里我把student写入这个名单,此时为白名单:

再在配置文件里找到下图两条语句,将其注释删掉,如下图:

此时发现原本被所在家目录下的studnet用户又可以访问/下的其他目录了

2)黑名单的设置:chroot_local_user改为NO,此时写在/etc/vsftpd/chroot_list下的为黑名单,我没有更改也就是student此时在黑名单里:

登陆发现student被锁在家目录下,访问不了/下的其他目录:


这里设置的黑白名单是本地用户被限制在家目录下,去不了根目录,下面要介绍的黑白名单是限制本地用户的登陆权限,如下

3)在vsftpd下有下图两个文件,其中user_list表示临时黑名单,ftpusers表示永久黑名单

如下图,将student写入user_list下,用student登陆被拒绝,如下图:



下面,将student从user_list删除,将student写入ftpusers下,用student身份登陆,同样登陆失败,如下图:



4)编辑配置文件,加入user_list=NO,此时user_list为白名单,写在里面的用户可以登录,没写在的不能,同样,我将student写入user_list,但此时student用户也在ftpusers下,这是会发现ftpusers的优先级比较高,因为student用户还是无法登陆,如图



将student从ftpusers中删除可以正常登陆。


12、虚拟用户的身份设定(为了保护系统的安全,因为用本地用户身份登陆权利过大,就和微信一样,我们每个人登陆的都是自己独立的账号,而不是系统账号不能对系统进行操作)

1)在/etc/vsftpd/下建立userfile ,在里面写入你要加的用户和密码,因为这是用户和密码,所以我们再将其改为hash的加密方式,如下图:


转变后我们可以观察到变化,如下图:


2)接下来我们要去配置文件里编辑pam_service_name=改为接下来你要写的pam文件名称,如下图


我将其改为ftpcheck,也就是用ftp方式访问时会读取我这个文件里的内容,如下图,我们编辑这个文件:


文件里第一行写入:account(表示用户)  required(表强制)  pam_userdb.so(表认证程序)  db=/etc/vsftpd/userfile(表你用户所在文件)

 第二行:                 auth(表示密码)        required               pam_userdb.so               db=/etc/vsftpd/userfile

3)再次编写配置文件,加入guest_enable=YES,guest_username=student(表示用student身份登陆)如下图:


完成后登陆,如下图:(默认进去是student的家目录/home/stdent/下)


但是不能所有的虚拟用户登陆进去都是student的家目录,我们如何为他们建立自己独立的家目录,如下


13、虚拟账号独立家目录的设定

1)在配置文件里加入local_root=/wenjian/$USER和user_sub_token=$USER,如下图


2)完成后给他们建立独立的家目录,如下图


3)再次登陆访问每个用户就有了自己独立的家目录


但是发现此时用户无法进行上传文件或删除文件的操作,这是因为被限制了,那么如何解决这种限制,如下


14、让固定的用户可以进行固定操作

1)首先在其目录下建立一个pub目录,并将pub加入所属用户的组(我这里是student),然后在给pub写的权限,使我们进入之后可以在pub下进行操作,具体步骤如下图




2)这时候需要去ftp配置文件里,写入user_config_dir=/etc/vsftpd/confdir(这个文件自己建立,我们要的固定操作需要写在这个文件里),如下图:


3)创建好这个文件后,我们编辑这个文件,在其后加入你想要赋予功能的固定用户,这里我选择的是赋予student1用户可以put上传文件的操作,如下图




可以看到student1具有了上传的功能,同理还可以让其具有删除等的功能,还是编辑student1文件

vim /etc/vsftpd/confdir/student1 在文件里写入你想要赋予的功能即可,如下图:



四、ftp常见报错

530认证失败
550程序本身不允许你这样做
553服务器上的文件系统不允许你写
500权限过大(一般是对/var/ftp操作,但子目录可以pub可以操作)








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值