exportfs命令 NFS客戶端問題 FTP介紹使用vsftpd搭建ftp

exportfs命令

  • 經常使用選項
  • -a 所有掛載或者所有卸載
  • -r 從新掛載
  • -u 卸載某一個目錄
  • -v 顯示共享目錄
  • 如下操做在服務端上 -vim /etc/exports //增長
/tmp/ 192.168.180.0/24(rw,sync,no_root_squash)
  • exportfs -arv //不用重啓nfs服務,配置文件就會生效
  • 如下操做在客戶端
  • mkdir /aminglinux
  • mount -t nfs -onolock 192.168.180.134:/tmp /aminglinux
  • touch /aminglinux/test.txt
  • ls -l !$
  • -oremount,nfsvers=3

exportfs命令

  • exportfs命令和nfs-utils這個包一塊兒安裝的
  • 例子:
    • 假設在第一次配置nfs的共享目錄,以後須要新增、更改某些機器或共享的目錄;
    • 首先須要更改配置文件,而後重啓NFS服務,但若是遠程客戶端正在使用NFS服務,正在掛載着,若是你須要先中止nfs服務,那遠程的客戶端就會掛起,就會很大的影響,形成服務異常,進程異常,有很大可能致使系統壞掉
  • nfs服務不能隨便重啓,要重啓,就須要先去服務器上,把掛載的目錄卸載下來
    • 在卸載目錄的時候,如果在當前目錄下去卸載會提示umount.nfs4: /mnt: device is busy
      • 方法一:退出該目錄後,再去卸載
      • 方法二:在目錄下卸載的時候,加 -l 選項,表示 lazy 懶惰的意思
    • 在卸載目錄後,在重啓nfs服務
  • 如果掛載了不少臺機器,那麼每臺機器都須要去卸載,就會很麻煩,下降了工做效率
    • 方法:使用exportfs命令,從新加載下
  • exportfs命令
    • -a 所有掛載或者所有卸載
    • -r 從新掛載
    • -u 卸載某一個目錄
    • -v 顯示共享目錄
  • 在B機器客戶端,卸載目錄
[root@yong-02 ~]# umount /mnt
[root@yong-02 ~]# df -h
文件系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   18G  5.6G   13G   32% /
devtmpfs                 905M     0  905M    0% /dev
tmpfs                    916M     0  916M    0% /dev/shm
tmpfs                    916M  8.6M  908M    1% /run
tmpfs                    916M     0  916M    0% /sys/fs/cgroup
/dev/sda1                197M  121M   77M   62% /boot
tmpfs                    184M     0  184M    0% /run/user/0
  • 在A機器上的/etc/exports配置文件中,在增長一行,把 /tmp 目錄單獨共享給192.168.180.134 這個IP,使用exportfs -arv命令
  • exportfs -arv命令,從新使配置文件生效
[root@yong-01 ~]# exportfs -arv
exporting 192.168.180.0/24:/tmp
exporting 192.168.180.0/24:/home/nfstestdir
  • 而後在A機器服務端執行exportfs -arv命令
  • 在B機器客戶端showmount -e看是否生效——>並無重啓nfs服務,就已經生效
[root@yong-02 ~]# showmount -e 192.168.180.134
Export list for 192.168.180.134:
/tmp             192.168.180.0/24
/home/nfstestdir 192.168.180.0/24
  • 在B機器客戶端掛載,將 tmp目錄 掛載到 mnt 目錄下
[root@yong-02 ~]# mount -t nfs 192.168.180.134:/tmp/ /mnt
[root@yong-02 ~]# df -h
文件系統                 容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root   18G  5.6G   13G   32% /
devtmpfs                 905M     0  905M    0% /dev
tmpfs                    916M     0  916M    0% /dev/shm
tmpfs                    916M  8.6M  908M    1% /run
tmpfs                    916M     0  916M    0% /sys/fs/cgroup
/dev/sda1                197M  121M   77M   62% /boot
tmpfs                    184M     0  184M    0% /run/user/0
192.168.180.134:/tmp      18G  8.1G  9.8G   46% /mnt
  • 如今在B機器客戶端,查看到的/mnt/目錄就是192.168.180.134IP下的tmp目錄 ,再到A機器上查看tmp目錄,會看到兩個目錄下的文件內容會同樣的。
  • 這時在B機器客戶端的mnt目錄下建立文件,並查看目錄下的文件,能看到新建的nfs.txt文件的屬主和屬組都是root
