14.4 exportfs命令 (yum install -y nfs-utils同时安装)
常用选项 -a 全部挂载或者全部卸载 -r 重新挂载 -u 卸载某一个目录 -v 显示共享目录
以下操作在服务端上
vim /etc/exports //增加/tmp/ 192.168.133.0/24(rw,sync,no_root_squash)
exportfs -arv //不用重启nfs服务,配置文件就会生效
以下操作在客户端
mkdir /aminglinux
mount -t nfs -onolock 192.168.133.130:/tmp /aminglinux
touch /aminglinux/test.txt
ls -l !$
-oremount,nfsvers=3
假设配置了nfs共享目录,一段时间后需要更改或者增加某些机器或者增加共享目录,首先更改配置文件/etc/exports,更改后重启nfs服务,但是远程客户端正在使用nfs服务,正挂载着,如果要停止nfs服务,那远程的客户端会被挂起,客户端无法正常访问共享目录,此时如果客户端读写非常频繁,就会导致读写这个共享文件的进程(PHP、Nginx等)就会挂起。
ps aux显示进程中STAT列中进程状态D ,D表示此进程不能中断,此时NFS服务停止,状态就会变成D,客户端上的进程就不正常,并且无法杀死进程,重启也重启不了,服务就会异常,同时存在客户端服务器宕机状态。
NFS服务不可以随意重启,如果要重启先要把客户端们上挂载的目录卸载下来(但是这种方法只限制于挂载的服务器少)
卸载方法(只适合少量机器)
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 96G 3.3G 93G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 25M 1.9G 2% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 197M 156M 42M 79% /boot
tmpfs 380M 0 380M 0% /run/user/0
192.168.1.3:/home/nfstestdir 40G 4.2G 36G 11% /mnt
卸载命令
[root@txc209 ~]# umount /mnt/ 如果报错,因为在挂载的目录中卸载,退出目录,卸载
[root@txc209 ~]# umount -l /mnt/ 无需退出目录就可以卸载 (-l懒汉模式)
最后回到服务端重启NFS服务
多台机器(exportfs加载)
服务端
[root
@localhost ~]# exportfs -arv (执行命令后直接生效配置文件 etc/exports)
exporting 192.168.1.2:/home/nfstestdir
新增配置
/home/nfstestdir 192.168.1.2(rw,sync,all_squash,anonuid=1000,anongid=1000)
/tmp 192.168.1.0/36(rw,sync,no_root_squash)
[root@localhost ~]# exportfs -arv
exporting 192.168.1.2:/home/nfstestdir
exporting 192.168.1.0/36:/tmp
客户端查看(无需重启NFS服务就生效)
[root@txc209 ~]# showmount -e 192.168.1.3
Export list for 192.168.1.3:
/home/nfstestdir 192.168.1.2
14.5 NFS客户端问题(centos6遇到比较多)
NFS 4版本会有该问题
客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody
客户端挂载时加上 -o nfsvers=3
客户端和服务端都需要
问题:客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody (虽然在配置文件中 /etc/exports定义了no_root_squash但是问题依然存在)
解决问题方法
第一种方法
客户端挂载时加上 -o nfsvers=3 (指定nfs版本为3版本)
新挂载时:
[root@localhost ~]# mount -t nfs -o nfsvers=3 192.168.1.3:/tmp /mnt
已经挂载了,先卸载然后再挂载:
[root@localhost ~]# umount /mnt
[root@localhost ~]# mount -t nfs -o nfsvers=3 192.168.1.3:/tmp /mnt (新挂载)
[root@localhost ~]# mount -t nfs -oremount,nfsvers=3 192.168.1.3:/tmp /mnt (已经挂载并且不想卸载后挂载步骤)
第二种方法
客户端和服务端都需要
客户端
[root@localhost ~]# vim /etc/idmapd.conf
重启rpcbind服务和rpcidmapd服务
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart rpcidmapd
服务端
[root@localhost ~]# vim /etc/idmapd.conf
重启rpcbind服务和rpcidmapd服务
[root@localhost ~]# systemctl restart rpcbind (centos7中只要重启rpcbind服务就可以)
[root@localhost ~]# systemctl restart rpcidmapd
15.1 FTP介绍
FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
小公司用的多,大企业不用FTP,因为不安全
大企业:自动化发布工具git(版本管理工具)(大企业会用git去管理网站程序的版本)
15.2/15.3 使用vsftpd搭建ftp
centos上默认自带vsftpd自带软件包
安装软件包
[root@localhost ~]# yum install -y vsftpd
(vsftpd软件包是可以使用系统级别的用户,比如创建普通用户a,并且设置密码,此时可以使用vsftpd启动服务,用a用户登录,只是登录的形式不是ssh,而是ftp,登录后是进入a用户家目录下,但是并不安全因为这个a用户还是可以登录操作系统,所以给这块设置一个虚拟用户,虚拟用户映射成操作系统中一个普通用户,也可以映射多个虚拟用户,但是这个虚拟用户是没有办法通过ssh登录操作系统)
创建普通用户,让虚拟用户映射,/sbin/nologin不能登录系统
[root@localhost ~]# useradd -s /sbin/nologin virftp
创建虚拟用户的密码文件 定义用户名密码 (奇数行为用户名 偶数行为密码)
[root@localhost ~]# vim /etc/vsftpd/vsftpd_login
user1(用户名)
test (密码)
user2(用户名)
test1 (密码)
权限设置(不让所有用户可以读,保障安全)
[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/
总用量 36
-rw------- 1 root root 125 10月 31 03:45 ftpusers
-rw------- 1 root root 361 10月 31 03:45 user_list
-rw------- 1 root root 5116 10月 31 03:45 vsftpd.conf
-rwxr--r-- 1 root root 338 10月 31 03:45 vsftpd_conf_migrate.sh
-rw------- 1 root root 23 1月 2 11:30 vsftpd_login
-rw-r--r-- 1 root root 12288 1月 2 11:33 vsftpd_login.db
创建虚拟用户配置文件所在目录
[root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@localhost ~]# cd !$
cd /etc/vsftpd/vsftpd_user_conf
创建第一个虚拟用户的配置文件
(创建时要和虚拟用户的名称一致)
[root@localhost 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
创建第二个虚拟用户的配置文件
[root@localhost vsftpd_user_conf]# vim user2
local_root=/home/virftp/user2
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
创建虚拟用户的家目录
[root@localhost vsftpd_user_conf]# mkdir /home/virftp/user1
[root@localhost vsftpd_user_conf]# mkdir /home/virftp/user2
修改权限(因为最后还是要映射成普通用户virftp)
[root@localhost vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
[root@localhost vsftpd_user_conf]# ls -l !$
ls -l /home/virftp
总用量 0
drwxr-xr-x 2 virftp virftp 6 1月 2 13:00 user1
drwxr-xr-x 2 virftp virftp 6 1月 2 13:00 user2
定义密码文件位置(自定义,/etc/pam.d/vsftpd告知系统密码文件在哪里,用来认证的文件,登陆ftp需要认证过程,告知通过什么形式去认证,认证时去哪里找密码库,用户密码做比对)
[root@localhost vsftpd_user_conf]# 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@localhost vsftpd_user_conf]# ls /lib64/security/pam_userdb.so
/lib64/security/pam_userdb.so
注: Centos6时区分版本32位和64位 32位是/lib/ 64位/lib64/
编辑vsftpd主配置文件
[root@localhost vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
修改参数
不允许匿名用户
![8281f380cc93120e2517bbdb7e77776a5ff.jpg](https://oscimg.oschina.net/oscnet/8281f380cc93120e2517bbdb7e77776a5ff.jpg)
![5aafe600fe7363408a00b928014346fd597.jpg](https://oscimg.oschina.net/oscnet/5aafe600fe7363408a00b928014346fd597.jpg)
不允许创建目录
![d8d16aedfb2d847dd4ea096606ca35ea8f0.jpg](https://oscimg.oschina.net/oscnet/d8d16aedfb2d847dd4ea096606ca35ea8f0.jpg)
增加参数
![d5a93063cc43b2d1dfa07b939241a77bb64.jpg](https://oscimg.oschina.net/oscnet/d5a93063cc43b2d1dfa07b939241a77bb64.jpg)
启动服务
[root@localhost vsftpd_user_conf]# systemctl start vsftpd
![00945144d8661e35c309faf3c8d4c35e3b2.jpg](https://oscimg.oschina.net/oscnet/00945144d8661e35c309faf3c8d4c35e3b2.jpg)
![7d32c2da7d64e13fa06c072628e8a83c424.jpg](https://oscimg.oschina.net/oscnet/7d32c2da7d64e13fa06c072628e8a83c424.jpg)
测试:
Windows的话安装 filezilla client(搭建ftp服务)和filezilla客户端(ftp开源免费的可以搭建服务)
Linux的话安装客户端lftp
测试另外一台服务器
[root@localhost ~]# yum install -y lftp
[root@localhost ~]#lftp txc@183.131.3.206
![5e80531c185065ecd081cd9abb56c2b69fd.jpg](https://oscimg.oschina.net/oscnet/5e80531c185065ecd081cd9abb56c2b69fd.jpg)
![d3762e6e6e2b6218e476bd9a564d22f289a.jpg](https://oscimg.oschina.net/oscnet/d3762e6e6e2b6218e476bd9a564d22f289a.jpg)
查看支持使用的命令
![c392264ca26190595b2896e843bf420fdcd.jpg](https://oscimg.oschina.net/oscnet/c392264ca26190595b2896e843bf420fdcd.jpg)
常用命令put、get
lftp txc@183.131.3.206:/> get txc.txt (下载到当前目录下)
![54ee65817e0319221e4bc6926683bbde071.jpg](https://oscimg.oschina.net/oscnet/54ee65817e0319221e4bc6926683bbde071.jpg)
lftp txc@183.131.3.206:~> put 1.txt (上传文件)
![2d273d58689b9ef513e67aa03e1a972c871.jpg](https://oscimg.oschina.net/oscnet/2d273d58689b9ef513e67aa03e1a972c871.jpg)