FTP服务器

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

 

1、首先安装FTP软件

yum install ftp.x86_64  vsftpd.x86_64 lftp.x86_64

 

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

[root@clone ~]# 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@clone ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@clone ~]#

 

4、

4.1本机验证

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

[root@clone ~]# passwd lilichow

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


[root@clone ~]# 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  同样也是可以用来控制用户的访问权限的。这里就不再一一表述了。

 

 

l
ocal_enable=YES允许本地用户登录


ftp:
要点1
chroot_list_enable=yes
chroot_list_file=/etc/vsftp.chroot_list
是否将系统用户限制在自己的home目录下,如果选择了yes那么
文件/etc/vsftp.chroot_list 中列出的是不chroot的用户
例子
特定使用者peter,jonn不得变更目录
使用者预设目录为/home/peter  /home/jonn
当不希望使用者在ftp时能够切换到上一层目录/home
第一步:修改主配置文件/etc/vsftpd.conf
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.conf
第二步:创建文件/etc/vsftpd.conf
内容增加两行
peter
jonn
第三步:重新启动vsftpd
service vsftpd restart
检测:
当peter想要切换到其他的非下一级目录则出现警告----->550failed to change directory
要点2
user_config_dir
定义个别使用者设定文件所在目录
例子
主机有使用者test1,test2
第一步:
修改配置文件
user_config_dir=/etc/vsftpd/userconf
第二步:
创建目录
mkdir /etc/vsftpd/userconf
第三步:
指定默认访问的各自的共享目录
vim /etc/vsftpd/userconf/tset1--------->local_root=/www/test1
vim /etc/vsftpd/userconf/tset2--------->local_root=/www/test2
第四步:创建默认读取文件
vim /www/test1/index.html
vim /www/test2/index.html
第五步:
重启服务生效
service vsftpd restart
检测:
当test1登录时默认读取/www/test1/index.html
当test2登录时默认读取/www/test2/index.html


apache开启用户认证
第一步:
修改主配置文件/etc/httpd/conf/httpd.conf
<Directory /var/uplooking>
allowoverride authconfig
或者allowoverride all-------->表示允许对/var/uplooking目录下的文件进行用户认证
</Directory>
第二步:
在限制的访问目录下建立隐藏文件/var/uplooking/.htaccesss
AuthName "这里显示的文字会显示在浏览器弹出的窗口"
AuthType basic
AuthUserFile /var/password/.htuser--->存放认证用户帐号和密码(不可以放在普通用户
可以下载,浏览的目录内)
require valid-user

AuthName 指定认证区域,区域名称在弹出框显示给用户
AuthType 一般是basicAuthUserFile /var/password/.htuser--->存放认证用户帐号和密码(不可以放在普通用户
可以下载,浏览的目录内)
require valid-user

AuthName 指定认证区域,区域名称在弹出框显示给用户
AuthType 一般是basic
AuthUserFile 指定用户名和密码,每行为一对
require valid-user

第三步:生成包含帐号和密码的隐藏文件
htpasswd -c /var/uplooking/.htuser gaomi
再输入两次密码





 

 

 

 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值