爲了實現不一樣平臺的文件共享,好比windows 和linux 。咱們採用強大的文件共享工具FTPhtml
一、首先安裝FTP軟件linux
yum install ftp.x86_64 vsftpd.x86_64 lftp.x86_64apache
二、在ftp的主配置文件中 /etc/vsftpd/vsftpd.conf ,咱們爲給咱們的ftp指定路徑vim
[root@clone ~]# vim /etc/vsftpd/vsftpd.confwindows
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裏面的用戶能登陸安全
三、啓動ftp 服務[root@clone ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd: [ OK ]
[root@clone ~]#bash
四、服務器
4.1本機驗證ide
爲了防止驗證的時候沒必要要的錯誤,咱們先改一下用戶的密碼
[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
五、知識進階
登陸進入以後
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 再輸入兩次密碼