[筆記] Linux NFS、vsftpd server 架設


NFS server架設(參考鳥哥)

概念:NFS 伺服器可以讓你的 PC 來將網路遠端的 NFS 伺服器分享的目錄,掛載到本地端的機器當中;讓使用者知道你伺服器 port 號,就可使用 RPC 做 port 的對應 (mapping)

1.環境設定:需RPC、NFS主程式 (示範 ip 主機:140.137.214.53, 用戶端:140.137.214.65)

[root@localhost ~]# yum install nfs-utils vim -y
[root@localhost ~]# mkdir /home/andy
[root@localhost ~]# vim /etc/exports

/tmp         140.137.214.0/24(rw,no_root_squash)
# 140.137.219.xx下的網域都可以用我的 /tmp,no_root_squash 意思為如果自己是以 root 的身份登入 Linux 主機,那麼當用戶端 mount 上我這部主機的 /tmp 後,他在該目錄將具有 root 的權限
/home/nfs    140.137.214.0/24(ro)  *(ro,all_squash)
/home/upload 140.137.214.0/24(rw,all_squash,anonuid=210,anongid=210)
# all_squash 開放匿名,而 anonuid 則為用戶端在 /home/upload 寫入檔案時,該檔案的所有人與所有群組,就會變成 /etc/passwd 裡面對應的 UID 為 210 的那個身份的使用者
/home/andy   140.137.214.65(rw)   #(用戶端ip)
[分享目錄] [第一部主機(權限)] [可用主機名] [可用萬用字元]

[root@localhost ~]# systemctl restart nfs

2.查看需要的port點
[root@localhost ~]# rpcinfo -p 140.137.219.63 (主機ip)

111 portmapper
20048 mountd
2049 nfs
3.開放防火牆權限
[root@localhost ~]# firewall-cmd --add-port=111/tcp
[root@localhost ~]# firewall-cmd --add-port=111/udp
[root@localhost ~]# firewall-cmd --add-port=20048/tcp
[root@localhost ~]# firewall-cmd --add-port=20048/udp
[root@localhost ~]# firewall-cmd --add-port=2049/udp
[root@localhost ~]# firewall-cmd --add-port=2049/tcp

使用 showmount 在用戶端看有沒有成功(如未開放防火牆會出現第一行的錯誤)
[root@localhost ~]# showmount -e 140.137.214.53

4.建立每個對應的目錄的實際 Linux 權限

# 1. /tmp
[root@localhost ~]# ll -d /tmp
drwxrwxrwt. 8 root root 211  4月 14 09:16 /tmp

# 2. /home/nfs
[root@localhost ~]# mkdir -p /home/nfs
[root@localhost ~]# chmod 755 -R /home/nfs
# 修改檔案權限將目錄與檔案設定成唯讀

# 3. /home/upload
[root@localhost ~]# groupadd -g 210 nfs-upload
[root@localhost ~]# useradd -g 210 -u 210 -M nfs-upload
# 建立對應的帳號與群組名稱及 UID
[root@localhost ~]# mkdir -p /home/upload
[root@localhost ~]# chown -R nfs-upload:nfs-upload /home/upload
# 修改擁有者

# 4. /home/andy
[root@localhost ~]# useradd andy
[root@localhost ~]# ll -d /home/andy
drwx------. 2 andy andy 62  4月 14 09:52 /home/andy

[root@localhost ~]# systemctl restart nfs

5.遠端連線測試(以下指令打在用戶端伺服器)
[root@localhost ~]# showmount -e 140.137.214.53
[root@localhost ~]# mkdir -p /mnt/{tmp,nfs,upload,andy}
[root@localhost ~]# mount -t nfs 140.137.214.53:/tmp /mnt/tmp
[root@localhost ~]# mount -t nfs 140.137.214.53:/home/nfs /mnt/nfs
[root@localhost ~]# mount -t nfs 140.137.214.53:/home/upload /mnt/upload
[root@localhost ~]# mount -t nfs 140.137.214.53:/home/andy /mnt/andy
6.遠端下載測試
使用 scp 下載本機資料夾中的檔案至遠端伺服器

vsftpd server架設(參考鳥哥)

