exportfs命令、NFS客戶端問題、FTP介紹、使用vsftpd搭建ftp服務
exportfs命令用來管理當前NFS共享的文件系統列表。
常用選項
- -a:全部卸載或全部掛載
- -r:重新掛載
- -u:卸載某個目錄
-
-v:顯示共享目錄
- 常用組合:exportfs -arv
- 服務端更改配置文件後,不重啟服務,直接執行該命令就可以使更改後的配置文件生效。
註意: 在重啟nfs服務之前需要先將所有掛載點卸載,否則將發生程序錯誤,嚴重者會拖垮系統。
以上操作都在服務端進行!
測試
在服務端的/etc/exports配置文件中,增加一行。把/tmp/目錄單獨共享給192.168.159.132這個ip。 [root@localhost ~]# vim /etc/exports ...... /tmp 192.168.159.132(rw.sync,no_root_squash) 重新使配置文件生效: [root@localhost ~]# exportfs -arv exporting 192.168.159.132:/tmp exporting 192.168.159.0/24:/home/nfstestdir 檢查客戶端是否有權限訪問服務端文件: [root@localhost ~]# showmount -e 192.168.159.131 Export list for 192.168.159.131: /home/nfstestdir 192.168.159.0/24 /tmp 192.168.159.132 // 發現並沒有重啟nfs服務,配置就已經生效了 在客戶端上將tmp目錄掛載到mnt目錄下 [root@localhost ~]# mount -t nfs 192.168.159.131:/tmp/ /mnt/ [root@localhost ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 ...... 192.168.159.131:/tmp 16G 5.2G 11G 33% /mnt // 現在客戶端服務器上的/mnt/目錄就是服務端服務器的/tmp/目錄 在客戶端的/mnt/目錄下創建文件,並查看目錄下的文件,能看到新建的文件1.txt和2.txt文件的屬組屬主都是root [root@localhost ~]# touch /mnt/1.txt [root@localhost ~]# ls -l /mnt 總用量 0 -rw-r--r--. 1 root root 0 1月 17 21:15 1.txt 再看服務端的/tmp/目錄,1.txt文件的屬組和屬主也都是root [root@localhost ~]# ls -l /tmp/ 總用量 0 -rw-r--r--. 1 root root 0 1月 17 21:15 1.txt
- 這是因為服務端的配置文件中,使用了no_root_squash,所以root用戶就不受約束,在客戶端上的掛載點下就可以想在本地盤使用root用戶一樣,是不受限制的(通常情況下,不限制root用戶的比較多。)
NFS客戶端問題
- NFS 4版本會有該問題
- 客戶端掛載共享目錄後,不管是root用戶還是普通用戶,創建新文件時屬主、屬組為nobody
- 客戶端掛載時加上 -o nfsvers=3
- 客戶端和服務端都需要
- vim /etc/idmapd.conf //
- 把“#Domain = local.domain.edu” 改為 “Domain = xxx.com” (這裏的xxx.com,隨意定義吧),然後再重啟rpcidmapd服務
在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.202.130:/tmp/ /mnt/
- 若是不想卸載,直接掛載,可以使用mount -t nfs -oremount,nfsvers=3 192.168.202.130:/tmp/ /mnt/ (前提是先掛載上去)
- mount -t nfs -o nfsvers=3 192.168.202.130:/tmp/ /mnt/
- 方法二:更改配置文件vim /etc/idmapd.conf ,把“#Domain = local.domain.edu” 改為 “Domain = xxx.com” (這裏的xxx.com,隨意定義吧),然後再重啟rpcidmapd服務
- 在cnetos7中,本身是沒有rpcidmapd服務的,只需要重啟rpcbind服務就可以了
-
FTP 介紹
FTP(file transfer protocol)文件傳輸協議,用於在Internet上控制文件的雙向傳輸。FTP主要作用是讓用戶連接一個遠程計算機(這些計算機上運行著FTP服務器程序)查看遠程計算機有哪些文件,然後把文件從遠程計算機上拷貝到本地計算機,或把本地文件傳送到遠程計算機。
該服務在小公司用的比較多,由於FTP服務的安全性較差,所以大公司不使用該服務。
使用vsftpd 搭建ftp服務
centos 上自帶vsftpd 軟件包
-
安裝
[root@localhost ~]# yum install -y vsftpd
-
創建用戶
vsftpd可以使用系統級別的用戶進行登錄,但是這樣做不安全,所以需要使用vsftpd創建一個虛擬用戶。在此創建一個系統普通用戶的作用是使vsftpd的虛擬用戶來進行映射,然後完成數據的傳輸。
[root@localhost ~]# useradd -s /sbin/nologin virftp
-
編輯虛擬用戶的密碼文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd_login
testuser1
123456
user1
112233
// 註意,配置文件中的奇數行為用戶名,偶數行為密碼。配置完需要給密碼文件配置權限
[root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login -
將文本形式的密碼文件轉化成計算機識別的二進制文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@localhost ~]# ls -l /etc/vsftpd/
......
-rw-------. 1 root root 30 1月 17 15:08 vsftpd_login
-rw-r--r--. 1 root root 12288 1月 17 15:12 vsftpd_login.db
// 生成了一個vsftpd_login.db 文件,這個文件是不能cat的 -
創建虛擬用戶配置文件
創建配置文件目錄:
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf切換到新建目錄下:
[root@localhost ~]# cd /etc/vsftpd/vsftpd_user_conf/創建第一個用戶的配置文件:
[root@localhost 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
// 空閑用戶保留時間,600秒無操作自動斷開。
data_connection_timeout=120
// 數據傳輸超時時間
max_client=10
// 客戶端最大連接數量 -
創建虛擬用戶家目錄
創建虛擬用戶家目錄:
[root@localhost vsftpd_user_conf]# mkdir /home/virftp/testuser1創建一個文件,登錄時可以看見
[root@localhost vsftpd_user_conf]# touch /home/virftp/testuser1/testftp.txt修改虛擬用戶家目錄的屬主屬組:
[root@localhost vsftpd_user_conf]# chown -R virftp:virftp /home/virftp編輯vsftpd的認證文件:
[root@localhost vsftpd_user_conf]# vim /etc/pam.d/vsftpd
// 這個是登錄ftp時的認證文件。
// 將下面兩行代碼加在文件開頭
#%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// 這兩行代碼用於指定用戶密碼文件位置
// 在centos6中因為區分32位和64版本,所以註意文件是在lib32還是lib64中。如果是32位,路徑寫了lib64,導致服務啟動失敗。
-
編輯vsftpd主配置文件
[root@localhost vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
......
anonymous_enable=NO
// 由YES改成NO。不允許匿名用戶登錄
anon_upload_enable=NO
// 取消前面的註釋,由YES改成NO。不允許匿名用戶上傳文件。
anon_mkdir_write_enable=NO
// 取消前面的註釋,由YES改成NO。不允許創建目錄
......
在文件最後加入下面內容:
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
// 開啟虛擬用戶和系統用戶的映射
virtual_use_local_privs=YES
// 告訴服務使用虛擬用戶
user_config_dir=/etc/vsftpd_user_conf
// 定義虛擬用戶配置文件路徑
allow_writeable_chroot=YES -
啟動服務
啟動服務:
[root@localhost vsftpd_user_conf]# systemctl start vsftpd查看進程:
[root@localhost vsftpd_user_conf]# ps aux | grep vsftp
root 2795 0.0 0.0 53216 572 ? Ss 16:11 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 2797 0.0 0.0 112680 976 pts/0 R+ 16:11 0:00 grep --color=auto vsftp
// 進程已經存在查看監聽端口:
[root@localhost vsftpd_user_conf]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::21 :::* LISTEN 2795/vsftpd// vsftpd 服務監聽21端口
// FTP服務監聽21端口;sshd監聽22端口;telnet監聽23端口。 -
測試
安裝linux下的ftp客戶端:
[root@localhost ~]# yum install -y lftp使用虛擬用戶登錄ftp客戶端:
[root@localhost ~]# lftp [email protected]
口令:lftp [email protected]:~> ls
drwxr-xr-x 2 1004 1005 25 Jan 17 07:24 testuser1
lftp [email protected]:/> ls testuser1
-rw-r--r-- 1 1004 1005 0 Jan 17 07:24 testftp.txt
// 使用ls命令查看虛擬用戶家目錄下的文件有哪些,發現之前創建的文件。
// ls 報錯500,沒有關閉selinuxlftp [email protected]:/> ?
// ? 可以查看ftp支持哪些命令。將testftp.txt 傳輸到本機:
lftp [email protected]:/> get testuser1/testftp.txt
lftp [email protected]:/> quit
[root@localhost ~]# ls
testftp.txt// 接受文件的目錄為當前目錄,即進入ftp服務的目錄。
// 常用的命令put、get
windows 上可以使用filezilla 軟件測試ftp服務。
-
使用xshell實現FTP功能
- 方法一:使用sftp
新建會話→名稱自定→協議選擇SFTP→主機為遠程主機ip→端口號默認22。
連接遠程主機,使用常用的用戶名密碼,即可登錄ftp。
右鍵遠程連接屬性,sftp可以設置下載的文件存放位置
- 方法二:使用xftp
在xshell中退出當前會話使用組合鍵:Ctrl+Alt+F,提示下載,下載安裝後即可使用。
exportfs命令、NFS客戶端問題、FTP介紹、使用vsftpd搭建ftp服務