8.27任务

14.4 exportfs命令

这个命令是和nfs-utils包一起安装的。

需求:设置好共享目录一段时间后,想去更改配置文件,增加机器,而远程客户端正在使用你的nfs服务,当你重启服务后,远程客户端会被挂起,这样势必就会造成影响。

e3fc8d20225e4faa3ed48a2541ade9c00f5.jpg

比如B机器读写频繁,这时候被A机器把服务重启,B机器上的用到sdb1的所有服务都会挂起(D状态),比如说php服务,这样php的其他服务也会不正常工作。

此时我们就需要exportfs命令重新加载配置文件而不重启。

选项:

  • -a 全部挂载或全部卸载
  • -r 重新挂载
  • -u 卸载一个目录
  • -v 显示共享目录

以下操作在服务端:

[root@localhost: ~]# vim /etc/exports
[root@localhost: ~]# cat /etc/exports
/home/nfstestdir 192.168.127.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
/tmp 192.168.127.102(rw,sync,no_root_squash)

此时客户端显示

[root@localhost: ~]# showmount -e 192.168.127.101
Export list for 192.168.127.101:
/home/nfstestdir 192.168.127.0/24

重新加载配置文件:

[root@localhost: ~]# exportfs -arv
exporting 192.168.127.102:/tmp
exporting 192.168.127.0/24:/home/nfstestdir

客户端显示

[root@localhost: ~]# showmount -e 192.168.127.101
Export list for 192.168.127.101:
/home/nfstestdir 192.168.127.0/24
/tmp             192.168.127.102

这时候创建一个文件

[root@localhost: ~]# mkdir /mnt/1
[root@localhost: ~]# mkdir /mnt/2
[root@localhost: ~]# mount -t nfs 192.168.127.101:/tmp /mnt/2
[root@localhost: ~]# mount -t nfs 192.168.127.101:/home/nfstestdir /mnt/1
[root@localhost: ~]# touch /mnt/2/test

在服务端上显示的就是root用户创建的。

[root@localhost: ~]# ll /tmp/test 
-rw-r--r-- 1 root root 0 Aug 29 18:57 /tmp/test

这就是no_root_squash选项的作用。


14.5 NFS客户端问题

在centos6的时候下NFS4版本偶尔会出现有问题,即使限制了no_root_squash或者anonuid/anongid,客户端文件属主数组nobody。

解决办法可以在挂载的时候转换版本为nfs3

[root@localhost: ~]# mount -t nfs -oremount,nfsvers=3 192.168.127.101:/home/nfstestdir /mnt/1
[root@localhost: ~]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
/dev/sda3                          16G   11G  5.4G  67% /
devtmpfs                          1.9G     0  1.9G   0% /dev
tmpfs                             1.9G     0  1.9G   0% /dev/shm
tmpfs                             1.9G  8.7M  1.9G   1% /run
tmpfs                             1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                         197M  157M   40M  80% /boot
tmpfs                             379M     0  379M   0% /run/user/0
192.168.127.101:/tmp               16G   11G  5.4G  67% /mnt/2
192.168.127.101:/home/nfstestdir   16G   11G  5.4G  67% /mnt/1

另一种解决方案是

在客户端和服务端都需要编辑一个配置文件/etc/idmapd.conf

#Domain = local.domain.edu

->

Domain = xxx.com

这里xxx.com随便定义,然后重启rpcidmapd服务或者rpcbind服务。

原因:rpcidmap默认使用nsswitch进行用户和组的解析,而nis并没有配置,导致解析失败。用户和组被映射到nobody用户和组上。


15.1 FTP介绍

之前介绍过使用xshell的rz/sz插件来传输数据,这种是有限制的,比如有跳板机,文件过大都会不方便,而ftp就是应用于这个场景。

FTP是File Transfer Protocol的简称,用户在Internet上控制文件的双向传输。

FTP的主要作用就是让用户连接一个远程计算机(这些计算机运行着FTP的服务器程序),并查看远程计算机的文件,然后把文件从远程计算机复制到本地计算机,或者把本地计算机的文件传送到远程计算机。

多是小公司或小团体或个人使用,大企业不用ftp,因为不安全。

大企业使用自动化发布工具,程序员想发布一个新的版本,更改了若干文件,会把更改后的文件放置到比如git上,版本管理器。

git用的肯定不是ftp,而是自动化发布平台,至于怎么实现,后期有机会介绍。


15.2/3 使用vsftpd搭建ftp

centos上默认带的ftp服务包教vsftpd

[root@localhost: ~]# yum install vsftpd -y

安装之后 创建一个用户,这个软件包是可以使用系统级别的用户的,你可以通过ftp服务登录到这个用户的家目录里,但是不安全,那就设置一个虚拟用户,用这个虚拟用户映射到系统的多个用户,即使你有了密码,你也不能访问这个机器,而只能操作这个用户的家目录。

当我使用ftp去传输文件,必然要涉及到一个用户,这也是我们创建新用户的目的。

[root@localhost: ~]# useradd -s /sbin/nologin virftp
[root@localhost: ~]# vim /etc/vsftpd/vsftpd_login         
[root@localhost: ~]# cat /etc/vsftpd/vsftpd_login 
testuser1
lhy001
testuser2
lhy002
[root@localhost: ~]# chmod 600 /etc/vsftpd/vsftpd_login

这个密码文件奇数行是用户名,偶数行是密码,设置600权限,不能被其他用户读取。

[root@localhost: ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/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]# 

配置文件名称要和用户名保持一致

[root@localhost: vsftpd_user_conf]# vim testuser1
[root@localhost: vsftpd_user_conf]# cat testuser1 
local_root=/home/virftp/testuser1
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

