04Linux基礎服務-FTP

一、安裝vsftpdhtml

[root@test ~]# yum -y install vsftpdnode

二、配置文件web

/etc/vsftpd/vsftpd.conf    #vsftpd的核心配置文件算法

/etc/vsftpd/ftpusers:       #用於指定哪些用戶不能訪問FTP,黑名單vim

/etc/vsftpd/user_list    #指定容許使用vsftpd的用戶列表文件緩存

  #若是userlist_deny=YES(默認),毫不容許在這個文件中的用戶登陸ftp,甚至不提示輸入密碼安全

/etcvsftpd/vsftpd_conf_migrate.sh   #是vsftpd操做的一些變量和設置腳本服務器

/var/ftp/   #默認狀況下匿名用戶的根目錄網絡

三、啓動服務併發

[root@test ~]# systemctl start vsftpd             #啓動服務
[root@test ~]# systemctl enable vsftpd         #加入開啓自啓
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@test ~]# netstat -antup | grep ftp        #查看對應的端口是否啓動起來
tcp6 0 0 :::21 :::* LISTEN 3350/vsftpd

四、經過配置文件來了解配置文件各個選項

例1:公司技術部準備搭建一臺功能簡單的FTP服務器,容許全部員工上傳和下載文件,並容許建立用戶本身的目錄

分析:容許全部員工上傳和下載,配置文件須要設置成容許匿名用戶登陸而且須要將容許匿名用戶上傳功能開啓

anon_mkdir_write_enable  該字段能夠控制是否容許匿名用戶建立目錄

[root@test ~]# vim /etc/vsftpd/vsftpd.conf    #打開配置文件,修改以下內容

容許匿名用戶訪問

anonymous_enable=YES

容許匿名用戶上傳文件並能夠建立目錄

anon_upload_enable=YES

anon_mkdir_write_enable=YES

[root@test ~]# systemctl restart vsftpd    #重啓服務測試

Windows經過訪問ftp://192.168.135.8來驗證是否正常

結果發現不能寫,這是由於FTP共享的文件夾 的屬主屬組是root,而運行ftp的用戶是ftp,因此不能寫,修改/var/ftp/pub的屬主屬組後再驗證

[root@test ~]# chown ftp:ftp /var/ftp/pub/

而後測試,是能夠新建文件夾了,可是不能重命名,不能刪除!


[root@test63 vsftpd]# vim vsftpd.conf

anon_other_write_enable=YES  ##默認沒有,須要手動添加下這行

 

重啓服務,便可重命名文件夾。

可是能夠刪除文件夾了,這個參數對匿名用戶來講權限太大,不安全,均衡使用這個參數

 

注意,默認匿名用戶家目錄的權限是755,這個權限是不能改變的。切記!

 

 

下面咱們來一步一步的實現,先修改目錄權限,建立一個公司上傳用的目錄,叫testdata,設置擁有者爲ftp 用戶全部,目錄權限是755

[root@test63 vsftpd]# mkdir /var/ftp/testdata

[root@test63 vsftpd]# chown ftp.ftp /var/ftp/testdata/

[root@test63 vsftpd]# ll -d !$

ll -d /var/ftp/testdata/

drwxr-xr-x 2 ftp root 4096 Mar  9 19:30 /var/ftp/testdata/

 

 

而後從新啓動服務

[root@test63 ~]# service vsftpd restart

Shutting down vsftpd:                                      [  OK  ]

Starting vsftpd for vsftpd:                                [  OK  ]

 

測試

匿名登陸FTP

 

如今咱們匿名上傳

 

 

如今匿名上傳的文件是禁止刪除滴~

 

 

這樣匿名用戶的上傳就算成功了

注:工做中,匿名用戶只是只讀訪問,寫的權限也沒有的。

 

 

例2:

公司內部如今有一臺FTP 和WEB 服務器,FTP 的功能主要用於維護公司的網站內容,包括上傳文

件、建立目錄、更新網頁等等。公司現有兩個部門負責維護任務,他們分別適用team1 和team2

賬號進行管理。先要求僅容許team1 和team2 賬號登陸FTP 服務器,但不能登陸本地系統,並將

這兩個賬號的根目錄限制爲/var/www/html,不能進入該目錄之外的任何目錄。

 

ftp 和www web服務器相結合。

