1. exportfs命令
一般情況下重啓服務器上nfs服務時,需把客戶端上的掛載先卸載掉,以免進程後面殺不掉。當客戶端服務器很多時,操作起來就比較麻煩。此時可以使用exportfs命令重新加載下。
exportfs命令:
是隨nfs-utils 一起安裝的
exportfs 命令用來管理當前NFS共享的文件系統列表。
常用選項:
-a 全部掛載或者全部卸載
-r 重新掛載
-u 卸載某一個目錄
-v 顯示共享目錄
當改變/etc/exports配置文件後,使用exportfs命令掛載不需要重啓nfs服務。
以下操作在服務端上
vim /etc/exports //增加
/tmp/ 172.20.6.240(rw,sync,no_root_squash) //把/tmp目錄單獨共享給172.20.6.240這個主機ip
exportfs -arv //不用重啓nfs服務,配置文件就會生效
172.20.6.240客戶端機器上操作:
showmount -e 192.168.89.51 //查看有權限的共享目錄
mount -t nfs 192.168.89.51:/tmp /mnt //把tmp目錄掛載到/mnt下
2. NFS客戶端問題:
客戶端文件屬主屬組nobody:
NFS 4版本會有該問題
客戶端掛載共享目錄後,不管是root用戶還是普通用戶,創建新文件時屬主、屬組爲nobody
解決方法:
1. 客戶端掛載時加上 -o nfsvers=3
mount -t nfs -oremount,nfsvers=3 192.168.89.51:/home/nfstestdir /mnt //已經掛載不想卸載時可以-oremount 重新掛載。
2. 客戶端和服務端都需要
vim /etc/idmapd.conf //
把“#Domain = local.domain.edu” 改爲 “Domain = xxx.com” (這裏的xxx.com,隨意定義吧),然後再重啓rpcidmapd服務(CentOS 6以上系統重啓rpcbind服務)
3. FTP介紹
ftp應用環境:
- 一般情況我們和linux服務器數據傳輸時會用到rz/sz命令;
- rz/sz命令傳輸大文件,比如超過4G時就沒辦法用了;
- 有跳板機的時候,在用rz/sz傳輸數據時也會出現問題;
- 在linux上搭建一個ftp服務,然後在主機上裝個ftp客戶端,就可以和linux服務器傳輸文件。這就是ftp服務器
ftp介紹:
- FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。
- FTP的主要作用就是讓用戶連接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,然後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。
- 小公司用的多,大企業不用FTP,因爲不安全
- 大型企業一般使用自動化發佈工具
4. vsftpd搭建ftp
centos上自帶的vsftpd服務:
yum install -y vsftpd
安裝vsftpd軟件包;
useradd -s /sbin/nologin virftp
創建一個ftp映射的賬戶;
創建虛擬用戶密碼文件:
vim /etc/vsftpd/vsftpd_login
新建一個ftp虛擬用戶文件,內容如下,奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行
user1
1%6eEHPu9
chmod 600 /etc/vsftpd/vsftpd_login
設置權限600;
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
保存虛擬帳號和密碼的文件無法被系統帳號直接調用。我們需要使用db_load 命令生成db庫文件
-T允許應用程序能夠將文本文件轉譯載入進數據庫。
-t hash使用hash碼加密
-f 指定包含用戶名和密碼文本文件。此文件格式要示:奇數行用戶名、偶數行密碼
創建和用戶對應的配置文件:
mkdir /etc/vsftpd/vsftpd_user_conf
創建與虛擬賬號相關的目錄以及配置文件
用戶的配置文件是單獨存在的,每一個用戶都有一個自己的配置文件,文件名和用戶名一致
cd /etc/vsftpd/vsftpd_user_conf
vim user1 //加入如下內容
local_root=/home/virftp/user1
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
其中local_root:爲user1賬號的家目錄;anonymous_enable:用來限制是否允許匿名賬戶登錄(若爲NO,表示不允許匿名賬號登錄);write_enable=YES:表示可寫;local_umask:指定umask值;anon_upload_enable:表示是否允許匿名賬號上傳文件;anon_mkdir_write_enable:表示是否允許匿名賬號可寫;idle_session_timeout:表示空閒多長時間超時;data_connection_timeout=120如果服務器與客戶端的數據聯機已經成功建立 (不論主動還是被動聯機),但是可能由於線路問題導致 120 秒內還是無法順利的完成數據的傳送,那客戶端的聯機就會被我們的 vsftpd 強制剔除;max_clients:有多少 client 可以同時連上 vsftpd;
在virftp家目錄下創建以用戶名命名的家目錄:
mkdir /home/virftp/user1
touch /home/virftp/user1/gavin.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
CentOS7爲64位系統,所以庫文件路徑爲/lib64/security/pam_userdb.so(32位系統的庫文件路徑爲/lib/security/pam_userdb.so)
修改全局配置文件/etc/vsftpd/fsftpd.conf:
修改用戶配置文件後還不可用,還需要修改vsftpd的一些全局配置文件;
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服務
ftp監聽21端口
測試ftp:
linux中ftp客戶端爲lftp;
yum install -y lftp
lftp user1@127.0.0.1
執行命令ls,看是否正常輸出
? 可以查看支持的命令,一般put和get用的比較多
get會把文件下載到當前目錄
若不正常查看日誌/var/log/messages和/var/log/secure
windows下安裝filezilla客戶端軟件,進行測試
ftp://192.168.89.51 通過瀏覽器訪問