14.4 exportfs命令
工作中,如果使用了nfs服務器,會遇到修改nfs服務器配置的情況,如果想重新讓客戶端加載上修改後的配置,
但是又不能重啓rpcbind服務,我們需要使用export命令了
exportfs命令
常用選項
-a 全部掛載或者全部卸載
-r 重新掛載
-u 卸載某一個目錄
-v 顯示共享目錄
以下操作在服務端上
vim /etc/exports //增加
/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)
*exportfs -arv
//不用重啓nfs服務,配置文件就會生效
nfs服務不能隨便重啓,重啓服務會對掛載了nfs的客戶端有影響,
exportfs來自nfs-utils
作用是修了配置後重載,不用重啓服務。
服務器:
[root@JAMF nfsdir]# vim /etc/exports
/home/nfsdir 172.16.22.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
/tmp 172.16.22.0/24(rw,sync,no_root_squash)
[root@JAMF nfsdir]# exportfs -arv
exporting 172.16.22.0/24:/tmp
exporting 172.16.22.0/24:/home/nfsdir
客戶端:
[root@zabbix ~]# showmount -e 172.16.22.247
Export list for 172.16.22.247:
/tmp 172.16.22.0/24
/home/nfsdir 172.16.22.0/24
[root@zabbix ~]# mkdir /mnt/tmp
[root@zabbix ~]# mount -t nfs -onolock 172.16.22.247:/tmp /mnt/tmp
-o nolock 了,即在掛載nfs服務時,不加鎖。 在客戶端上執行:
[root@zabbix ~]# touch /mnt/tmp/new.txt
[root@zabbix tmp]# ll /mnt/tmp/new.txt
-rw-r--r-- 1 root root 0 Mar 16 01:41 /mnt/tmp/new.txt
服務器:
[root@JAMF nfsdir]# ll /tmp/new.txt
-rw-r--r-- 1 root root 0 Mar 16 01:41 /tmp/new.txt
[root@zabbix mnt]# mount -t nfs -Oremount,nfsvers=3 172.16.22.247:/tmp /mnt/tmp
mount.nfs: /mnt/tmp is busy or already mounted
[root@zabbix mnt]# umount /mnt/tmp/
[root@zabbix mnt]# mount -t nfs -Oremount,nfsvers=3 172.16.22.247:/tmp /mnt/tmp
14.5 NFS客戶端問題
客戶端文件屬主屬組nobody
NFS 4版本會有該問題
客戶端掛載共享目錄後,不管是root用戶還是普通用戶,創建新文件時屬主、屬組爲nobody
客戶端掛載時加上 -O nfsvers=3
[root@zabbix mnt]# mount -t nfs -Oremount,nfsvers=3 172.16.22.247:/tmp /mnt/tmp
mount.nfs: /mnt/tmp is busy or already mounted
[root@zabbix mnt]# umount /mnt/tmp/
[root@zabbix mnt]# mount -t nfs -Oremount,nfsvers=3 172.16.22.247:/tmp /mnt/tmp
客戶端和服務端都需要
vim /etc/idmapd.conf //
把“#Domain = local.domain.edu” 改爲 “Domain = xxx.com” (這裏的xxx.com,隨意定義吧),然後再重啓rpcidmapd服務
服務器:
[root@JAMF nfsdir]# vim /etc/idmapd.conf
[General]
#Verbosity = 0
# The following should be set to the local NFSv4 domain name
# The default is the host's DNS domain name.
Domain = jamf.oceanwing.com
[root@JAMF nfsdir]# systemctl restart rpcidmapd
客戶端:
[root@zabbix mnt]# vim /etc/idmapd.conf
[General]
#Verbosity = 0
# The following should be set to the local NFSv4 domain name
# The default is the host's DNS domain name.
Domain = zabbix.oceanwing.com
[root@zabbix mnt]# systemctl restart rpcidmapd
15.1 FTP介紹
FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。
FTP的主要作用就是讓用戶連接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,然後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。
小公司用的多,大企業不用FTP,因爲不安全
15.2/15.3 使用vsftpd搭建ftp
yum -y install vsftpd //centos上自帶vsftpd
[root@test1 ~]# groupadd virftp 添加組,可以不添加
[root@test1 ~]# useradd -s /sbin/nologin -g virftp virftp 添加用戶,不讓登錄
[root@test1 ~]# vim /etc/vsftpd/vsftpd_login 添加用戶名和密碼,奇數用戶名,偶數密碼
aiker
aiker01
gavin
gavin02
zhao
zhao03
[root@test1 ~]# chmod 600 !$ 設置權限,只能root讀寫
chmod 600 /etc/vsftpd/vsftpd_login
[root@test1 ~]# cat !$
cat /etc/vsftpd/vsftpd_login
aiker
aiker01
gavin
gavin02
zhao
zhao03
[root@test1 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db 轉換爲機器識別二進制文件
mkdir /etc/vsftpd/vsftpd_user_conf 創建虛擬用戶配置文件目錄,
[root@test220 ~]# ll /etc/vsftpd/
total 36
-rw------- 1 root root 125 Aug 3 2017 ftpusers
-rw------- 1 root root 361 Aug 3 2017 user_list
-rw------- 1 root root 5030 Aug 3 2017 vsftpd.conf
-rwxr--r-- 1 root root 338 Aug 3 2017 vsftpd_conf_migrate.sh
-rw------- 1 root root 40 Mar 16 23:53 vsftpd_login
-rw-r--r-- 1 root root 12288 Mar 16 23:55 vsftpd_login.db
[root@test220 vsftpd_user_conf]# vim aiker 創建虛擬用戶配置文件
local_root=/home/virftp/aiker 虛擬用戶家目錄
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@test220 vsftpd_user_conf]# mkdir /home/virftp/aiker
[root@test220 vsftpd_user_conf]# touch /home/virftp/aiker/aikertest.txt
[root@test220 vsftpd_user_conf]# 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
[root@test220 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
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
[root@test220 vsftpd_user_conf]# ll /lib64/security/pam_userdb.so
-rwxr-xr-x. 1 root root 15392 Nov 6 2016 /lib64/security/pam_userdb.so
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
或者
sed -i 's/^anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf
[root@test220 vsftpd_user_conf]# sed -i 's/^#anon_upload_enable=YES/anon_upload_enable=NO/' /etc/vsftpd/vsftpd.conf
[root@test220 vsftpd_user_conf]# sed -i 's/^#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=NO/' /etc/vsftpd/vsftpd.conf
[root@test220 vsftpd_user_conf]# sed -n '/enable/'p /etc/vsftpd/vsftpd.conf anonymous_enable=NO
local_enable=YES
# Uncomment this to enable any form of FTP write command.
write_enable=YES
# has an effect if the above global write enable is activated. Also, you will
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#deny_email_enable=YES
#chroot_list_enable=YES
#ls_recurse_enable=YES
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# This directive enables listening on IPv6 sockets. By default, listening
userlist_enable=YES
cat >> /etc/vsftpd/vsftpd.conf <<EOF
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
EOF
[root@test220 vsftpd_user_conf]# systemctl start vsftpd
[root@test220 vsftpd_user_conf]#
[root@test220 vsftpd_user_conf]# ps aux | grep ftp
root 4455 0.0 0.0 52720 568 ? Ss 00:36 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[root@test220 vsftpd_user_conf]# firewall-cmd --permanent --zone=public --add-port=21/tcp
success
[root@test220 vsftpd_user_conf]# firewall-cmd --reload