www web服務器根目錄:  /var/www/html

只容許:team1和team2兩用戶 能夠上傳。 vsftp禁止匿名。

 

分析:

將FTP 和WEB 服務器作在一塊兒是企業常常採用的方法,這樣方便實現對網站的維護,爲了加強安

全性,首先須要使用僅容許本地用戶訪問,並禁止匿名用戶登陸。其次使用chroot 功能將team1

和team2 鎖定在/var/www/html 目錄下。若是須要刪除文件則還須要注意本地權限

解決方案:

(1)創建維護網站內容的ftp 賬號team1 和team2 並禁止本地登陸,而後設置其密碼

[root@test63 ~]# useradd -s /sbin/nologin team1

[root@test63 ~]# useradd -s /sbin/nologin team2

[root@test63 ~]# echo "123456" | passwd --stdin team1

Changing password for user team1.

passwd: all authentication tokens updated successfully.

[root@test63 ~]# echo "123456" | passwd --stdin team2

Changing password for user team2.

passwd: all authentication tokens updated successfully.

 

2)配置vsftpd.conf 主配置文件並做相應修改

[root@test63 vsftpd]# cp vsftpd.conf.back vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO:禁止匿名用戶登陸

local_enable=YES:容許本地用戶登陸

 

 

 

改:

 

 

爲:

 

 

local_root=/var/www/html:設置本地用戶的根目錄爲/var/www/html

chroot_list_enable=YES:激chroot 功能

chroot_list_file=/etc/vsftpd/chroot_list:設置鎖定用戶在根目錄中的列表文件。此文件存放要鎖定的用戶名

allow_writeable_chroot=YES :容許鎖定的用戶有寫的權限

保存退出

(3)創建/etc/vsftpd/chroot_list 文件,添加team1 和team2 賬號

[root@test63 vsftpd]# touch /etc/vsftpd/chroot_list

[root@test63 ~]# ll !$

ll /etc/vsftpd/chroot_list

-rw-r--r-- 1 root root 0 Nov 10 17:08 /etc/vsftpd/chroot_list

[root@test63 ~]# vim /etc/vsftpd/chroot_list  #寫入如下內容,一行,一個用戶名

team1

team2

5)修改本地權限

[root@test63 ~]# ll -d /var/www/html/

drwxr-xr-x. 2 root root 4096 Oct  6  2011 /var/www/html/

[root@test63 ~]# chmod -R o+w /var/www/html/

[root@test63 ~]# ll -d /var/www/html/

drwxr-xrwx. 2 root root 4096 Oct  6  2011 /var/www/html/

6)重啓vsftpd 服務使配置生效

service vsftpd restart

 

(7)測試

 

 

客戶端用lftp登錄查看:

root@test64 ~]# lftp 192.168.0.63 -u team1,123456

lftp team1@192.168.0.63:~> ls

-rw-r--r--    1 0        0            1384 Jul 30 01:56 passwd

lftp team1@192.168.0.63:/>

 

補充: 配置vsftpd,使用SSL證書加密數據傳輸

 FTP與HTTP同樣缺省狀態都是基於明文傳輸,但願FTP服務器端與客戶端傳輸保證安全,能夠爲FTP配置SSL

 

1, 使用OpenSSL生成自簽證書

[root@test63 vsftpd]# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3560

Generating a 2048 bit RSA private key

..........................................................................................+++

.....................+++

writing new private key to 'vsftpd.pem'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [XX]:ZH

State or Province Name (full name) []:JS

Locality Name (eg, city) [Default City]:NJ

Organization Name (eg, company) [Default Company Ltd]:XS

Organizational Unit Name (eg, section) []:XS