local_root就是这个虚拟用户的家目录。idle_session_timeout空闲超时时间是600s,数据传输超时时间120s,单位都是秒。

[root@localhost: vsftpd]# mkdir testuser1
[root@localhost: vsftpd]# touch testuser1/1.txt
[root@localhost: vsftpd]# chown -R virftp:virftp /home/virftp/

创建完家目录之后一定要改属主属组,否则会有读写问题。

[root@localhost: vsftpd]# vim /etc/pam.d/vsftpd 
[root@localhost: vsftpd]# cat /etc/pam.d/vsftpd 
#%PAM-1.0
auth 	   sufficient   /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account    sufficient   /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
session    optional     pam_keyinit.so    force revoke
auth       required	pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required	pam_shells.so
auth       include	password-auth
account    include	password-auth
session    required     pam_loginuid.so
session    include	password-auth

指定用户的密码路径。

[root@localhost: vsftpd]# ls /lib64/security/pam_userdb.so
/lib64/security/pam_userdb.so

这个是验证密码用的动态库,一定要存在才可以,路径不能写错。

之后我们再编辑一下主配置文件,

[root@localhost: vsftpd]# egrep '^[^#].*$'  /etc/vsftpd/vsftpd.conf 
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES


---------------------->


[root@localhost: vsftpd]# egrep '^[^#].*$'  /etc/vsftpd/vsftpd.conf 
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
chroot_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
[root@localhost: vsftpd]# netstat -lntp | grep vsftpd
tcp6       0      0 :::21                   :::*                    LISTEN      1752/vsftpd 

这样服务就启动完成了,监听的是21端口。

测试的话可以使用filezilla客户端,是一个开源的免费的软件,有客户端也有服务端,可以很方便的搭建服务。

这里我们简单起见,就用yum安装一个lftp的包。

[root@localhost: ~]# yum install lftp -y

测试的话直接连接本地

[root@localhost: ~]# lftp testuser1@127.0.0.1
Password: 
lftp testuser1@127.0.0.1:~> ls    
-rw-r--r--    1 0        0               0 Aug 30 03:46 1.txt

问号可以查看所有命令

lftp testuser1@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>

比较常用的就是get和put命令

lftp testuser1@127.0.0.1:/> get 1.txt 
lftp testuser1@127.0.0.1:/> quit

[root@localhost: ~]# ll 1.txt 
-rw-r--r-- 1 root root 0 Aug 30 11:46 1.txt

filezilla也可以很方便的测试。

a4db12e4bad90a281cb0d178525d3bfff7b.jpg

使用Xshell也可以使用ftp,

9c8670e0b30f8922c5391479f51ddba554b.jpg

新建一个会话,协议为sftp,端口就是ssh的端口。用户名密码输入root用户。

sftp:/root> ls
dr-xr-x---    8 root     root         4096 Aug 30 15:15 .
dr-xr-xr-x   18 root     root          257 Aug 24 14:09 ..
-rw-r--r--    1 root     root           18 Dec 29  2013 .bash_logout
-rw-r--r--    1 root     root          176 Dec 29  2013 .bash_profile
-rw-r--r--    1 root     root          100 Dec 29  2013 .cshrc
-rw-r--r--    1 root     root          129 Dec 29  2013 .tcshrc
-rw-------    1 root     root         1312 Jun 11 16:02 anaconda-ks.cfg
-rw-------    1 root     root          179 Jul 13 10:57 .lesshst
-rw-------    1 root     root        62725 Aug 29 22:58 .bash_history
-rw-r--r--    1 root     root      2494444 Aug 11  2017 zsh-5.0.2-28.el7.x86_64.rpm
-rw-r--r--    1 tcpdump  tcpdump      2400 Jul 12 11:58 1_rsync.cap
-rw-r--r--    1 root     root          404 Aug 24 14:21 .bashrc
-rw-------    1 root     root         1770 Aug 27 10:27 .mysql_history
drwxr-xr-x    3 root     root           19 Aug 30 15:00 .local
-rw-------    1 root     root         6709 Aug 30 15:01 .viminfo
-rw-r--r--    1 root     root            0 Aug 30 11:46 1.txt
-rw-r--r--    1 root     root          404 Jul 13 11:46 ifcfg-ens33
-rw-r--r--    1 root     root          408 Jul 12 15:30 ifcfg-ens33:0
drwx------    2 root     root           25 Jul 19 17:15 .ssh
-rw-r--r--    1 root     root        65632 Jul 19 17:15 telnet-0.17-64.el7.x86_64.rpm
-rw-r--r--    1 root     root            0 Jul 20 12:53 2.txt
-rw-------    1 root     root         1024 Jun 27 03:19 .rnd
drwxr-xr-x    3 root     root           18 Jun 27 03:20 .cache
drwxr-xr-x    4 root     root           30 Aug 30 15:00 .config
drwxr-----    3 root     root           19 Jun 27 04:03 .pki
drwxr-xr-x    2 root     root           36 Jul  6 19:51 awk
-rw-r--r--    1 root     root         3342 Jul 11 17:58 xxx

get的文件路径可以在会话设置中更改

0e90a0244a0c7902514f885f367be044575.jpg

sftp:/root> get ifcfg-ens33
Fetching /root/ifcfg-ens33 to ifcfg-ens33
sftp: received 404 bytes in 0.02 seconds

48316846f37c3c5344db8ec746e92659c3c.jpg

这样还只是命令行形式。可以下载xftp插件配合xshell使用。

Ctrl-Alt-F可以下载xftp下载页。

4af3386742f1e8d54f27ab6ec335b3d41b9.jpg

71b610a670ebbc3d88f3cd53251b6026365.jpg

 

转载于:https://my.oschina.net/u/3866688/blog/1936196

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值