[root@yong-02 ~]# vim /mnt/nfs.txt
[root@yong-02 ~]# ll /mnt/nfs.txt 
-rw-r--r-- 1 root root 8 6月  23 11:23 /mnt/nfs.txt
  • 這時再到A機器服務端查看tmp目錄,會看到nfs.txt文件的屬主和屬組也是root
[root@yong-01 ~]# ll /tmp/nfs.txt 
-rw-r--r-- 1 root root 8 6月  23 11:23 /tmp/nfs.txt
  • 這就是由於在A機器服務端的配置文件中,使用了no_root_squash ,因此root用戶不受約束,在B機器上到掛載點下,到共享目錄下,就能夠像在本地磁盤使用root用戶同樣,是不受限制的(一般狀況下,不限制root用戶的比較多)

NFS客戶端問題

  • NFS 4版本會有該問題
  • 客戶端掛載共享目錄後,不論是root用戶仍是普通用戶,建立新文件時屬主、屬組爲nobody
  • 客戶端掛載時加上 -o nfsvers=3
  • 客戶端和服務端都須要
  • vim /etc/idmapd.conf //
  • 把「#Domain = local.domain.edu」 改成 「Domain = xxx.com」 (這裏的xxx.com,隨意定義吧),而後再重啓rpcidmapd服務

NFS知識點

  • 在centos6中,遇到的問題比較多,針對的NFS 4版本有這個問題
    • 問題:客戶端掛載共享目錄後,不論是root用戶仍是普通用戶,建立新文件時屬主、屬組爲nobody,雖然已經定義了 no_root_squash 不在限制root用戶,最終建立完文件後發現屬主和屬組不是root或者是限定的1000,而是顯示的是 nobody ,這就是NFS 4版本出現的問題,尤爲是在centos6 系統上
    • 解決問題:
      • 方法一:是在客戶端掛載的時候,加上-o nfsvers=3 ,意思就是指定NFS的版本爲 3 ,不在用4的版本
        • mount -t nfs -o nfsvers=3 192.168.180.134:/tmp/ /mnt/
          • 如果不想卸載,直接掛載,可使用mount -t nfs -oremount,nfsvers=3 192.168.180.134:/tmp/ /mnt/ (前提是先掛載上去)
      • 方法二:更改配置文件vim /etc/idmapd.conf ,把「#Domain = local.domain.edu」 改成 「Domain = xxx.com」 (這裏的xxx.com,隨意定義吧),而後再重啓rpcidmapd服務
        • 在cnetos7中,自己是沒有rpcidmapd服務的,只須要重啓rpcbind服務就能夠了

FTP介紹

  • FTP多用於Windows傳文件到linux
  • rz sz在文件超過4G,就沒法使用了——>安裝包yum install -y install lrzsz
    • rz把 window 上的文件傳輸到 linux 上
    • sz 把 linux 上的文件傳輸到 window 上
  • FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。
  • FTP的主要做用就是讓用戶鏈接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。
  • 小公司用的多,大企業不用FTP(多用自動化發佈工具),由於不安全

使用vsftpd搭建ftp目錄概要

  • centos上自帶vsftpd
  • yum install -y vsftpd
  • useradd -s /sbin/nologin virftp
  • vim /etc/vsftpd/vsftpd_login //內容以下,奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行
testuser1
aminglinux
  • chmod 600 /etc/vsftpd/vsftpd_login
  • db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
  • mkdir /etc/vsftpd/vsftpd_user_conf
  • cd /etc/vsftpd/vsftpd_user_conf
  • vim testuser1 //加入以下內容
local_root=/home/virftp/testuser1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
  • mkdir /home/virftp/testuser1
  • touch /home/virftp/testuser1/aming.txt
  • chown -R virftp:virftp /home/virftp
  • vim /etc/pam.d/vsftpd //在最前面加上
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
  • vim /etc/vsftpd/vsftpd.conf
  • 將anonymous_enable=YES 改成 anonymous_enable=NO
  • 將#anon_upload_enable=YES 改成 anon_upload_enable=NO
  • 將#anon_mkdir_write_enable=YES 改成 anon_mkdir_write_enable=NO
  • 再增長以下內容
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
  • systemctl start vsftpd //啓動vsftpd服務

使用vsftpd搭建ftp

  • 在centos上默認自帶的ftp服務軟件包叫作vsftpd,vsftpd軟件包是可使用系統級別的用戶,(也就是假設建立了一個普通用戶user1,設置一個密碼,這時候就能夠用vsftpd啓動這個服務,而後用user1這個用戶去登錄,登陸的形式爲ftp,登陸進去後會進入到user1這個用戶的家目錄下,但這樣操做會存在安全隱患)
    • 解決隱患的方法:給ftp設置一個虛擬用戶,虛擬用戶映射成系統中的一個普通用戶(也能夠映射多個虛擬用戶),這個用戶即便給了用戶和密碼你也是沒有辦法去經過ssh登陸到服務器的機器,這樣就相對安全了不少
  • 安裝vsftpd包——>yum install -y vsftpd