Common Name (eg, your name or your server's hostname) []:XS.COM

Email Address []:XS@QQ.COM

 

OpenSSL 簡單參數解釋:

req - 是 X.509 Certificate Signing Request (CSR,證書籤名請求)管理的一個命令。

x509 - X.509 證書數據管理。

days - 定義證書的有效日期。

newkey - 指定證書密鑰處理器。

keyout - 設置密鑰存儲文件。

out - 設置證書存儲文件,注意證書和密鑰都保存在一個相同的文件

 

2,建立證書文件存放目錄

[root@test63 vsftpd]#  mkdir .sslkey

[root@test63 vsftpd]#   cp vsftpd.pem .sslkey/

[root@test63 vsftpd]#   chmod 400 .sslkey/vsftpd.pem

3, 修改配置文件,支持SSL

[root@test63 vsftpd]#  vim vsftpd.conf

添加以下配置:

 

 

ssl_enable=YES     #啓用SSL支持

allow_anon_ssl=NO 

 force_local_data_ssl=YES   

force_local_logins_ssl=YES

force_anon_logins_ssl=YES

force_anon_data_ssl=YES

#上面四行force 表示強制匿名用戶使用加密登錄和數據傳輸

ssl_tlsv1=YES   #指定vsftpd支持TLS v1[

ssl_sslv2=YES   #指定vsftpd支持SSL v2

ssl_sslv3=YES   #指定vsftpd支持SSL v3

require_ssl_reuse=NO   #不重用SSL會話,安全配置項 

ssl_ciphers=HIGH    #容許用於加密 SSL 鏈接的 SSL 算法。這能夠極大地限制那些嘗試發現使用存在缺陷的特定算法的攻擊者

rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem 

rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem

#定義 SSL 證書和密鑰文件的位置

 

注意:上面的配置項不要添加到vsftpd.conf 文件最後,不然啓動報錯

 

4,配置FileZilla客戶端驗證:

 

 

鏈接成功,發現可使用TLS加密傳輸了

注意: 在工做中,內網FTP傳輸,能夠不用證書加密傳輸

若是FTP服務器在公網,爲了數據的安全性,就必定要配置證書加密傳輸

NFS概述-配置NFS服務器並實現開機自動掛載

NFS服務端概述:

NFS,是Network File System的簡寫,即網絡文件系統。網絡文件系統是FreeBSD支持的文件系統中的一種,也被稱爲NFS. NFS容許一個系統在網絡上與他人共享目錄和文件。經過使用NFS,用戶和程序能夠像訪問本地文件同樣訪問遠端系統上的文件。

 

 

 

模式: C/S 模式

端口: 

RHEL7是以NFSv4做爲默認版本,NFSv4使用TCP協議(端口號是2049)和NFS服務器創建鏈接

 

安裝nfs

[root@test63 ~]# yum -y install rpcbind nfs-utils

 

 

配置文件位置

[root@test63 ~]# ls /etc/exports

/etc/exports

 

啓動NFS服務

先查看2049端口是否開放:

[root@test63 ~]# netstat -antpu | grep 2049

 

[root@test63 ~]# systemctl start rpcbind

[root@test63 ~]# systemctl start nfs-server.service

 

再次查看端口監聽狀態

[root@test63 ~]# netstat -antpu | grep 2049

tcp        0      0 0.0.0.0:2049                0.0.0.0:*                   LISTEN      -

tcp        0      0 :::2049                     :::*                        LISTEN     +

 

 

配置開機自動啓動

[root@test63 ~]# chkconfig nfs-server on

 

服務的使用方法

showmount -e NFS服務器IP

例:

[root@test64 ~]# showmount -e 192.168.0.63

Export list for 192.168.0.63:

 

掛載

[root@test64 ~]# mount 192.168.0.63:/tmp /opt

 

修改配置文件,實戰舉例

[root@test63 ~]# vim /etc/exports

/media  *(rw)

 

注意: * 表示對全部網段開放權限

也能夠指定特定的網段

 

重啓服務

 

[root@test63 ~]# exportfs -rv   ##從新讀取配置文件,不中斷服務.

 

客戶端查看:

[root@test64 ~]# showmount -e 192.168.0.63

Export list for 192.168.0.63:

/media *

 

 

 

 

掛載共享

[root@test64 ~]# mount -t nfs 192.168.0.63:/media/ /opt/

[root@test64 ~]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2             9.7G  4.0G  5.2G  44% /

tmpfs                 996M   80K  996M   1% /dev/shm

/dev/sda1             485M   39M  421M   9% /boot

/dev/sr0              3.7G  3.7G     0 100% /mnt

192.168.0.63:/media/  9.7G  4.0G  5.3G  43% /opt

 

開機自動掛載:

編輯 [root@test63 ~]# vim /etc/fstab

在文件最後添加自動掛載的信息:

 

驗證寫入權限

[root@test64 ~]# touch /opt/a.txt

touch: 沒法建立"/opt/a.txt": 權限不夠

 

解決方法:

設置訪問權限通常包含2部分

1)服務自己權限

