14.4 exportfs命令
14.5 NFS客户端问题
15.1 FTP介绍
15.2/15.3 使用vsftpd搭建ftp
14.4 exportfs命令
exportfs
是在安装了nfs-util
包时候同时安装的。当服务器由于业务原因需要更改共享目录或者添加共享目录,NFS的服务端就需要先更改配置文件并重启NFS服务,此时NFS的客户端挂载了共享目录由于重启NFS服务而导致进程挂起,最终导致进程错误。因此要重启NFS服务需要提前把所有客户端上的挂载点给卸载。为了简单化此步骤,就可以在服务端上使用exportfs命令来统一把客户端给重新挂载共享目录。
参数 | 含义 |
---|---|
-a | 全部挂载或者全部卸载 |
-r | 重新挂载 |
-u | 卸载某一个目录 |
-v | 显示共享目录 |
在NFS服务端上编辑配置文件
1 | [root@localhost ~]# vim /etc/exports |
添加多一个共享目录/tmp
并指定共享IP192.168.80.100
和使用权限 no_root_squash
表示客服端上的root没有限制1
2
3[root@localhost ~]# exportfs -arv
exporting 192.168.80.100:/tmp
exporting 192.168.80.0/24:/home/nfsdir
在NFS客户端上查看共享目录
1 | [root@kun0769 ~]# showmount -e 192.168.80.102 |
可以发型多了/tmp目录
挂载/tmp并创建测试文件
1 | [root@kun0769 ~]# umount -l /mnt/ |
在服务端查看测试文件1
2[root@localhost ~]# ll /tmp/
-rw-r--r--. 1 root root 0 6月 21 22:30 hello.txt
可以看到hello.txt的属组是root用户 说明了客服端上root并没有被限制
14.5 NFS客户端问题
在CentOS6系统上并且使用NFS4版本时候,会出现客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody,即使你设置了权限为no_root_suquash,也是nobody。解决方法有两种:
第一种方法
在客户端上使用指定NFS3版本1
2[root@kun0769 ~]# umount -l /mnt/
[root@kun0769 ~]# mount -t nfs -o nfsvers=3 192.168.80.102:/home/nfsdir /mnt/
或者重新挂载并指定版本1
[root@kun0769 ~]# mount -t nfs -oremount,nfsvers=3 192.168.80.102:/home/nfsdir /mnt/
第二种方法
在服务端和客户端👆分别编辑/etc/idmapd.conf
并更改 #Domain = local.domain.edu
1
2
3[root@kun0769 ~]# vim /etc/idmapd.conf
Domain = kun.com ##kun.com这个域名随便定义
重启rpcidmapd服务
1 | [root@kun0769 ~]# systemctl restart rpcidmapd |
15.1 FTP介绍
FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
小公司用的多,大企业不用FTP,因为不安全。一般大企业需要更新网站的版本的时候会使用自动化发布工具,git就是版本管理工具,可以管理网站程序的版本,这样既可以规范网站程序,而且也比较安全。
15.2/15.3 使用vsftpd搭建ftp服务
步骤
1.安装vsftpd软件包
1 | [root@localhost ~]# yum install -y vsftpd |
2.添加系统用户virftp
1 | [root@localhost ~]# useradd -s /sbin/nologin virftp |
由于vsftpd是可以让系统的用户使用密码登录的 而且使用的ftp协议登录,这样非常不安全,因此可以先建立系统用户virfttp,让虚拟用户再映射到此用户上来登录ftp服务器,这样即使给了用户名和密码,也是虚拟用户的,并不是原本服务器上的系统用户,也就登录不上服务器了。
3.编译虚拟用户的密码文件
1 | [root@localhost ~]# vim /etc/vsftpd/vsftpd_login |
/etc/vsftpd/vsftpd_login
文件系统默认是没有,自行建立
编辑以下内容 其中单行是用户名
双行是密码
1
2
3
4kun1
38003800
kun2
38003800
4.虚拟用户的密码文件的权限
1 | [root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login |
5.把虚拟用户的密码文件转为了二进制文件
1 | [root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db |
db_load
生成数据库文件 -T
允许应用程序能够将文本文件转译载入进数据库 -t
指定数据类型 -f
指定虚拟用户的密码文件
5.创建并进入虚拟用户的配置文件所有的目录
1 | [root@localhost ~]# mkdir /etc/vsftpd/vsftpd_user_conf |
/etc/vsftpd/vsftpd_user_conf
是用来存放虚拟用户的的配置文件的目录,我们会在vsftpd的主配置文件中引用他
6.创建虚拟用户的配置文件
下面是虚拟用户kun1的配置文件 文件名必须和用户一致1
[root@localhost vsftpd_user_conf]# vim kun1
编辑以下配置1
2
3
4
5
6
7
8
9local_root=/home/virftp/kun1
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
继续创建并编辑kun2用户的配置文件1
[root@localhost vsftpd_user_conf]# vim kun2
1 | local_root=/home/virftp/kun2 |
参数 | 含义 |
---|---|
local_root | 虚拟用户的家目录 |
anonymous_enable | 是否允许匿名用户 |
write_enable | 是否允许写入权限 |
local_umask | 创建文件默认的的umask码 |
anon_upload_enable | 是否允许匿名用户上次 |
anon_mkdir_write_enable | 是否允许匿名用户创建目录和写入 |
idle_session_timeout | 指定空闲时间 |
data_connection_timeout | 指定传输数据的时间 |
max_clients | 最大的客户端数 |
7.创建虚拟用户的家目录和设置属组
1 | [root@localhost vsftpd_user_conf]# mkdir /home/virftp/kun1 |
8.定义虚拟用户的密码文件的路径
1 | [root@localhost vsftpd_user_conf]# vim /etc/pam.d/vsftpd |
在上面添加两行1
2auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginauth
/etc/pam.d/vsftpd
是vsftp登录认证的文件 CentOS6 32位
指定路径是/lib
目录 否则报错
9.设置vsftp主配置文件
1 | [root@localhost vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf |
修改下面参数1
2
3
4
5anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
在文件末尾添加下面配置1
2
3
4
5
6chroot_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
user_config_dir
指定虚拟用户的配置文件路径 virtual_use_local_privs
开启虚拟用户 guest_username
指定映射的系统用户
10.启动vsftpd服务
1 | [root@localhost vsftpd_user_conf]# systemctl start vsftpd |
1 | [root@localhost vsftpd_user_conf]# netstat -lntp |
ftp
监听21
端口 ssh
监听22
端口 telnet
监听23
端口
测试
在win上使用filezilla客户端软件
在Linux上使用lftp软件1
2
3
4
5
6[root@localhost vsftpd_user_conf]# yum install -y lftp
[root@localhost vsftpd_user_conf]# lftp kun1@127.0.0.1 ##使用虚拟用户kun1登录
口令:
lftp kun1@127.0.0.1:~> ls
-rw-r--r-- 1 0 0 0 Jun 22 14:11 test.txt 可以看到test.txt的测试目录
get
下载文件 put
上传文件 可以使用?
来查询更多命令