本文索引:shell
在nfs運行後的一段時間內,若是須要添加共享目錄,這時須要修改exports文件,並重啓服務使之生效。然而此時可能有客戶端已經掛載了共享目錄,而且正在執行讀寫操做。這時咱們就不能直接關閉服務器上的nfs服務,這樣極易致使客戶端上的讀寫nfs共享目錄內文件的進程掛起,致使進程狀態不正常,既沒法刪除也沒法重啓,嚴重時將致使客戶端宕機。直接重啓nfs服務的前提是將掛載了共享目錄的客戶機卸載目錄,在客戶端不少的狀況下,這種方法就變得十分繁瑣。vim
nfs-utils包內自帶了一個exportfs命令,能夠在不關閉nfs服務的狀況下生效修改後的exports文件。centos
例如在服務器進行以下修改安全
[root@server ~]# vim /etc/exports /home/nfstestdir 192.168.65.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) # 添加以下代碼 /tmp 192.168.65.134(rw,sync,no_root_squash)
此時客戶端上查看的共享目錄信息未變服務器
[root@client ~]# showmount -e 192.168.65.133 Export list for 192.168.65.133: /home/nfstestdir 192.168.65.0/24
執行exportfs目錄後從新查看session
[root@server ~]# exportfs -arv exporting 192.168.65.134:/tmp exporting 192.168.65.0/24:/home/nfstestdir # 客戶端信息更新 [root@client ~]# showmount -e 192.168.65.133 Export list for 192.168.65.133: /home/nfstestdir 192.168.65.0/24 /tmp 192.168.65.134
測試配置是否生效tcp
[root@client ~]# mount -t nfs 192.168.65.133:/tmp /mnt [root@client ~]# vim /mnt/11.txt # no_root_squash參數生效 [root@client ~]# ls -l /mnt/11.txt -rw-r--r--. 1 root root 11 1月 10 20:00 /mnt/11.txt [root@server ~]# ls -l /tmp/11.txt -rw-r--r--. 1 root root 11 1月 10 20:00 /tmp/11.txt
在centos6版本中,NFSv4偶爾會出現一個問題:客戶端在掛載共享目錄後,即使是在服務端設定好no_root_squash參數後,不管是root用戶還普通用戶,在建立新文件時,文件的屬主和屬組都爲nobody。測試
解決上述問題的方法:ui
-o nfsvers=3
,即指定nfs版本爲3,不去使用v4版本。# 方法1:先umount,後mount [root@client ~]# umount /mnt [root@client ~]# mount -t nfs -o nfsvers=3 192.168.65.133:/tmp /mnt # 使用-o remount命令(前提已經掛載) [root@client~]# mount -t nfs -oremount,nfsvers=3 192.168.65.133:/tmp /mnt
# 客戶端、服務器都須要進行配置 [root@localhost ~]# vim /etc/idmapd.conf /Domain定義到該行 在下一行添加 Domain = xxx.com //域名能夠隨意,客戶端、服務器對應便可 # 完成後在服務器上重啓rpcbind服務 [root@localhost ~]# systemctl restart rpcbind
FTP是File Transfer Protocol
文件傳輸協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。debug
ftp的主要做用就是讓用戶鏈接一個遠程計算機(運行ftp訪問的服務器),並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本機計算機的文件傳輸到遠程計算機。
出於安全性的考慮,ftp在小公司用的比較多。大企業幾乎不怎麼使用,而是使用專門的自動化發佈平臺,相對而言更加安全。
centos上的ftp軟件包 vsftpd
vsftpd能夠由系統級別的用戶去登陸ftp,登陸後用戶會進入其家目錄下。因爲這些ftp用戶(系統級別用戶)設置密碼後,能夠登陸到系統,極易產生一些安全問題。咱們能夠經過給FTP服務設置一個虛擬的用戶,並映射爲系統內的普通用戶,這些虛擬用戶就沒法直接登陸服務器,安全性就比較好。
[root@localhost ~]# yum install -y vsftpd
# 建立用戶指定shell爲/sbin/nologin,不讓用戶登陸系統 [root@localhost ~]# useradd -s /sbin/nologin virftp
# 密碼文件格式:奇數行爲用戶名,偶數行爲密碼 [root@localhost ~]# vim /etc/vsftpd/vsftpd_login test 1 # 修改權限,只有屬主有讀寫權限 [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/vsftpd_login* -rw-r--r--. 1 root root 7 1月 11 18:31 /etc/vsftpd/vsftpd_login -rw-r--r--. 1 root root 12288 1月 11 18:37 /etc/vsftpd/vsftpd_login.db
# 存儲配置文件的目錄須要直接建立,目錄名自定義 [root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf [root@localhost ~]# cd /etc/vsftpd/vsftpd_user_conf # 配置文件的文件名須要跟密碼文件內的用戶名對應 # 好比我在/etc/vsftpd/vsftpd_login下定義的用戶時test,這裏配置文件就是test [root@localhost vsftpd_user_conf]# vim test // 輸入如下代碼 // 定義虛擬用戶的家目錄,用戶在該目錄讀寫文件 local_root=/home/virftp/test // 不容許匿名用戶 anonymous_enable=NO // 容許寫 write_enable=YES // 虛擬用戶建立新文件、目錄的umask值 local_umask=022 // 不容許匿名用戶上傳 anon_upload_enable=NO // 不容許匿名用戶建立目錄並寫文件 anon_mkdir_write_enable=NO // 空閒用戶時間,超過自動斷開鏈接 idle_session_timeout=600 // 數據傳輸的超時時間 data_connection_timeout=120 // 最大鏈接的客戶端數 max_clients=10
[root@localhost vsftpd_user_conf]# mkdir /home/virftp/test [root@localhost vsftpd_user_conf]# touch /home/virftp/test/1.txt # 修改目錄的權限,防止因權限致使的沒法讀寫問題 [root@localhost vsftpd_user_conf]# chown -R virftp:virftp /home/virftp/
# /etc/pam.d/vsftpd 用來認證的文件,登陸ftp時,經過該文件比對用戶及密碼十分準確 [root@localhost vsftpd_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
對於/etc/pam.d/vsftpd內添加的代碼說明:/lib64/security/pam_userdb.so是64位系統內的庫文件路徑,在centos6版本內還有32位的系統,這時須要修改成/lib/security/pam_userdb.so。
[root@localhost vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=NO //原爲:anonymous_enable=YES anon_upload_enable=NO //原爲:#anon_upload_enable=YES anon_mkdir_write_enable=NO //原爲:#anon_mkdir_write_enable=YES #再添加以下代碼 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
[root@localhost vsftpd_user_conf]# systemctl start vsftpd # 服務已啓動 [root@localhost vsftpd_user_conf]# ps aux| grep vsftp root 2486 0.0 0.0 53216 580 ? Ss 19:17 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 2488 0.0 0.0 112680 976 pts/0 S+ 19:19 0:00 grep --color=auto vsftp # 21端口已開 [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 2486/vsftpd ...
啓動時報錯「Job for vsftpd.service failed because the control process exited with error code.」,其緣由是配置文件vsftpd.conf內參數寫錯,因此遇到啓動不了能夠查看配置參數是否正確。
Windows上推薦使用filezilla,爲了測試的方便,在測試機安裝lftp軟件便可。
[root@localhost vsftpd_user_conf]# yum install -y lftp
# 登陸ftp服務器:用戶名@127.0.0.1,輸入密碼 [root@localhost vsftpd_user_conf]# lftp test@127.0.0.1 口令: # 成功登陸 # ls查看當前目錄下的文件 lftp test@127.0.0.1:~> ls -rw-r--r-- 1 1002 1002 0 Jan 11 10:47 1.txt # ?查看可操做的命令 lftp test@127.0.0.1:/> ? !<shell-command> (commands) alias [<name> [<value>]] attach [PID] bookmark [SUBCMD] cache [SUBCMD] cat [-b] <files> cd <rdir> chmod [OPTS] mode file... close [-a] [re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>] du [options] <dirs> exit [<code>|bg] get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args> help [<cmd>] history -w file|-r file|-c|-l [cnt] jobs [-v] [<job_no...>] kill all|<job_no> lcd <ldir> lftp [OPTS] <site> ln [-s] <file1> <file2> ls [<args>] mget [OPTS] <files> mirror [OPTS] [remote [local]] mkdir [-p] <dirs> module name [args] more <files> mput [OPTS] <files> mrm <files> mv <file1> <file2> [re]nlist [<args>] open [OPTS] <site> pget [OPTS] <rfile> [-o <lfile>] put [OPTS] <lfile> [-o <rfile>] pwd [-p] queue [OPTS] [<cmd>] quote <cmd> repeat [OPTS] [delay] [command] rm [-r] [-f] <files> rmdir [-f] <dirs> scache [<session_no>] set [OPT] [<var> [<val>]] site <site-cmd> source <file> torrent [-O <dir>] <file|URL>... user <user|URL> [<pass>] wait [<jobno>] zcat <files> zmore <files> # get命令從ftp服務器上下載文件到本機 lftp test@127.0.0.1:/> get 1.txt lftp test@127.0.0.1:/> quit # get命令下載的文件默認在登陸前的用戶所在目錄 [root@localhost vsftpd_user_conf]# ls 1.txt test