十四周二次课(3月27日)

时间:2021-09-18 22:35:43

exportfs命令

  1. exportfs命令是和nfs-utils包一起安装的。
  2. 它的应用场景:当第一次配置了nfs的共享目录,之后需要增加机器或者共享的目录,就需要首先更改配置文件,然后再重启NFS服务,但是远程客户端正在使用NFS服务的情况下,如果这时要停止NFS服务,那么远程的服务端就会挂起。这样影响比较大。
  3. 假如 一台机器A开启了NFS服务,分享了某个目录,另一台机器B正在使用(读写)该目录,那么当A停掉NFS服务时,B机器还挂载这个共享目录,A机器的服务都停止了,那B机器挂载的共享目录是用不了的。如果此时B机器在共享目录中读写很频繁,那么一旦停止了A机器的NFS服务,B机器上的进程就会变成D(进程不能中断),即不正常了(不能杀死进程或者是重启服务)
  4. 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客户端问题

  1. NFS4版本会有该问题。并centos6上会出现该问题。
  2. 客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组都为nobody。

解决方案:

  1. 客户端挂载时加上-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介绍

  1. win与Linux相互的传文件,使用rz将win上的文件传到linux上,使用sz将linux上的文件传到win上,但是对于文件大小大于4G的文件时就无法使用,或者是使用阿里云的机器的时候,比如从一台机器调到另一台机器(中间有一个跳板机),这是使用rz或者sz传数据时也会出问题。这时就需要用到FTP服务了
  2. FTP是File Transfer Protocol(文件传输协议,简称“文传协议”)的英文简写形式,用于在因特网上控制文件的双向传输。它同时也是一个应用程序,用户可以把自己的PC机与世界各地所有运行FTP协议的服务器相连,以访问服务器上的大量程序和信息。
  3. 它可以让我们在Linux服务器上搭建FTP的服务,然后win上安装客户端软件,就可以连到服务端,把本地的文件传到服务器上去,或把服务器上的文件传到本地来。
  4. FTP方便传输数据,所以个人用户很多,但在企业里就用的很少了,因为FTP是有一定安全隐患的。大公司使用自动化发布工具。

使用vsftpd搭建ftp服务(上。下)

  1. centos上已经存在自带的FTP软件vsftpd,默认并没有安装,需要用yum安装,安装后不用配置,启动后就可以使用。
  2. 创建用户,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 328 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 328 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 83 2017 ftpusers -rw-------. 1 root root 361 83 2017 user_list -rw-------. 1 root root 5030 83 2017 vsftpd.conf -rwxr--r--. 1 root root 338 83 2017 vsftpd_conf_migrate.sh -rw-------. 1 root root 21 328 00:32 vsftpd_login -rw-r--r--. 1 root root 12288 328 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 328 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 328 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

  1. xshell也可以实现与FTP类似的功能。
    2种方案:
    (1)在新建会话时,协议选择SFTP,填写服务端的IP地址,端口不用修改,保存后去登录,输入root与密码即可(默认在root下),get一个文件可以设置保存的路径
    十四周二次课(3月27日)
    默认是传到桌面上,这种命令行来讲不太直观
    (2)使用XFTP,需要安装插件(ctrl+alt+f )
    十四周二次课(3月27日)
    在弹出的界面下载XFTP插件,然后安装使用。