2)目錄訪問權限

nfs默認使用nfsnobody用戶

[root@test63 ~]# grep nfs /etc/passwd

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

 

修改權限

[root@test63 ~]# chmod 777 -R /media/

[root@test63 ~]# chown nfsnobody.nfsnobody -R /media/

 

再次驗證寫入權限

[root@test64 ~]# touch /opt/a.txt

[root@test64 ~]# ll !$

ll /opt/a.txt

-rw-r--r-- 1 nfsnobody nfsnobody 0 5月  24 2016 /opt/a.txt

 

下面是一些NFS共享的經常使用參數: 


 ro                    只讀訪問 
 rw                   讀寫訪問 
 sync               資料同步寫入到內存與硬盤當中
 async             資料會先暫存於內存當中,而非直接寫入硬盤 

 secure             NFS經過1024如下的安全TCP/IP端口發送 
 insecure          NFS經過1024以上的端口發送 
 wdelay            若是多個用戶要寫入NFS目錄,則歸組寫入(默認) 
 no_wdelay      若是多個用戶要寫入NFS目錄,則當即寫入,當使用async時,無需此設置。 
 Hide                在NFS共享目錄中不共享其子目錄 
 no_hide           共享NFS目錄的子目錄 
 subtree_check   若是共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認) 
 no_subtree_check   和上面相對,不檢查父目錄權限 
 all_squash               共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。 
 no_all_squash         保留共享文件的UID和GID(默認) 
 root_squash             root用戶的全部請求映射成如anonymous用戶同樣的權限(默認) 
 no_root_squash        root用戶具備根目錄的徹底管理訪問權限 

 

 [root@xue63 a]# cat /etc/exports

/tmp/a/no_root_squash      *(rw,no_root_squash)

/tmp/a/sync               192.168.0.0/24(rw,sync)

/tmp/a/ro                  192.168.1.64(ro)

/tmp/a/all_squash             192.168.0.0/24(rw,all_squash,anonuid=500,anongid=500)

/tmp/a/async                    192.168.3.0/255.255.255.0(async)

/tmp/a/rw          192.168.3.0/255.255.255.0(rw)    192.168.4.0/255.255.255.0(rw)

/tmp/a/root_squash   *(rw,root_squash)    

 

注意:在發佈共享目錄的格式中除了共享目錄是必跟參數外,其餘參數都是可選的。而且共享

目錄與客戶端之間及客戶端與客戶端之間須要使用空格符號,可是客戶端與參數之間是不能有

空格的

 

 

NFS客戶端掛載參數的優化:

 

NFS高併發環境下的服務端重要優化(mount -o 參數)

 

async 異步同步,此參數會提升I/O性能,但會下降數據安全(除非對性能要求很高,對數據可靠性不要求的場合。通常生產環境,不推薦使用)

 

noatime 取消更新文件系統上的inode訪問時間,提高I/O性能,優化I/O目的,推薦使用。

 

nodiratime 取消更新文件系統上的directory inode訪問時間,高併發環境,推薦顯式應用該選項,提升系統性能

 

intr:能夠中斷不成功的掛載

 

rsize/wsize 讀取(rsize)/寫入(wsize)的區塊大小(block size),這個設置值能夠影響客戶端與服

務端傳輸數據的緩衝存儲量。通常來講,若是在局域網內,而且客戶端與服務端都具備足夠的內存,這個

值能夠設置大一點,好比說32768(bytes),提高緩衝區塊將可提高NFS文件系統的傳輸能力。但設置的值也不要太大,最好是實現網絡可以傳輸的最大值爲限。

 

內核優化:

 

net.core.wmem_default = 8388608     #內核默認讀緩存

net.core.rmem_default = 8388608      #內核默認寫緩存

net.core.rmem_max = 16777216        #內核最大讀緩存

net.core.wmem_max = 16777216   #內核最大寫緩存

 

 

用法:

mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072,intr 192.168.0.63:/backup/NFS  /mnt

 

或者寫到掛載文件裏:

192.168.0.63:/backup/NFS /mnt nfs       noatime,nodiratime,rsize=131072,wsize=131072,intr 0 0

相關文章
相關標籤/搜索