为了实现不同平台的文件共享,比如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
主配置文件/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:/>因为系统权限允许了,但是服务本身的权限还是不允许,为了实现匿名用户的上传和下载功能,我们还需要去改服务的配置参数
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 lililftp 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 同样也是可以用来控制用户的访问权限的。这里就不再一一表述了。
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.confallowoverride 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再输入两次密码