博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FTP服务器
阅读量:5877 次
发布时间:2019-06-19

本文共 9374 字,大约阅读时间需要 31 分钟。

hot3.png

为了实现不同平台的文件共享,比如windows 和linux 。我们采用强大的文件共享工具FTP

 

1、首先安装FTP软件

yum install ftp.x86_64  vsftpd.x86_64 lftp.x86_64

 

2、在ftp的主配置文件中 /etc/vsftpd/vsftpd.conf ,我们为给我们的ftp指定路径

[root ~]# vim /etc/vsftpd/vsftpd.conf

  local_root=/opt/sunny

171525_lf7R_2918364.png

主配置文件/etc/vsftpd/vsftpd.conf里的参数说明:

    local_enable=YES允许本地用户登录
    anonymous_enable=YES 允许匿名用户登录
    banner_file=/var/banner欢迎信息 banner文件里面自己设置欢迎内容
    local_root=/opt为本地所有用户设置一个共有的共享目录
    write_enable=YES本地用户上传权限
    local_umask=022本地用户文件的最大权限
    chroot_local_user=YES不允许本地登录的用户进行目录切换
    local_max_rate=1000000 允许本地用户的最大传输速率1M
    max_clients=1允许ftp服务器的最大客户端连接数
    userlist_enable=YES 开启userlist用户列表功能
    userlist_deny=YES 让/etc/vsftpd/user_list里面的用户不能登录
    userlist_deny=NO 让/etc/vsftpd/user_list里面的用户能登录

3、启动ftp 服务[root ~]# /etc/init.d/vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]
[root ~]#

 

4、

4.1本机验证

 为了防止验证的时候不必要的错误,我们先改一下用户的密码

[root ~]# passwd lilichow

改好密码后,我们先用匿名用户登录验证

[root ~]# lftp 127.0.0.1
lftp 127.0.0.1:~> ls
drwxr-xr-x    2 0        0            4096 May 11 06:17 pub
lftp 127.0.0.1:/> quit
[root@clone ~]#

[root@clone sunny]# ll

total 0
-rw-r--r-- 1 root root 0 Oct 12 17:00 1
-rw-r--r-- 1 root root 0 Oct 12 17:00 2
-rw-r--r-- 1 root root 0 Oct 12 17:00 3
-rw-r--r-- 1 root root 0 Oct 12 17:00 4
-rw-r--r-- 1 root root 0 Oct 12 17:00 5
[root@clone sunny]# lftp 127.0.0.1 -u lilichow,123456 

         //用户lilichow登陆可以正常登上去,并且可以将/opt/sunny 下面的文件列出来了

lftp lilichow@127.0.0.1:~> ls
-rw-r--r--    1 0        0               0 Oct 12 09:00 1
-rw-r--r--    1 0        0               0 Oct 12 09:00 2
-rw-r--r--    1 0        0               0 Oct 12 09:00 3
-rw-r--r--    1 0        0               0 Oct 12 09:00 4
-rw-r--r--    1 0        0               0 Oct 12 09:00 5
lftp lilichow@127.0.0.1:~> quit
[root@clone sunny]# lftp 127.0.0.1   //匿名用户只能访问到目录下面d
lftp 127.0.0.1:~> ls
drwxr-xr-x    2 0        0            4096 May 11 06:17 pub
lftp 127.0.0.1:/>

4.2 客户机验证,跟在本机上的验证方法是一样的

[root@max user1]# lftp 172.16.224.133

lftp 172.16.224.133:~> ls
drwxr-xr-x    2 0        0            4096 May 11 06:17 pub
lftp 172.16.224.133:/> quit
[root@max user1]# lftp 172.16.224.133 -u clara,123456
lftp clara@172.16.224.133:~> ls
-rw-r--r--    1 0        0               0 Oct 12 09:00 1
-rw-r--r--    1 0        0               0 Oct 12 09:00 2
-rw-r--r--    1 0        0               0 Oct 12 09:00 3
-rw-r--r--    1 0        0               0 Oct 12 09:00 4
-rw-r--r--    1 0        0               0 Oct 12 09:00 5
lftp clara@172.16.224.133:~> quit

 

 

5、知识进阶

  登录进入之后

                ls:列出当前文件列表
                cd:切换目录
                pwd:打印ftp服务器的路径
                put/mput:上传文件
                get/mget:下载文件
                mirror:下载目录
                mirror -R local_dir remote_dir:上传目录

注 1:从哪个目录进入到ftp 系统后,get下载下来的文件就会在哪个目录里面,为了不让系统过于混乱,我们一般从登录用户的家目录下面去登录ftp

