當修改/etc/exports文件後,更改的內容是不會當即生效的。若是重啓nfs服務,會致使客戶端重啓期間的請求是掛起等待的,能夠把客戶端的掛載umount進行卸載後,再重啓nfs服務,可是若是掛載的客戶端比較多時,這樣就比較麻煩了。這時,就可使用exportfs命令從新加載配置。shell
經常使用選項vim
服務端操做centos
[root@test-a ~]# vim /etc/exports # 新增一個NFS服務 [root@test-a ~]# cat /etc/exports /home/nfstestdir 192.168.77.0/24(rw,sync,all_squash,anonuid=1003,anongid=1003) /tmp/ 192.168.77.129(rw,sync,no_root_squash) [root@test-a ~]# exportfs -arv # 全區從新加載,這時客戶端能夠查看到新的NFS服務並進行掛載 exporting 192.168.77.129:/tmp exporting 192.168.77.0/24:/home/nfstestdir [root@test-a ~]# ls /tmp/abc.txt -l # 客戶端建立的文件 -rw-r--r--. 1 root root 0 Dec 10 00:57 /tmp/abc.txt
客戶端操做安全
[root@centos0 mnt]# showmount -e 192.168.77.134 # NFS服務器從新加載後 Export list for 192.168.77.134: /home/nfstestdir 192.168.77.0/24 /tmp 192.168.77.129 [root@centos0 mnt]# mkdir /tmp/share [root@centos0 mnt]# mount -t nfs 192.168.77.134:/tmp/ /tmp/share # 掛載 [root@centos0 mnt]# touch /tmp/share/abc.txt # 建立文件 [root@centos0 mnt]# ls /tmp/share/abc.txt -l -rw-r--r--. 1 root root 0 12月 10 00:57 /tmp/share/abc.txt
通常是NFS 4版本會有該問題,客戶端掛載共享目錄後,無論是root用戶仍是普通用戶,建立新建文件時屬主、屬組爲nobody。解決方法有兩種
方法 1: 客戶端掛載時加上-o nfsvers=3,指定使用NFS 3版本。(-o remount,nfsvers=3 直接從新掛載)
方法 2: 客戶端和服務器都須要編輯 /etc/idmapd.conf, 把 "#Domain = local.domain.edu" 改成 "Domian = xxx.com" (xxx.com隨意定義),而後重啓rpcidmapd服務。服務器
[root@test-a ~]# yum isntall -y vsftpd [root@test-a ~]# useradd -s /sbin/nologin ftpuser01 # 建立一個不能登陸的用戶 [root@test-a ~]# vim /etc/vsftpd/vsftpd_login # 設置虛擬帳戶的用戶名密碼,奇數行是用戶名,偶數行是對應的密碼 [root@test-a ~]# cat /etc/vsftpd/vsftpd_login virftpuser01 test111 [root@test-a ~]# chmod 600 /etc/vsftpd/vsftpd_login # 更改權限 [root@test-a ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db # 生成計算機能夠設別的二進制文件 [root@test-a ~]# ls -l /etc/vsftpd/ total 32 -rw-------. 1 root root 125 Oct 31 03:45 ftpusers -rw-------. 1 root root 361 Oct 31 03:45 user_list -rw-------. 1 root root 5116 Oct 31 03:45 vsftpd.conf -rwxr--r--. 1 root root 338 Oct 31 03:45 vsftpd_conf_migrate.sh -rw-------. 1 root root 21 Dec 11 06:47 vsftpd_login -rw-r--r--. 1 root root 12288 Dec 11 06:50 vsftpd_login.db [root@test-a ~]# mkdir /etc/vsftpd/vsftpd_user_conf # 建立虛擬用戶的配置目錄 [root@test-a ~]# cd /etc/vsftpd/vsftpd_user_conf [root@test-a vsftpd_user_conf]# vim virftpuser01 # 建立虛擬用戶的配置文件 [root@test-a vsftpd_user_conf]# cat virftpuser01 local_root=/home/ftpuser01/virftpuser01 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 [root@test-a vsftpd_user_conf]# mkdir /home/ftpuser01/virftpuser01 # 建立虛擬用戶的主目錄 [root@test-a vsftpd_user_conf]# touch /home/ftpuser01/virftpuser01/share01.txt # 新建一個測試文件 [root@test-a vsftpd_user_conf]# chown -R ftpuser01:ftpuser01 /home/ftpuser01 # 爲家目錄設置屬主屬組 [root@test-a vsftpd_user_conf]# vim /etc/pam.d/vsftpd # 添加ftp用戶的密碼路徑,要在最前面添加 # auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login # account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login [root@test-a vsftpd_user_conf]# cat /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/ft pusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-auth [root@test-a vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf # 再來編輯ftp主配置文件 # 將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=ftpuser01 # virtual_use_local_privs=YES # user_config_dir=/etc/vsftpd/vsftpd_user_conf # allow_writeable_chroot=YES #啓動ftp服務 [root@test-a vsftpd_user_conf]# systemctl start vsftpd [root@test-a vsftpd_user_conf]# ps aux|grep vsftpd root 16216 0.0 0.0 51180 568 ? Ss 07:10 0:00 /usr/sbin/vsftp d /etc/vsftpd/vsftpd.conf root 16224 0.0 0.0 112704 976 pts/0 R+ 07:10 0:00 grep --color=au to vsftpd # 密碼輸入錯誤 [root@test-a vsftpd_user_conf]# lftp virftpuser01@127.0.0.1 Password: lftp virftpuser01@127.0.0.1:~> ls ls: Login failed: 530 Login incorrect. lftp virftpuser01@127.0.0.1:~> exit # 正確輸入密碼後,能夠看到之間建立的文件 [root@test-a vsftpd_user_conf]# lftp virftpuser01@127.0.0.1 Password: lftp virftpuser01@127.0.0.1:~> ls -rw-r--r-- 1 1009 1010 0 Dec 10 23:00 share01.txt lftp virftpuser01@127.0.0.1:/> get share01.txt # 下載到本地的當前目錄 lftp virftpuser01@127.0.0.1:/> exit [root@test-a vsftpd_user_conf]# ls share01.txt virftpuser01