exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp
6月22日任务
14.4 exportfs命令
14.5 NFS客户端问题
15.1 FTP介绍
15.2/15.3 使用vsftpd搭建ftp
14.4 exportfs命令
当我们修改nfs的配置文件exports后,需要重新启动nfs服务才能让配置文件生效。但是很多情况下nfs的客户端还挂载着服务端的共享目录,如果重启就会影响客户端的使用。
如果把客户端卸载,再修改配置文件,再重启nfs,客户端再重新挂载,客户端很多的情况下,这样操作会很繁琐。
我们可以使用exportfs命令,可以不用卸载客户端和nfs服务不停止的情况下,重载配置文件。
在服务端操作,vi修改配置文件/etc/exports
[root@jimmylinux-001 ~]# vi /etc/exports
增加一行内容
/tmp 192.168.52.129(rw,sync,no_root_squash)
[root@jimmylinux-001 ~]# exportfs -arv
exporting 192.168.52.129:/tmp
exporting 192.168.52.0/24:/home/nfstestdir
客户端执行showmount,并没有重启nfs,同样也可以看到服务端共享的目录。
[root@jimmylinux-002 ~]# showmount -e 192.168.52.128
Export list for 192.168.52.128:
/home/nfstestdir 192.168.52.0/24
/tmp 192.168.52.129
客户端挂载tmp,这里看到的内容其实就是服务端tmp下面的内容。
服务端的tmp目录内容
另外,在客户端新建一个123.txt文件,查看到的文件属性和在服务端看到是一样的。
所有者和所属组都是root,这是因为在配置文件/etc/exports中加了no_root_squash(root用户不受约束)
14.5 NFS客户端问题
NFS4版本才会有这个问题,尤其是CentOS 6:客户端挂载共享目录后,不管是root用户还是系统普通用户,在共享目录里创建目录和文件时的属主和属组都是nobody。
遇到这样的问题有2种解决方案:
方案1、客户端挂载时加上 -o nfsvers=3 也就是说指定nfs版本为3,不在是nfs版本4。
[root@jimmylinux-002 ~]# mount -t nfs -o remount,nfsvers=3 192.168.52.128:/tmp/ /mnt/ -o重新挂载并指定nfs版本等于3
方案2、修改服务端和客户端的配置文件
vim /etc/idmapd.conf
把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com 可以自定义),然后再重启rpcidmapd服务。
15.1 FTP介绍
FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。小公司用的多,大企业不用FTP,因为不安全。
用rz和sz传文件,文件大小超过4G就会出现问题。
15.2/15.3 使用vsftpd搭建ftp
安装vsftpd
[root@jimmylinux-001 ~]# yum install -y vsftpd
vsftpd支持用linux系统用户登录,但是这样很不安全,容易暴露系统用户和密码。
创建一个普通用户,目的是为了让虚拟用户来做一个映射。
[root@jimmylinux-001 ~]# useradd -s /sbin/nologin virftp
-s用来指定它的shell,/sbin/nologin 表示一个用户不能够登录系统,这样做的目的是为了更安全。
创建虚拟用户的密码文件
[root@jimmylinux-001 ~]# vim /etc/vsftpd/vsftpd_login
添加以下内容,奇数行为用户名,偶数行为密码,多个用户就写多行。
testuser1
jimmylinux
user1
aaaaa11111
设置权限
[root@jimmylinux-001 ~]# chmod 600 /etc/vsftpd/vsftpd_login
把文本的密码文件转换成计算机能够识别的二进制的文件
[root@jimmylinux-001 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
创建虚拟用户配置文件所在的目录
[root@jimmylinux-001 ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@jimmylinux-001 ~]# cd !$
cd /etc/vsftpd/vsftpd_user_conf
[root@jimmylinux-001 vsftpd_user_conf]# vim testuser1
添加以下内容
local_root=/home/virftp/testuser1 定义虚拟用户的家目录
anonymous_enable=NO 是否允许匿名用户
write_enable=YES 是否可行
local_umask=022 umask的值
anon_upload_enable=NO 是否允许匿名用户可以上传
anon_mkdir_write_enable=NO 是否允许匿名用户可写,并创建目录。
idle_session_timeout=600 空闲连接超时时间,超过后需要重新登录
data_connection_timeout=120 数据传输的超时时间
max_clients=10 最大的客户端数量
创建虚拟用户的家目录
[root@jimmylinux-001 vsftpd_user_conf]# mkdir /home/virftp/testuser1
创建一个测试文件
[root@jimmylinux-001 vsftpd_user_conf]# touch /home/virftp/testuser1/jimmy.txt
修改权限,因为最终要映射成virftp用户,所以如果这个用户没有读的权限,就没有办法正常上传和下载。
[root@jimmylinux-001 vsftpd_user_conf]# chown -R virftp:virftp /home/virftp
定义密码文件存放路径
修改主配置文件 vim /etc/vsftpd/vsftpd.conf
[root@jimmylinux-001 vsftpd_user_conf]# 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 这个就是虚拟用户映射到的系统用户virftp
virtual_use_local_privs=YES 告诉这个服务现在使用的是虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf 定义虚拟用户配置文件所在路径
allow_writeable_chroot=YES
启动服务
查看监听的端口
21端口-->ftp
22端口-->sshd
23端口-->Telnet
服务启动完成后,下面就来测试一下。
如果使用Windows客户端测试,推荐大家使用filezilla 一款开源的免费软件,可以搭建服务(服务端),同样也有客户端版本。
为了测试方便,我们可以在Linux里面使用lftp。
安装lftp
[root@jimmylinux-001 ~]# yum install -y lftp
登录ftp
使用?可以查看所有支持的命令
在xshell中也有2种方法可以实现和ftp类似的功能:
方法一、在xshell中新建会话,协议写SFTP
方法二、下载一个xftp插件,在xshell中使用快捷键Ctrl+Alt+F,下载安装好就可以使用了。