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