[root@clone ~]# cd /home/lilichow/                        #我们从lilichow这个用户的家目录下面去登录ftp

[root@clone lilichow]# lftp 127.0.0.1 -u lilichow,123456
lftp lilichow@127.0.0.1:~> ls
-rw-r--r--    1 0        0               0 Oct 12 09:00 1
-rw-r--r--    1 0        0               0 Oct 12 09:00 2
-rw-r--r--    1 0        0               0 Oct 12 09:00 3
-rw-r--r--    1 0        0               0 Oct 12 09:00 4
-rw-r--r--    1 0        0               0 Oct 12 09:00 5
lftp lilichow@127.0.0.1:~> get 5
lftp lilichow@127.0.0.1:~> quit
[root@clone lilichow]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 12 17:00 5
[root@clone lilichow]#

 

注2:匿名用户登录ftp服务器,默认登录到/var/ftp 家目录下,但是该目录只有755的权限,我们现在将目录的权限777后,在客户端进行匿名登录

[root@max lilichow]# lftp 172.16.224.133

lftp 172.16.224.133:~> ls
ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable anonymous root  //权限被拒绝
lftp 172.16.224.133:~> ls
drwxr-xr-x    2 0        0            4096 May 11 06:17 pub     //修改FTP服务器的权限为755后,又可以正常登录了
lftp 172.16.224.133:/>

 

 因为ftp服务本身不允许系统权限给匿名写,所以解决方法是在登录目录,再去创建一个用于上传的目录,给一个写权限

[root@clone clara]# chmod 777 /var/ftp/pub  //将服务器下面的pub目录改为777的权限

[root@clone clara]# cd /var/ftp/pub/      //在pub下面新建两个文件,并且将其中一个文件的权限改为777
[root@clone pub]# touch 1
[root@clone pub]# touch 2
[root@clone pub]# ll
total 0
-rw-r--r-- 1 root root 0 Oct 13 10:52 1
-rw-r--r-- 1 root root 0 Oct 13 10:52 2
[root@clone pub]# chmod 777 1
[root@clone pub]# ll
total 0
-rwxrwxrwx 1 root root 0 Oct 13 10:52 1
-rw-r--r-- 1 root root 0 Oct 13 10:52 2
[root@clone pub]#

客户机继续以匿名用户登录

lftp 172.16.224.133:/> ls

drwxr-xr-x    2 0        0            4096 May 11 06:17 pub
lftp 172.16.224.133:/> cd pub/
lftp 172.16.224.133:/pub> ls
-rwxrwxrwx    1 0        0               0 Oct 13 02:52 1
-rw-r--r--    1 0        0               0 Oct 13 02:52 2
lftp 172.16.224.133:/pub> rm 2                                 
rm: Access failed: 550 Permission denied. (2)
lftp 172.16.224.133:/pub> rm 1            //但是不管删除哪一个文件权限都被拒绝
rm: Access failed: 550 Permission denied. (1)
lftp 172.16.224.133:/pub>

lftp 172.16.224.133:~> put desk          //上传文件也被拒绝

put: Access failed: 550 Permission denied. (desk)  
lftp 172.16.224.133:/>

因为系统权限允许了,但是服务本身的权限还是不允许,为了实现匿名用户的上传和下载功能,我们还需要去改服务的配置参数

 

114807_8EDc_2918364.png

anonymous_enable=YES

anon_upload_enable=YES        --允许匿名用户上传文件
anon_mkdir_write_enable=YES    --允许匿名用户创建目录
anon_other_write_enable=YES    --允许匿名用户删除重命名
 

然后重启服务

登录客户机,我们已经可以从黎明

[root@max lilichow]# lftp 172.16.224.133

