为了实现不同平台的文件共享,比如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
主配置文件/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:/>
因为系统权限允许了,但是服务本身的权限还是不允许,为了实现匿名用户的上传和下载功能,我们还需要去改服务的配置参数
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 笼环境
[root@max lilichow]# vim /etc/vsftpd/chroot_list //手动创建这个文件,默认不存在,并写上要加入笼环境的用户名,一行写一个
重启服务器
再登录到客户机上进行测试,发现已经不能随意进入到其他目录下了。
另外还有就是,/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
再输入两次密码