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 通过浏览器访问