[root@yong-01 ~]# yum install -y vsftpd
  • 在安裝完成後建立一個普通用戶,目的是爲了讓虛擬用戶作一個映射的
  • useradd -s /sbin/nologin virftp
    • 用戶名字能夠隨意取
    • -s 指定它的shell
    • /sbin/nologin 表示這個用戶不能登陸到系統,這麼作是爲了安全
[root@yong-01 ~]# useradd -s /sbin/nologin virftp
  • 編輯 vim /etc/vsftpd/vsftpd_login 虛擬用戶的密碼文件,在密碼文件中定義用戶名和密碼
  • 文件格式爲:奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行
[root@yong-01 ~]# vim /etc/vsftpd/vsftpd_login

testuser1
123456
user1
111111a
  • 在編輯完密碼文件,而後給 /etc/vsftpd/vsftpd_login 文件作一個 600的權限設置,爲了確保密碼文件的安全,防止全部的用戶均可以讀取
  • chmod 600 /etc/vsftpd/vsftpd_login
[root@yong-01 ~]# chmod 600 /etc/vsftpd/vsftpd_login
  • 將文本的密碼文件轉換爲計算機識別的二進制文件
  • db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@yong-01 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@yong-01 ~]# ll /etc/vsftpd/
總用量 36
-rw------- 1 root root   125 8月   3 2017 ftpusers
-rw------- 1 root root   361 8月   3 2017 user_list
-rw------- 1 root root  5030 8月   3 2017 vsftpd.conf
-rwxr--r-- 1 root root   338 8月   3 2017 vsftpd_conf_migrate.sh
-rw------- 1 root root    31 6月  23 12:09 vsftpd_login
-rw-r--r-- 1 root root 12288 6月  23 12:10 vsftpd_login.db
  • 在/etc/vsftpd/目錄下,會看到生成了一個vsftpd_login.db文件,它和vsftpd_login文件相比只是多了一個 .db 的後綴
  • 這個vsftpd_login.db密碼是不能世界 cat命令 查看的,在上面的密碼文件是能夠自定義的
  • 建立虛擬用戶所在的配置文件目錄,這個目錄也是自定義的,也是須要在配置文件中定義
  • mkdir /etc/vsftpd/vsftpd_user_conf
  • 切換到 /etc/vsftpd/vsftpd_user_conf 文件下
  • cd /etc/vsftpd/vsftpd_user_conf
[root@yong-01 ~]# cd /etc/vsftpd/vsftp_user_conf/
[root@yong-01 vsftp_user_conf]#
  • 建立第一個用戶的配置文件,用戶的配置文件名字有一點特殊性,須要和用戶的名字保持一致,好比在密碼配置文件中的用戶爲testuser1,那麼定義的配置文件用戶名稱就爲testuser1
配置文件內容

local_root=/home/virftp/testuser1     //指定虛擬用戶的家目錄
anonymous_enable=NO                    //是否容許匿名用戶
write_enable=YES                              //是否可寫
local_umask=022                              //建立新文件目錄的默認權限
anon_upload_enable=NO                  //是否容許匿名用戶上傳
anon_mkdir_write_enable=NO          //是否容許匿名用戶建立目錄和寫
idle_session_timeout=600                 //鏈接ftp超時時間(秒)
data_connection_timeout=120         //數據傳輸的超時時間(秒)
max_clients=10                                //最多容許同時幾個終端鏈接
  • 最終以下
[root@yong-01 vsftp_user_conf]# vim testuser1

local_root=/home/virftp/testuser1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
  • 建立虛擬用戶的家目錄
  • mkdir /home/virftp/testuser1
[root@yong-01 vsftp_user_conf]# mkdir /home/virftp/testuser1
  • 新建一個文件,在登陸的時候就能夠看到這個文件了
  • touch /home/virftp/testuser1/yy.txt
[root@yong-01 vsftp_user_conf]# touch /home/virftp/testuser1/yy.txt
  • 將權限作一個修改,由於最後映射成virftp 這個用戶,若virftp這個用戶沒有讀的權利那就是錯誤的,沒法正常的去上傳和下載
  • chown -R virftp:virftp /home/virftp