1.下載 vsftp 及 ftp 套件,並設定防火牆
[root@localhost ~]# yum install vsftpd vim ftp -y && systemctl start vsftpd && firewall-cmd --add-service=ftp

  1. 設定檔為 /etc/vsftpd/vsftpd.conf 且嚴格來說,整個 vsftpd 的設定檔就只有這個檔案
    (1)基礎設定
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
    修改以下幾行內容
    修改:Listen=YES
    #設定為 YES 表示 vsftpd 是以 standalone 的方式來啟動
    刪掉:listen_ipv6=YES
    # 因為有這行會跳錯
    新增:use_localtime=YES
    # 因為 vsftpd 預設使用 GMT 時間,所以在用戶端使用 ftp 軟體連接到 FTP 伺服器時,會發現每個檔案的時間都慢了八小時,這邊就新增 use_localtime=YES 此行參數即可解決
    
    [root@localhost ~]# systemctl start vsftpd
    (2)範例:實體帳號設定
    [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
# 1. 與匿名者相關的資訊,在這個案例中將匿名登入取消:
anonymous_enable=NO <==修改此行

# 2. 與實體用戶相關的資訊:可寫入,且 umask 為 002 喔!
local_enable=YES
write_enable=YES
local_umask=002  <==修改此行,預設為022,即 755 的檔案權限
userlist_enable=YES
userlist_deny=YES  <==新增此行
userlist_file=/etc/vsftpd/user_list  <==新增此行

# 3. 與伺服器環境有關的設定
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
banner_file=/etc/vsftpd/welcome.txt  <==新增此行

[root@localhost ~]# vim /etc/vsftpd/welcome.txt
打入一些字做測試 ex. 歡迎光臨~~~
[root@localhost ~]# systemctl restart vsftpd
最後測試是否成功,先新增一個使用者 steven,再進行密碼設定,最後登入 ftp 進行測試

[root@localhost ~]# ftp localhost

(3)範例:chroot設定
概念:讓 guest 與 anonymous 的家目錄限制在固定的目錄中(使主機更安全)
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

# 增加是否設定針對某些使用者來 chroot 的相關參數(可直接在檔案中取消註解)
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

建立不被 chroot 的使用者帳號列表,即使沒有任何帳號,此檔案也是要存在

[root@localhost ~]# vim /etc/vsftpd/chroot_list (此檔案中的使用者才不會被chroot)
xxxxx
[root@localhost ~]# systemctl restart vsftpd && setenforce 0

登入被chroot的帳號需將檔案寫入權限關閉,才不會報錯
[root@localhost ~]# chmod a-w /home/steven
測試成功畫面

(4)範例:僅讓匿名登入的相關設定
[root@localhost ~]# mkdir /var/ftp/linux
[root@localhost ~]# mkdir /var/ftp/gnu
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

# 將這個檔案的全部內容改成這樣:
# 1. 與匿名者相關的資訊:
anonymous_enable=YES
no_anon_password=YES        <==匿名登入時,系統不會檢驗密碼 (通常是email)
anon_max_rate=1000000       <==最大頻寬使用為 1MB/s 左右
data_connection_timeout=60  <==資料流連線的 timeout 為 60 秒
idle_session_timeout=600    <==若匿名者發呆超過 10 分鐘就斷線
max_clients=50              <==最大連線與每個 IP 的可用連線
max_per_ip=5

# 2. 與實體用戶相關的資訊,本案例中為關閉他的情況!
local_enable=NO

# 3. 與伺服器環境有關的設定
use_localtime=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
banner_file=/etc/vsftpd/anon_welcome.txt <==檔名有改

[root@localhost ~]# vim /etc/vsftpd/anon_welcome.txt
ex. 歡迎光臨~11!!

讓匿名者可上傳/下載自己的資料 (權限開放最大)
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

# 新增底下這幾行
write_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES

讓匿名者上傳資料到 /var/ftp/uploads/ 中
[root@localhost ~]# mkdir /var/ftp/uploads
[root@localhost ~]# chown ftp /var/ftp/uploads
[root@localhost ~]# systemctl restart vsftpd

驗證成功畫面

# 1. 與匿名者有關的資訊:
anonymous_enable=YES        <==支援匿名者的登入使用 FTP 功能

# 2. 與實體用戶有關的設定
local_enable=YES            <==支援本地端的實體用戶登入
write_enable=YES            <==允許使用者上傳資料 (包括檔案與目錄)
local_umask=022             <==建立新目錄 (755) 與檔案 (644) 的權限

# 3. 與伺服器環境有關的設定
dirmessage_enable=YES       <==若目錄下有 .message 則會顯示該檔案的內容
xferlog_enable=YES          <==啟動登錄檔記錄,記錄於 /var/log/xferlog
connect_from_port_20=YES    <==支援主動式連線功能
xferlog_std_format=YES      <==支援 WuFTP 的登錄檔格式
listen=YES                  <==使用 stand alone 方式啟動 vsftpd
pam_service_name=vsftpd     <==支援 PAM 模組的管理
userlist_enable=YES         <==支援 /etc/vsftpd/user_list 檔案內的帳號登入管控!
tcp_wrappers=YES            <==支援 TCP Wrappers 的防火牆機制

補充:ftp 指令

ftp>                <==最終登入的結果看起來是這樣!
ftp> help           <==提供需要的指令說明,可以常參考!
ftp> dir            <==顯示遠端伺服器的目錄內容 (檔名列表)
ftp> cd /pub        <==變換目錄到 /pub 當中
ftp> get filename   <==下載單一檔案,檔名為 filename 
ftp> mget filename* <==下載多個檔案,可使用萬用字元 *
ftp> put filename   <==上傳 filename 這個檔案到伺服器上
ftp> delete file    <==刪除主機上的 file 這個檔案
ftp> mkdir dir      <==建立 dir 這個目錄
ftp> lcd /home      <==切換『本地端主機』的工作目錄
ftp> passive        <==啟動或關閉 passive 模式
ftp> binary         <==資料傳輸模式設定為 binary 格式
ftp> bye            <==結束 ftp 軟體的使用

參考資料來源:https://linux.vbird.org/

#linux #nfs #vsftp






你可能感興趣的文章

JS底層學習筆記 - EventLoop

JS底層學習筆記 - EventLoop

PM2、Nginx & Reverse Proxy Server

PM2、Nginx & Reverse Proxy Server

Day 8 - Function & Caesar Cipher

Day 8 - Function & Caesar Cipher






留言討論