lftp 172.16.224.133:~> ls
drwxrwxrwx    2 0        0            4096 Oct 13 02:52 pub
lftp 172.16.224.133:/> cd pub
lftp 172.16.224.133:/pub> ls
-rwxrwxrwx    1 0        0               0 Oct 13 02:52 1
-rw-r--r--    1 0        0               0 Oct 13 02:52 2
lftp 172.16.224.133:/pub> mkdir lili
mkdir ok, `lili' created
lftp 172.16.224.133:/pub> touch 557
Unknown command `touch'.
lftp 172.16.224.133:/pub> vim 557
Unknown command `vim'.
lftp 172.16.224.133:/pub> vi 557
Unknown command `vi'.
lftp 172.16.224.133:/pub> rm 2
rm ok, `2' removed
lftp 172.16.224.133:/pub> ls
-rwxrwxrwx    1 0        0               0 Oct 13 02:52 1
drwx------    2 14       50           4096 Oct 13 05:42 lili

lftp 172.16.224.133:/pub> put ground

lftp 172.16.224.133:/pub> mirror -R tofu
Total: 1 directory, 0 files, 0 symlinks
lftp 172.16.224.133:/pub> ls
-rwxrwxrwx    1 0        0               0 Oct 13 02:52 1
-rw-------    1 14       50              0 Oct 13 05:46 ground
drwx------    2 14       50           4096 Oct 13 05:42 lili
drwx------    2 14       50           4096 Oct 13 05:46 tofu
lftp 172.16.224.133:/pub>

 

 

 

注3:普通用户的上传和删除文件相对就要简单许多,

服务器上:只需要将我们ftp存放的目录下设置rwx的权限就好

[root@clone pub]# setfacl -m u:clara:rwx  /opt/

[root@clone pub]# setfacl -m u:clara:rwx  /opt/sunny/   
[root@clone pub]#

 

客户机上就可以进行上传和下载了

[root@max lilichow]# lftp 172.16.224.133 -u clara,123456

lftp clara@172.16.224.133:~> put table
lftp clara@172.16.224.133:~> mirror -R tofu/  
Total: 1 directory, 0 files, 0 symlinks
lftp clara@172.16.224.133:~> ls
-rw-r--r--    1 0        0               0 Oct 12 09:00 1
-rw-r--r--    1 0        0               0 Oct 12 09:00 2
-rw-r--r--    1 0        0               0 Oct 12 09:00 3
-rw-r--r--    1 0        0               0 Oct 12 09:00 4
-rw-r--r--    1 0        0               0 Oct 12 09:00 5
-rw-r--r--    1 504      504             0 Oct 13 03:03 table
drwxr-xr-x    2 504      504          4096 Oct 13 03:04 tofu
lftp clara@172.16.224.133:~>

禁止普通用户登录:

方法一:    local_enable=NO        --建议使用服务的参数去禁止,但是这里会把所有的普通用户给禁止掉,要实现特定的用户的控制,参考例七

    
方法二:/etc/passwd 里把普通用户最后一列,改为/bin/false

/bin/bash    --可以登录系统,也可以登录ftp

/sbin/nologin  --不可以登录系统,但可以登录ftp
/bin/false    --又不可以登录系统,又不可以登录ftp

注4. 

ftp> lcd /etc    --cd是切换服务端的目录,lcd是切换客户端的目录

Local directory now /etc
ftp> put /etc/inittab   aaa    --使用客户端的绝对路径来put,注意后面要加上put过来的名字
local: /etc/inittab remote: aaa

 

[root@max lilichow]# lftp 172.16.224.133 -u clara,123456  //用户登录后,如果我们不加限制,用户甚至可以访问根目录

lftp clara@172.16.224.133:~> cd /
cd ok, cwd=/                      
lftp clara@172.16.224.133:/> ls
dr-xr-xr-x    2 0        0            4096 Oct 10 08:38 bin
dr-xr-xr-x    5 0        0            4096 Sep 28 09:20 boot
drwxr-xr-x   21 0        0            3920 Oct 13 01:09 dev
drwxr-xr-x   92 0        0            4096 Oct 13 02:31 etc
drwxr-xr-x    9 0        0            4096 Oct 13 02:31 home
dr-xr-xr-x    7 0        0            4096 May 22 23:51 iso
dr-xr-xr-x   11 0        0            4096 Oct 10 08:38 lib
dr-xr-xr-x    9 0        0           12288 Oct 10 08:38 lib64
drwx------    2 0        0           16384 Sep 28 09:18 lost+found
drwxr-xr-x    2 0        0            4096 Sep 23  2011 media
drwxr-xr-x    2 0        0            4096 Sep 23  2011 mnt
drwxrwxrwx    2 0        0            4096 Oct 10 08:30 myfile
drwxrwxrwx    5 0        0            4096 Oct 12 08:54 opt
dr-xr-xr-x  104 0        0               0 Oct 13  2016 proc
dr-xr-x---   23 0        0            4096 Oct 13 05:07 root
dr-xr-xr-x    2 0        0           12288 Oct 11 05:48 sbin
drwxr-xr-x    2 0        0            4096 Sep 28 09:18 selinux
drwxr-xr-x    3 0        0            4096 Oct 11 03:33 share
drwxr-xr-x    2 0        0            4096 Sep 23  2011 srv
drwxr-xr-x   13 0        0               0 Oct 13  2016 sys
drwxrwxrwt    8 0        0            4096 Oct 13 01:09 tmp
drwxr-xr-x   13 0        0            4096 Sep 28 09:18 usr
drwxr-xr-x   22 0        0            4096 Oct 12 08:36 var
drwxr-xr-x    2 0        0            4096 Oct 10 09:43 zheng
lftp clara@172.16.224.133:/>

为了安全,我们把用户锁定到登录的目录里 即chroot 笼环境

152449_Z7cg_2918364.png

[root@max lilichow]# vim /etc/vsftpd/chroot_list  //手动创建这个文件,默认不存在,并写上要加入笼环境的用户名,一行写一个

152646_59Cn_2918364.png

重启服务器

再登录到客户机上进行测试,发现已经不能随意进入到其他目录下了。

另外还有就是,/etc/vsftp/ftpusers|user_list  同样也是可以用来控制用户的访问权限的。这里就不再一一表述了。

 

 

local_enable=YES允许本地用户登录ftp:要点1chroot_list_enable=yeschroot_list_file=/etc/vsftp.chroot_list是否将系统用户限制在自己的home目录下,如果选择了yes那么文件/etc/vsftp.chroot_list 中列出的是不chroot的用户例子特定使用者peter,jonn不得变更目录使用者预设目录为/home/peter  /home/jonn当不希望使用者在ftp时能够切换到上一层目录/home第一步:修改主配置文件/etc/vsftpd.confchroot_list_enable=yeschroot_list_file=/etc/vsftpd.conf第二步:创建文件/etc/vsftpd.conf内容增加两行peterjonn第三步:重新启动vsftpdservice vsftpd restart检测:当peter想要切换到其他的非下一级目录则出现警告----->550failed to change directory要点2user_config_dir定义个别使用者设定文件所在目录例子主机有使用者test1,test2第一步:修改配置文件user_config_dir=/etc/vsftpd/userconf第二步:创建目录mkdir /etc/vsftpd/userconf第三步:指定默认访问的各自的共享目录vim /etc/vsftpd/userconf/tset1--------->local_root=/www/test1vim /etc/vsftpd/userconf/tset2--------->local_root=/www/test2第四步:创建默认读取文件vim /www/test1/index.htmlvim /www/test2/index.html第五步:重启服务生效service vsftpd restart检测:当test1登录时默认读取/www/test1/index.html当test2登录时默认读取/www/test2/index.htmlapache开启用户认证第一步:修改主配置文件/etc/httpd/conf/httpd.conf
allowoverride authconfig或者allowoverride all-------->表示允许对/var/uplooking目录下的文件进行用户认证
第二步:在限制的访问目录下建立隐藏文件/var/uplooking/.htaccesssAuthName "这里显示的文字会显示在浏览器弹出的窗口"AuthType basicAuthUserFile /var/password/.htuser--->存放认证用户帐号和密码(不可以放在普通用户可以下载,浏览的目录内)require valid-userAuthName 指定认证区域,区域名称在弹出框显示给用户AuthType 一般是basicAuthUserFile /var/password/.htuser--->存放认证用户帐号和密码(不可以放在普通用户可以下载,浏览的目录内)require valid-userAuthName 指定认证区域,区域名称在弹出框显示给用户AuthType 一般是basicAuthUserFile 指定用户名和密码,每行为一对require valid-user第三步:生成包含帐号和密码的隐藏文件htpasswd -c /var/uplooking/.htuser gaomi再输入两次密码

 

 

 

 

转载于:https://my.oschina.net/liubaizi/blog/758592

你可能感兴趣的文章
ng-controller指令
查看>>
【Java例题】5.2 数组转换
查看>>
Snacks
查看>>
Java学习笔记(三)Java2D组件
查看>>
关于Servlet的getInitParameter的使用
查看>>
在线思维导图
查看>>
Debian 7 的内核 3.2 升级到3.16
查看>>
MySQL数据类型和常用字段属性总结
查看>>
MongoDB的存储结构及对空间使用率的影响
查看>>
java String
查看>>
renhook的使用
查看>>
android 进程模块获取
查看>>
Linux学习笔记(十二)--命令学习(用户创建、删除等)
查看>>
我的友情链接
查看>>
android sdk tools 一览
查看>>
安装多个mysql
查看>>
DOCKER windows 7 详细安装教程
查看>>
养眼美女绿色壁纸
查看>>
U盘启动盘制作工具箱 v1.0
查看>>
增强myEclipse的提示功能
查看>>