[root@yong-01 vsftp_user_conf]# chown -R virftp:virftp /home/virftp/
[root@yong-01 vsftp_user_conf]# ll /home/virftp/
總用量 0
drwxr-xr-x 2 virftp virftp 20 6月  23 12:14 testuser1
  • 定義密碼文件的路徑
  • 將文件內容放入到/etc/pam.d/vsftpd ,文件在最前面加上
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

最終以下linux

[root@yong-01 vsftp_user_conf]# vim /etc/pam.d/vsftpd 

#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth
  • /etc/pam.d/vsftpd,它是一個用來認證的文件,在登陸FTP須要有一個認證的過程,認證的過程須要告訴它,經過什麼樣的形式去認證,認證的時候去哪裏找這個密碼庫
  • 在/etc/pam.d/vsftpd 添加的/lib64/security/pam_userdb.so,centos6中是爲了區分版本,分32位和64位,必定要注意這個文件是存在的(lib64或lib32)
  • 編輯 /etc/vsftpd/vsftpd.conf 主配置文件
[root@yong-01 vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf

將anonymous_enable=YES 改成 anonymous_enable=NO
將#anon_upload_enable=YES 改成 anon_upload_enable=NO ,並取消註釋符
將#anon_mkdir_write_enable=YES 改成 anon_mkdir_write_enable=NO ,並取消註釋符

並增長如下內容
chroot_local_user=YES
guest_enable=YES          //打開虛擬用戶映射
guest_username=virftp       //映射的用戶名
virtual_use_local_privs=YES               //告訴服務,咱們如今用的虛擬用戶
user_config_dir=/etc/vsftpd/vsftpd_user_conf   //定義虛擬用戶配置文件所在路徑
allow_writeable_chroot=YES
  • 更改完配置文件,去啓動vsftpd服務,啓動完並查看下進程和監聽的端口
  • systemctl start vsftpd //啓動vsftpd服務
[root@yong-01 vsftp_user_conf]# systemctl start vsftpd
[root@yong-01 vsftp_user_conf]# ps aux |grep vsftpd
root      2099  0.0  0.0  53212   572 ?        Ss   12:22   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      2101  0.0  0.0 112676   984 pts/0    R+   12:23   0:00 grep --color=auto vsftpd
[root@yong-01 vsftp_user_conf]# netstat -lntp |grep vsftpd
tcp6       0      0 :::21                   :::*                    LISTEN      2099/vsftpd
  • FTP監聽的端口爲21端口,22端口是sshd,23端口是telnet(如今telnet幾乎沒人使用了)

測試FTP

  • 最好在windows上安裝一個FTP的客戶端軟件,filezilla client軟件是FTP開源的、免費的能夠搭建服務,同時還有一個客戶端軟件

  • vsftpd服務已經啓動
  • 這裏爲了方便測試,直接在linux上的FTP客戶端,爲lftp——>安裝包yum install -y lftp
[root@yong-01 ~]# yum install -y lftp
  • 安裝完成以後,按以下輸入方式,而後回車輸入密碼口令,用ls命令就能夠查看到剛剛以前建立的文件,可見,已經鏈接成功
[root@yong-01 ~]# lftp testuser1@127.0.0.1
口令: 
lftp testuser1@127.0.0.1:~> ls      
drwxr-xr-x    2 1004     1004           20 Jun 23 04:14 testuser1
  • 能夠輸入 ? 查看可使用使用哪些命令
  • 好比進入到testuser1目錄裏面,把yy.txt文件直接下載到當前目錄
lftp testuser1@127.0.0.1:/> cd testuser1/
lftp testuser1@127.0.0.1:/testuser1> ls
-rw-r--r--    1 1004     1004            0 Jun 23 04:14 yy.txt
lftp testuser1@127.0.0.1:/testuser1> get yy.txt
  • 輸入quit 退出ftp
  • 在當前目錄直接ls命令查看,會看到yy.txt文件就是剛剛下載下來的
[root@yong-01 ~]# ll yy.txt
-rw-r--r-- 1 root root 0 6月  23 12:14 yy.txt
  • 查詢在lftp中可執行的命令,經常使用命令:put、get

xshell實現跟FTP的功能(兩種方案)

第一種方案:shell

  1. 在xshell中新建一個會話屬性,將名稱隨便填寫,協議改爲 sftp 協議,IP爲本機的IP,端口仍是22端口,由於走的仍是ssh協議

  • 而後打開,輸入用戶名和密碼,默認是在root下

文件下載路徑:vim

  • 第二種方案
    • 輸入ctrl+alt+f 使用xftp
相關文章
相關標籤/搜索