linux一些小点-tar压缩、删除含有特殊字符文件、文件统计、批量下载指定目录、批量文本替换、vim小功能点以及OpenSSH的sshd_config服务配置详解

一、linux一些小点tar压缩-删除含有特殊字符文件-文件统计-批量下载指定目录

1:tar压缩打包exclude的使用注意事项:

        tar压缩打包exclude的使用注意事项,exclude必须写到压缩的文档后面,

#错误方式:
[root@**** html]# tar -czvf  --exclude=qievideo test.tar.gz url_dir
#正确方式:
[root@**** html]# tar -czvf  test.tar.gz  test --exclude=test/*.sisx  --exclude=test/*.apk --exclude=test/temp/* --exclude=test/*.sis

2:删除含有特殊字符的文件

        在上面的执行中不小心写错了顺序,导致生成了带人-符号的文件,例如文件名称为--exclude=qievideo,要删除这种文件,直接用rm的方法不可行。因为--会被认为是rm的选项参数。

[online@BER-449 test]$ sudo rm -f --exclude=qievideo
rm: unrecognized option '--exclude=qievideo'
Try `rm ./'--exclude=qievideo'' to remove the file `--exclude=qievideo'.
Try `rm --help' for more information.

 可以看到执行失败,并且命令行里已经给了可以尝试的操作提示:Try rm ./'--exclude=qievideo',针对这种情况可以有两个方法删除

        A,就是提示的方法:不过可以有以下三种方式:

[online@BER-449 test]$ sudo rm ./'--exclude=qievideo'
[online@BER-449 test]$ sudo rm ./--exclude=qievideo
[online@BER-449 test]$ sudo rm -- --exclude=qievideo

        B,通过文件的inode号来删除文件

        通过文件的inode号来删除文件,使用ll -i查看该文件的inode号,第一列就是inode号码。然后使用find的-exec方法删除

find ./ -inum 查到的inode号 -exec rm '{}' \;

3:文件夹下文件、目录、递归的统计

#1,统计某文件夹下递归所有文件的个数命令,
ls -l |grep "^-"|wc -l
#2,统计某文件夹下目录的个数
ls -l |grep "^d"|wc -l
#统计文件夹下文件的个数,包括子文件夹里的  
ls -lR|grep "^-"|wc -l

        以前也用过这种统计,不过好像没去理解它的原理,今天看了一下,统计是用ls结果第一行的文件属性特征来统计的,比如以-开头的就是文件,以d开头的就是目录。

4:批量下载文件,

        从下载地址上提取目录结构并按此目录结构存放下载的文件,例如有一个URL地址文件如下:

http://007.cn/qiezi/170112/1ecf1a83575b746694b7ea4f875c163e/strea.tsdata
http://007.cn/qiezi/170112/1ecf1a83575b746694b7ea4f875c163e/strea.tsdata
http://007.cn/qiezi/170112/1ecf1a83575b746694b7ea4f875c163e/strea.tsdata
http://007.cn/qiezi/170112/1ecf1a83575b746694b7ea4f875c163e/strea.tsdata

批量下载按URL目录存放的shell代码如下:

#!/bin/bash
#linge@007.cn
#note:批量下载按URL目录存放

filename=url.txt
dirn=$[ $1 % 4 ]
cat $filename| while read LINE
do
    dirtemp=$(echo "$LINE" | cut -d'/' -f4-6)
    dirval="download"$dirn/$dirtemp
    mkdir -p $dirval
        echo $LINE
        echo $dirval
    #例如指定存储目录:download0/qiezi/170112/1ecf1a83575b746694b7ea4f875c163e
    a=$(mwget "$LINE" -d $dirval)
        echo '------------------------------------'
done

 其中shell下的字符串连接${var}otherchar,和php的有点相似,但是就是容易忘。

二、linux批量文本文件内容替换功能以及vim的一些小功能点

1,linux下批量进行文件替换使用sed命令:

#命令格式如下:
#sed -i "s/oldstring/newstring/g" `grep oldstring -rl dir`
#命令示例如下:
[root@123 ~]# grep -R 'abcdefg' ./* --color
./z1.txt:abcdefg
./z2.txt:abcdefg
[root@123 ~]# grep -lR abcdefg ./* --color
./z1.txt
./z2.txt
[root@123 ~]# cat z1.txt 
aaaa
bbbb
abcdefg
123456
aaabbbccc
[root@123 ~]# cat z2.txt 
aaaa123
bbbbtest
abcdefg
1234567890
aaabbbccc
[root@123 ~]# sed -i 's/abcdefg/--hello--/g' `grep -lR abcdefg ./*`
[root@123 ~]# cat z1.txt 
aaaa
bbbb
--hello--
123456
aaabbbccc
[root@123 ~]# cat z2.txt 
aaaa123
bbbbtest
--hello--
1234567890
aaabbbccc
[root@123 ~]# 

2,vim查找时的一小功能

        /和?的是常用的查找方式,默认输入即为全词匹配,即只要找到这几个字符就显示出来,有以下几种小功能,

#“\>” 是一个特殊的记号,表示只匹配单词末尾。类似地,”\<” 只匹配单词的开头。如下
/findkeychar\>
#要匹配一个完整的的关键词,可用:
/\< findkeychar\>
#是否区分大小写的设定,默认区分大小写
#忽略大小写
:set ignorecase
#可简写为
:set ic
#区分大小写
:set noignorecase 
#可简写为
:set noic

3,vim下查找后的高亮显示如何取消

        vim下使用/以及?向下和向上查找字符是常用的事,但到用的时候总是忘记查找后的高亮如何取消,再记录一下:使用大小写n进行切换找到目标后,如果要取消高亮在末行使用下面的命令即可:

:noh

上面是缩写,其全拼为

:set nohlsearch

三、OpenSSH的sshd_config服务器配置文件各配置详细介绍

         配置文件:/etc/ssh/sshd_config    publish:September 25, 2018 -Tuesday  此内容应该大部分为我以前从某个地方复制进行了修改,如作者有意见,请联系我删除。

sshd(8) 默认从 /etc/ssh/sshd_config 文件(或通过 -f 命令行选项指定的文件)读取配置信息。
配置文件是由"指令 值"对组成的,每行一个。空行和以'#'开头的行都将被忽略。
如果值中含有空白符或者其他特殊符号,那么可以通过在两边加上双引号(")进行界定。
[注意]值是大小写敏感的,但指令是大小写无关的。
当前所有可以使用的配置指令如下:
AcceptEnv
        指定客户端发送的哪些环境变量将会被传递到会话环境中。[注意]只有SSH-2协议支持环境变量的传递。
        细节可以参考 ssh_config(5) 中的 SendEnv 配置指令。
        指令的值是空格分隔的变量名列表(其中可以使用'*'和'?'作为通配符)。也可以使用多个 AcceptEnv 达到同样的目的。
        需要注意的是,有些环境变量可能会被用于绕过禁止用户使用的环境变量。由于这个原因,该指令应当小心使用。
        默认是不传递任何环境变量。
AddressFamily
        指定 sshd(8) 应当使用哪种地址族。取值范围是:"any"(默认)、"inet"(仅IPv4)、"inet6"(仅IPv6)。
AllowGroups
        这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。
        如果使用了这个指令,那么将仅允许这些组中的成员登录,而拒绝其它所有组。
        这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。
        这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:
        DenyUsers, AllowUsers, DenyGroups, AllowGroups
AllowTcpForwarding
        是否允许TCP转发,默认值为"yes"。
        禁止TCP转发并不能增强安全性,除非禁止了用户对shell的访问,因为用户可以安装他们自己的转发器。
AllowUsers
        这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。
        如果使用了这个指令,那么将仅允许这些用户登录,而拒绝其它所有用户。
        如果指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。
        这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:
        DenyUsers, AllowUsers, DenyGroups, AllowGroups
AuthorizedKeysFile
        存放该用户可以用来登录的 RSA/DSA 公钥。
        该指令中可以使用下列根据连接时的实际情况进行展开的符号:
        %% 表示'%'、%h 表示用户的主目录、%u 表示该用户的用户名。
        经过扩展之后的值必须要么是绝对路径,要么是相对于用户主目录的相对路径。
        默认值是".ssh/authorized_keys"。
Banner
        将这个指令指定的文件中的内容在用户进行认证前显示给远程用户。
        这个特性仅能用于SSH-2,默认什么内容也不显示。"none"表示禁用这个特性。
ChallengeResponseAuthentication
        是否允许质疑-应答(challenge-response)认证。默认值是"yes"。
        所有 login.conf(5) 中允许的认证方式都被支持。
Ciphers
        指定SSH-2允许使用的加密算法。多个算法之间使用逗号分隔。可以使用的算法如下:
        "aes128-cbc", "aes192-cbc", "aes256-cbc", "aes128-ctr", "aes192-ctr", "aes256-ctr",
        "3des-cbc", "arcfour128", "arcfour256", "arcfour", "blowfish-cbc", "cast128-cbc"
        默认值是可以使用上述所有算法。
ClientAliveCountMax
        sshd(8) 在未收到任何客户端回应前最多允许发送多少个"alive"消息。默认值是 3 。
        到达这个上限后,sshd(8) 将强制断开连接、关闭会话。
        需要注意的是,"alive"消息与 TCPKeepAlive 有很大差异。
        "alive"消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。
        如果 ClientAliveInterval 被设为 15 并且将 ClientAliveCountMax 保持为默认值,
        那么无应答的客户端大约会在45秒后被强制断开。这个指令仅可以用于SSH-2协议。
ClientAliveInterval
        设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,
        sshd(8) 将通过安全通道向客户端发送一个"alive"消息,并等候应答。
        默认值 0 表示不发送"alive"消息。这个选项仅对SSH-2有效。
Compression
        是否对通信数据进行加密,还是延迟到认证成功之后再对通信数据加密。
        可用值:"yes", "delayed"(默认), "no"。
DenyGroups
        这个指令后面跟着一串用空格分隔的组名列表(其中可以使用"*"和"?"通配符)。默认允许所有组登录。
        如果使用了这个指令,那么这些组中的成员将被拒绝登录。
        这里的"组"是指"主组"(primary group),也就是/etc/passwd文件中指定的组。
        这里只允许使用组的名字而不允许使用GID。相关的 allow/deny 指令按照下列顺序处理:
        DenyUsers, AllowUsers, DenyGroups, AllowGroups
DenyUsers
        这个指令后面跟着一串用空格分隔的用户名列表(其中可以使用"*"和"?"通配符)。默认允许所有用户登录。
        如果使用了这个指令,那么这些用户将被拒绝登录。
        如果指定了 USER@HOST 模式的用户,那么 USER 和 HOST 将同时被检查。
        这里只允许使用用户的名字而不允许使用UID。相关的 allow/deny 指令按照下列顺序处理:
        DenyUsers, AllowUsers, DenyGroups, AllowGroups
ForceCommand
        强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录shell执行(shell -c)。
        这可以应用于 shell 、命令、子系统的完成,通常用于 Match 块中。
        这个命令最初是在客户端通过 SSH_ORIGINAL_COMMAND 环境变量来支持的。
GatewayPorts
        是否允许远程主机连接本地的转发端口。默认值是"no"。
        sshd(8) 默认将远程端口转发绑定到loopback地址。这样将阻止其它远程主机连接到转发端口。
        GatewayPorts 指令可以让 sshd 将远程端口转发绑定到非loopback地址,这样就可以允许远程主机连接了。
        "no"表示仅允许本地连接,"yes"表示强制将远程端口转发绑定到统配地址(wildcard address),
        "clientspecified"表示允许客户端选择将远程端口转发绑定到哪个地址。
GSSAPIAuthentication
        是否允许使用基于 GSSAPI 的用户认证。默认值为"no"。仅用于SSH-2。
GSSAPICleanupCredentials
        是否在用户退出登录后自动销毁用户凭证缓存。默认值是"yes"。仅用于SSH-2。
HostbasedAuthentication
        这个指令与 RhostsRSAAuthentication 类似,但是仅可以用于SSH-2。推荐使用默认值"no"。
        推荐使用默认值"no"禁止这种不安全的认证方式。
HostbasedUsesNameFromPacketOnly
        在开启 HostbasedAuthentication 的情况下,
        指定服务器在使用 ~/.shosts ~/.rhosts /etc/hosts.equiv 进行远程主机名匹配时,是否进行反向域名查询。
        "yes"表示 sshd(8) 信任客户端提供的主机名而不进行反向查询。默认值是"no"。
HostKey
        主机私钥文件的位置。如果权限不对,sshd(8) 可能会拒绝启动。
        SSH-1默认是 /etc/ssh/ssh_host_key 。
        SSH-2默认是 /etc/ssh/ssh_host_rsa_key 和 /etc/ssh/ssh_host_dsa_key 。
        一台主机可以拥有多个不同的私钥。"rsa1"仅用于SSH-1,"dsa"和"rsa"仅用于SSH-2。
IgnoreRhosts
        是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略 .rhosts 和 .shosts 文件。
        不过 /etc/hosts.equiv 和 /etc/shosts.equiv 仍将被使用。推荐设为默认值"yes"。
IgnoreUserKnownHosts
        是否在 RhostsRSAAuthentication 或 HostbasedAuthentication 过程中忽略用户的 ~/.ssh/known_hosts 文件。
        默认值是"no"。为了提高安全性,可以设为"yes"。
KerberosAuthentication
        是否要求用户为 PasswordAuthentication 提供的密码必须通过 Kerberos KDC 认证,也就是是否使用Kerberos认证。
        要使用Kerberos认证,服务器需要一个可以校验 KDC identity 的 Kerberos servtab 。默认值是"no"。
KerberosGetAFSToken
        如果使用了 AFS 并且该用户有一个 Kerberos 5 TGT,那么开启该指令后,
        将会在访问用户的家目录前尝试获取一个 AFS token 。默认为"no"。
KerberosOrLocalPasswd
        如果 Kerberos 密码认证失败,那么该密码还将要通过其它的认证机制(比如 /etc/passwd)。
        默认值为"yes"。
KerberosTicketCleanup
        是否在用户退出登录后自动销毁用户的 ticket 。默认值是"yes"。
KeyRegenerationInterval
        在SSH-1协议下,短命的服务器密钥将以此指令设置的时间为周期(秒),不断重新生成。
        这个机制可以尽量减小密钥丢失或者黑客攻击造成的损失。
        设为 0 表示永不重新生成,默认为 3600(秒)。
ListenAddress
        指定 sshd(8) 监听的网络地址,默认监听所有地址。可以使用下面的格式:
              ListenAddress host|IPv4_addr|IPv6_addr
              ListenAddress host|IPv4_addr:port
              ListenAddress [host|IPv6_addr]:port
        如果未指定 port ,那么将使用 Port 指令的值。
        可以使用多个 ListenAddress 指令监听多个地址。
LoginGraceTime
        限制用户必须在指定的时限内认证成功,0 表示无限制。默认值是 120 秒。
LogLevel
        指定 sshd(8) 的日志等级(详细程度)。可用值如下:
        QUIET, FATAL, ERROR, INFO(默认), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3
        DEBUG 与 DEBUG1 等价;DEBUG2 和 DEBUG3 则分别指定了更详细、更罗嗦的日志输出。
        比 DEBUG 更详细的日志可能会泄漏用户的敏感信息,因此反对使用。
MACs
        指定允许在SSH-2中使用哪些消息摘要算法来进行数据校验。
        可以使用逗号分隔的列表来指定允许使用多个算法。默认值(包含所有可以使用的算法)是:
        hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160,hmac-sha1-96,hmac-md5-96
Match
        引入一个条件块。块的结尾标志是另一个 Match 指令或者文件结尾。
        如果 Match 行上指定的条件都满足,那么随后的指令将覆盖全局配置中的指令。
        Match 的值是一个或多个"条件-模式"对。可用的"条件"是:User, Group, Host, Address 。
        只有下列指令可以在 Match 块中使用:AllowTcpForwarding, Banner,
        ForceCommand, GatewayPorts, GSSApiAuthentication,
        KbdInteractiveAuthentication, KerberosAuthentication,
        PasswordAuthentication, PermitOpen, PermitRootLogin,
        RhostsRSAAuthentication, RSAAuthentication, X11DisplayOffset,
        X11Forwarding, X11UseLocalHost
MaxAuthTries
        指定每个连接最大允许的认证次数。默认值是 6 。
        如果失败认证的次数超过这个数值的一半,连接将被强制断开,且会生成额外的失败日志消息。
MaxStartups
        最大允许保持多少个未认证的连接。默认值是 10 。
        到达限制后,将不再接受新连接,除非先前的连接认证成功或超出 LoginGraceTime 的限制。
PasswordAuthentication
        是否允许使用基于密码的认证。默认为"yes"。
PermitEmptyPasswords
        是否允许密码为空的用户远程登录。默认为"no"。
PermitOpen
        指定TCP端口转发允许的目的地,可以使用空格分隔多个转发目标。默认允许所有转发请求。
        合法的指令格式如下:
              PermitOpen host:port
              PermitOpen IPv4_addr:port
              PermitOpen [IPv6_addr]:port
        "any"可以用于移除所有限制并允许一切转发请求。
PermitRootLogin
        是否允许 root 登录。可用值如下:
        "yes"(默认) 表示允许。"no"表示禁止。
        "without-password"表示禁止使用密码认证登录。
        "forced-commands-only"表示只有在指定了 command 选项的情况下才允许使用公钥认证登录。
                              同时其它认证方法全部被禁止。这个值常用于做远程备份之类的事情。
PermitTunnel
        是否允许 tun(4) 设备转发。可用值如下:
        "yes", "point-to-point"(layer 3), "ethernet"(layer 2), "no"(默认)。
        "yes"同时蕴含着"point-to-point"和"ethernet"。
PermitUserEnvironment
        指定是否允许 sshd(8) 处理 ~/.ssh/environment 以及 ~/.ssh/authorized_keys 中的 environment= 选项。
        默认值是"no"。如果设为"yes"可能会导致用户有机会使用某些机制(比如 LD_PRELOAD)绕过访问控制,造成安全漏洞。
PidFile
        指定在哪个文件中存放SSH守护进程的进程号,默认为 /var/run/sshd.pid 文件。
Port
        指定 sshd(8) 守护进程监听的端口号,默认为 22 。可以使用多条指令监听多个端口。
        默认将在本机的所有网络接口上监听,但是可以通过 ListenAddress 指定只在某个特定的接口上监听。
PrintLastLog
        指定 sshd(8) 是否在每一次交互式登录时打印最后一位用户的登录时间。默认值是"yes"。
PrintMotd
        指定 sshd(8) 是否在每一次交互式登录时打印 /etc/motd 文件的内容。默认值是"yes"。
Protocol
        指定 sshd(8) 支持的SSH协议的版本号。
        '1'和'2'表示仅仅支持SSH-1和SSH-2协议。"2,1"表示同时支持SSH-1和SSH-2协议。
PubkeyAuthentication
        是否允许公钥认证。仅可以用于SSH-2。默认值为"yes"。
RhostsRSAAuthentication
        是否使用强可信主机认证(通过检查远程主机名和关联的用户名进行认证)。仅用于SSH-1。
        这是通过在RSA认证成功后再检查 ~/.rhosts 或 /etc/hosts.equiv 进行认证的。
        出于安全考虑,建议使用默认值"no"。
RSAAuthentication
        是否允许使用纯 RSA 公钥认证。仅用于SSH-1。默认值是"yes"。
ServerKeyBits
        指定临时服务器密钥的长度。仅用于SSH-1。默认值是 768(位)。最小值是 512 。
StrictModes
        指定是否要求 sshd(8) 在接受连接请求前对用户主目录和相关的配置文件进行宿主和权限检查。
        强烈建议使用默认值"yes"来预防可能出现的低级错误。
Subsystem
        配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。
        值是一个子系统的名字和对应的命令行(含选项和参数)。比如"sft /bin/sftp-server"。
SyslogFacility
        指定 sshd(8) 将日志消息通过哪个日志子系统(facility)发送。有效值是:
        DAEMON, USER, AUTH(默认), LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7
TCPKeepAlive
        指定系统是否向客户端发送 TCP keepalive 消息。默认值是"yes"。
        这种消息可以检测到死连接、连接不当关闭、客户端崩溃等异常。
        可以设为"no"关闭这个特性。
UseDNS
        指定 sshd(8) 是否应该对远程主机名进行反向解析,以检查此主机名是否与其IP地址真实对应。默认值为"yes"。
UseLogin
        是否在交互式会话的登录过程中使用 login(1) 。默认值是"no"。
        如果开启此指令,那么 X11Forwarding 将会被禁止,因为 login(1) 不知道如何处理 xauth(1) cookies 。
        需要注意的是,login(1) 是禁止用于远程执行命令的。
        如果指定了 UsePrivilegeSeparation ,那么它将在认证完成后被禁用。
UsePrivilegeSeparation
        是否让 sshd(8) 通过创建非特权子进程处理接入请求的方法来进行权限分离。默认值是"yes"。
        认证成功后,将以该认证用户的身份创建另一个子进程。
        这样做的目的是为了防止通过有缺陷的子进程提升权限,从而使系统更加安全。
X11DisplayOffset
        指定 sshd(8) X11 转发的第一个可用的显示区(display)数字。默认值是 10 。
        这个可以用于防止 sshd 占用了真实的 X11 服务器显示区,从而发生混淆。
X11Forwarding
        是否允许进行 X11 转发。默认值是"no",设为"yes"表示允许。
        如果允许X11转发并且sshd(8)代理的显示区被配置为在含有通配符的地址(X11UseLocalhost)上监听。
        那么将可能有额外的信息被泄漏。由于使用X11转发的可能带来的风险,此指令默认值为"no"。
        需要注意的是,禁止X11转发并不能禁止用户转发X11通信,因为用户可以安装他们自己的转发器。
        如果启用了 UseLogin ,那么X11转发将被自动禁止。
X11UseLocalhost
        sshd(8) 是否应当将X11转发服务器绑定到本地loopback地址。默认值是"yes"。
        sshd 默认将转发服务器绑定到本地loopback地址并将 DISPLAY 环境变量的主机名部分设为"localhost"。
        这可以防止远程主机连接到 proxy display 。不过某些老旧的X11客户端不能在此配置下正常工作。
        为了兼容这些老旧的X11客户端,你可以设为"no"。
XAuthLocation
        指定 xauth(1) 程序的绝对路径。默认值是 /usr/X11R6/bin/xauth
  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林戈的IT生涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值