exportfs命令
- exportfs命令是和nfs-utils包一起安装的。
- 它的应用场景:当第一次配置了nfs的共享目录,之后需要增加机器或者共享的目录,就需要首先更改配置文件,然后再重启NFS服务,但是远程客户端正在使用NFS服务的情况下,如果这时要停止NFS服务,那么远程的服务端就会挂起。这样影响比较大。
- 假如 一台机器A开启了NFS服务,分享了某个目录,另一台机器B正在使用(读写)该目录,那么当A停掉NFS服务时,B机器还挂载这个共享目录,A机器的服务都停止了,那B机器挂载的共享目录是用不了的。如果此时B机器在共享目录中读写很频繁,那么一旦停止了A机器的NFS服务,B机器上的进程就会变成D(进程不能中断),即不正常了(不能杀死进程或者是重启服务)
- NFS不能随便重启,如需要重启就必须将客户端上挂载的该目录卸载后才能重启。
umount /mnt/ //卸载时不能在此挂载点下
umount -l /mnt/ //卸载时在不在此挂载点下都无影响。
5 . 当挂载了很多机器时,一台一台去卸载很显得很繁琐,这时就可以使用exportfs命令来重新加载。
常用选项:
-a 全部挂载或全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录
exportfs -arv //让配置文件重新生效。
6.测试在/etc/exports中新建一个共享目录/tmp 192.168.202.132(rw,sync,no_root_squash)
然后执行exportfs -arv 。
[root@spring ~]# exportfs -arv
exporting 192.168.244.132:/tmp
exporting 192.168.244.0/24:/home/nfstestdir
[root@spring ~]#
在客户端查看是否生效
[root@chunt ~]# !show
showmount -e 192.168.244.131
Export list for 192.168.244.131:
/home/nfstestdir 192.168.244.0/24
/tmp 192.168.244.132
[root@chunt ~]#
这样就能不重启NFS服务来新增机器或者共享目录。服务端查看。
[root@chunt ~]# mount -t nfs 192.168.244.131:/tmp/ /mnt/
[root@chunt ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 18G 3.6G 15G 21% /
devtmpfs 479M 0 479M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 97M 100M 50% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.244.131:/tmp 16G 6.8G 9.1G 43% /mnt
[root@chunt ~]#
NFS客户端问题
- NFS4版本会有该问题。并centos6上会出现该问题。
- 客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组都为nobody。
解决方案:
- 客户端挂载时加上-o nfsvers=3(表示指定NFS的版本为3版本)
mount -t nfs -oremount,nfsvers=3 192.168.244.131:/tmp/ /mnt/ //指定NFS版本并重新挂载。
2.编辑/etc/idmapd.conf ,将#Domain = local.domain.edu
后面改为xxx.com (自定义),然后再重启rpcidmapd服务(在centos7中并没有该服务,那么就重启rpcbind服务)。
FTP介绍
- win与Linux相互的传文件,使用rz将win上的文件传到linux上,使用sz将linux上的文件传到win上,但是对于文件大小大于4G的文件时就无法使用,或者是使用阿里云的机器的时候,比如从一台机器调到另一台机器(中间有一个跳板机),这是使用rz或者sz传数据时也会出问题。这时就需要用到FTP服务了
- FTP是File Transfer Protocol(文件传输协议,简称“文传协议”)的英文简写形式,用于在因特网上控制文件的双向传输。它同时也是一个应用程序,用户可以把自己的PC机与世界各地所有运行FTP协议的服务器相连,以访问服务器上的大量程序和信息。
- 它可以让我们在Linux服务器上搭建FTP的服务,然后win上安装客户端软件,就可以连到服务端,把本地的文件传到服务器上去,或把服务器上的文件传到本地来。
- FTP方便传输数据,所以个人用户很多,但在企业里就用的很少了,因为FTP是有一定安全隐患的。大公司使用自动化发布工具。
使用vsftpd搭建ftp服务(上。下)
- centos上已经存在自带的FTP软件vsftpd,默认并没有安装,需要用yum安装,安装后不用配置,启动后就可以使用。
- 创建用户,vsftpd这个软件包是可以使用系统级别的用户,但这样不太安全,所以建议使用虚拟用户体系登录。虚拟用户映射成系统中的一个普通用户或者多个用户。当然这个用户不能通过SSH去登录这台服务器的。
[root@spring ~]# useradd -s /sbin/nologin chunyangz//该用户不能登录系统
[root@spring ~]# cat /etc/passwd |grep dell
dell:x:1002:1002::/home/dell:/sbin/nologin
[root@spring ~]#
3 .编辑虚拟用户的密码文件/etc/vsftpd/vsftpd_login,在其中定义用户名以及密码。该文件的奇数行为用户名,偶数行为上一行的密码
4 . 更改该文件的权限,提升安全级别
[root@spring ~]# ls -l !$
ls -l /etc/vsftpd/vsftpd_login
-rw-r--r--. 1 root root 21 3月 28 00:32 /etc/vsftpd/vsftpd_login
[root@spring ~]# chmod 600 /etc/vsftpd/vsftpd_login
[root@spring ~]# ls -l /etc/vsftpd/vsftpd_login
-rw-------. 1 root root 21 3月 28 00:32 /etc/vsftpd/vsftpd_login
[root@spring ~]#
5 . 将文本的密码文件转换为计算机识别的二进制文件(vsftpd使用的密码文件不是明文的,需要生成对应的库文件)。
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
执行完成后会在/etc/vsftpd下生成一个vsftpd.db的文件,不能使用cat查看里面的内容
[root@spring ~]# ls -l !$
ls -l /etc/vsftpd/
总用量 32
-rw-------. 1 root root 125 8月 3 2017 ftpusers
-rw-------. 1 root root 361 8月 3 2017 user_list
-rw-------. 1 root root 5030 8月 3 2017 vsftpd.conf
-rwxr--r--. 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh
-rw-------. 1 root root 21 3月 28 00:32 vsftpd_login
-rw-r--r--. 1 root root 12288 3月 28 00:39 vsftpd_login.db
6 . 创建虚拟用户的目录以及配置文件
mkdir /etc/vsftpd/vsftpd_user_conf
进入到该目录中去创建chunyangz的配置文件,并写入以下内容
local_root=/home/virftp/chunyangz /定义虚拟用户的家目录
anonymous_enable=NO /用来限制是否允许匿名账户登录(no表示不允许)
write_enable=YES /表示可写
local_umask=022 /指定umask的值
anon_upload_enable=NO /不允许匿名用户上传文件
anon_mkdir_write_enable=NO /不允许匿名用户可写
idle_session_timeout=600 /指定空闲连接超过600秒就会断开连接。
data_connection_timeout=120 /数据传输的超额时间
max_clients=10 /最大的客户端是10
7 . 创建虚拟用户的家目录,并创建一个文件
[root@spring vsftpd_user_conf]# mkdir /home/dell/chunyangz
[root@spring vsftpd_user_conf]# touch /home/dell/chunyangz/zhangjie.txt
[root@spring vsftpd_user_conf]#
修改权限,
[root@spring vsftpd_user_conf]# ls -l /home/dell/
总用量 0
drwxr-xr-x. 2 root root 26 3月 28 01:02 chunyangz
[root@spring vsftpd_user_conf]# chown -R dell:dell /home/dell
[root@spring vsftpd_user_conf]#
[root@spring vsftpd_user_conf]# ls -l /home/dell/
总用量 0
drwxr-xr-x. 2 dell dell 26 3月 28 01:02 chunyangz
[root@spring vsftpd_user_conf]#
8 .定义密码文件的位置, 在/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)
9 . 再编辑vsftpd的主配置文件/etc/vsftpd/vsftpd.conf。
将anonymous_enable=YES改为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=dell /虚拟用户映射到系统用户
virtual_use_local_privs=YES //告诉系统现在使用虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf /定义虚拟用户配置文件所在路径
allow_writeable_chroot=YES
10 启动服务并查看进程
[root@spring vsftpd_user_conf]# systemctl start vsftpd
[root@spring vsftpd_user_conf]# ps aux |grep vsftpd
root 1800 0.0 0.0 53212 576 ? Ss 01:25 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root 1802 0.0 0.0 112676 980 pts/0 S+ 01:25 0:00 grep --color=auto vsftpd
[root@spring vsftpd_user_conf]#
vsftpd(FTP)服务监听21端口。
测试
1.服务启动后,在Windows上安装FTP的客户端软件(filezilla ),方便测试在Linux上安装lftpbao yum install -y lftp
2. lftp命令的使用
[root@spring ~]# lftp chunyangz@127.0.0.1
口令:
lftp chunyangz@127.0.0.1:~> ls
-rw-r--r-- 1 1002 1002 0 Mar 27 17:02 zhangjie.txt
lftp chunyangz@127.0.0.1:/> ?
!<shell-command> (commands) alias [<name> [<value>]] attach [PID]
bookmark [SUBCMD] cache [SUBCMD] cat [-b] <files> cd <rdir>
chmod [OPTS] mode file... close [-a] [re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>]
du [options] <dirs> exit [<code>|bg] get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args>
help [<cmd>] history -w file|-r file|-c|-l [cnt] jobs [-v] [<job_no...>] kill all|<job_no>
lcd <ldir> lftp [OPTS] <site> ln [-s] <file1> <file2> ls [<args>]
mget [OPTS] <files> mirror [OPTS] [remote [local]] mkdir [-p] <dirs> module name [args]
more <files> mput [OPTS] <files> mrm <files> mv <file1> <file2>
[re]nlist [<args>] open [OPTS] <site> pget [OPTS] <rfile> [-o <lfile>] put [OPTS] <lfile> [-o <rfile>]
pwd [-p] queue [OPTS] [<cmd>] quote <cmd> repeat [OPTS] [delay] [command]
rm [-r] [-f] <files> rmdir [-f] <dirs> scache [<session_no>] set [OPT] [<var> [<val>]]
site <site-cmd> source <file> torrent [-O <dir>] <file|URL>... user <user|URL> [<pass>]
wait [<jobno>] zcat <files> zmore <files>
lftp chunyangz@127.0.0.1:/>
?号查看支持的命令。get下来的文件会放到当前目录下。退出使用quit
- xshell也可以实现与FTP类似的功能。
2种方案:
(1)在新建会话时,协议选择SFTP,填写服务端的IP地址,端口不用修改,保存后去登录,输入root与密码即可(默认在root下),get一个文件可以设置保存的路径
默认是传到桌面上,这种命令行来讲不太直观
(2)使用XFTP,需要安装插件(ctrl+alt+f )
在弹出的界面下载XFTP插件,然后安装使用。