• Linux命令收集


     以下内容皆收集于网络

    1.rpm -qa 和 rpm -q

    查询一个包是否被安装# rpm -q < rpm package name>

    列出所有被安装的rpm package
    # rpm -qa
    e.g. rpm -qa|grep jdk

    2.grep

    在文本中查找字符串
    -i:搜索的时候忽略大小写
    -n:显示结果所在行号
    -c:统计匹配到的行数
    -o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
    -v:输出不带关键字的行(反向查询,反向匹配)
    -w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配
    -Ax:在输出的时候包含结果所在行之后指定行数,这里是x行,A是after
    -Bx:之前的x行
    -Cx:之前和之后的x行
    -e:实现多个选项的匹配,逻辑or关系
    -q:静默模式,不输出任何信息,当只关心有没有匹配到而不关心匹配的内容时可以使用,然后用“echo $?”查看,0表示匹配到,1表示没匹配到
    -P:表示兼容perl的正则引擎
    -E:使用扩展正则表达式,而不是基本正则表达式,相当于使用egrep

    3.tar

    常用:tar -zxvf 压缩文件 -C 目标目录

    -c: 建立压缩档案
    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件

    这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

    -z:有gzip属性的
    -j:有bz2属性的
    -Z:有compress属性的
    -v:显示所有过程
    -O:将文件解开到标准输出

    下面的参数-f是必须的

    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

    # tar -cf all.tar *.jpg
    这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

    # tar -rf all.tar *.gif
    这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

    # tar -uf all.tar logo.gif
    这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

    # tar -tf all.tar
    这条命令是列出all.tar包中所有文件,-t是列出文件的意思

    # tar -xf all.tar
    这条命令是解出all.tar包中所有文件,-t是解开的意思

    压缩

    tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar 

    tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

     tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

    tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

    rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

    zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

    解压

    tar -xvf file.tar //解压 tar包

    tar -xzvf file.tar.gz //解压tar.gz

    tar -xjvf file.tar.bz2   //解压 tar.bz2

    tar -xZvf file.tar.Z   //解压tar.Z

    unrar e file.rar //解压rar

    unzip file.zip //解压zip

    -C

     在打包的时候 -C 指定目录,从而不把目录打包进文件名字里

    用这个命令:tar zcvf chao.tar.gz /chao/*  打包文件的时候,在压缩包里把  /chao/这个路径也打包进去了。

    复制代码
    [root@yunwei-test chao]# ls /chao/
    01.txt  02.txt  03.txt  04.txt  05.txt  06.txt  07.txt  08.txt  09.txt  10.txt
    
    [root@yunwei-test chao]# tar zcvf /tar/chao.tar.gz /chao/*
    tar: Removing leading `/' from member names
    /chao/01.txt
    /chao/02.txt
    /chao/03.txt
    /chao/04.txt
    /chao/05.txt
    /chao/06.txt
    /chao/07.txt
    /chao/08.txt
    /chao/09.txt
    /chao/10.txt
    
    [root@yunwei-test chao]# ls /tar/
    chao.tar.gz
    
    #解压
    [root@yunwei-test chao]# cd /tar/
    [root@yunwei-test tar]# ls
    chao.tar.gz
    [root@yunwei-test tar]# tar xf chao.tar.gz 
    [root@yunwei-test tar]# ls
    chao  chao.tar.gz
    [root@yunwei-test tar]# cd chao/
    [root@yunwei-test chao]# ls
    01.txt  02.txt  03.txt  04.txt  05.txt  06.txt  07.txt  08.txt  09.txt  10.txt
    复制代码

    我想不要路径,我不想切换目录过去,而又只想打包指定目录下的文件。 使用 -C 参数。 

    复制代码
    ##打包
    [root@yunwei-test chao]# tar zcvf /tar/chao.tar.gz -C /chao . ./ ./01.txt ./02.txt ./03.txt ./04.txt ./05.txt ./06.txt ./07.txt ./08.txt ./09.txt ./10.txt [root@yunwei-test chao]# ls /tar/ chao.tar.gz [root@yunwei-test chao]# cd /tar/ [root@yunwei-test tar]# ls chao.tar.gz

    #解压 [root@yunwei-test tar]# tar xvf chao.tar.gz ./ ./01.txt ./02.txt ./03.txt ./04.txt ./05.txt ./06.txt ./07.txt ./08.txt ./09.txt ./10.txt [root@yunwei-test tar]# ls 01.txt 02.txt 03.txt 04.txt 05.txt 06.txt 07.txt 08.txt 09.txt 10.txt chao.tar.gz
    复制代码

     在解压的时候 -C 是解压到指定目录中。

    4.软连接

    ln  -s  源文件 软链接文件

    软链接是创建的,就意味着软链接文件不可以在创建之前存在

    要使用绝对路径

    ln -s /bigdata/application/jdk1.8.0_231/ /usr/local/jdk

    5.chown

    指令名称 : chown 使用权限 : root(一般来说,这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的文件拥有者,也没有权限可以自己的文件拥有者改设为别人。只有系统管理者(root)才有这样的权限。) 
    使用方式 : chown [-cfhvR] [--help] [--version] user[:group] file… 
    利用 chown 可以将档案的拥有者加以改变。这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。 
    参数:

    -c或-change:作用与-v相似,但只传回修改的部分 
    -f或–quiet或–silent:不显示错误信息 
    -h或–no-dereference:只对符号链接的文件做修改,而不更改其他任何相关文件 
    -R或-recursive:递归处理,将指定目录下的所有文件及子目录一并处理 
    -v或–verbose:显示指令执行过程 
    –dereference:作用和-h刚好相反 
    –help:显示在线说明 
    –reference=<参考文件或目录>:把指定文件或目录的所有者与所属组,统统设置成和参考文件或目录的所有者与所属组相同 
    –version:显示版本信息 
    chown命令使用举例:(像我用的vps,就要先ssh登录)

    # chown [-R] [用户名称] [文件或目录] 
    # chown [-R] [用户名称:组名称] [文件或目录]

    范例1:将test3.txt文件的属主改为test用户。 
    # ls -l test3.txt 
    -rw-r–r– 1 test root 0 2009-10-23 9:59 test3.txt 
    # chown test:root test3.txt 
    # ls -l test3.txt 
    -rw-r–r– 1 test root 0 2009-10-23 9:59

    范例2:chown所接的新的属主和新的属组之间可以使用:连接,属主和属组之一可以为空。如果属主为空,应该是“:属组”;如果属组为空,“:”可以不用带上。

    # ls -l test3.txt 
    -rw-r–r– 1 test root 0 2009-10-23 9:59 test3.txt

    # chown :test test3.txt <==把文件test3.txt的属组改为test 
    # ls -l test3.txt 
    -rw-r–r– 1 test test 0 2009-10-23 9:59 test3.txt

    范例3:chown也提供了-R参数,这个参数对目录改变属主和属组极为有用,可以通过加 -R参数来改变某个目录下的所有文件到新的属主或属组。 
    # ls -l testdir <== 查看testdir目录属性 
    drwxr-xr-x 2 usr root 0 2009-10-56 10:38 testdir/ <==文件属主是usr用户,属组是 root用户 
    # ls -lr testdir <==查看testdir目录下所有文件及其属性 
    total 0 
    -rw-r–r– 1 usr root 0 2009-10-23 10:38 test1.txt 
    -rw-r–r– 1 usr root 0 2009-10-23 10:38 test2.txt 
    -rw-r–r– 1 usr root 0 2009-10-23 10:38 test3.txt 
    # chown -R test:test testdir/ <==修改testdir及它的下级目录和所有文件到新的用户和用户组 
    # ls -l testdir 
    drwxr-xr-x 2 test test 0 2009-10-23 10:38 testdir/ 
    # ls -lr testdir 
    total 0 
    -rw-r–r– 1 test test 0 2009-10-23 10:38 test1.txt 
    -rw-r–r– 1 test test 0 2009-10-23 10:38 test2.txt 
    -rw-r–r– 1 test test 0 2009-10-23 10:38 test3.txt

    6.用户组和文件权限

    原文链接:https://www.cnblogs.com/123-/p/4189072.html

    用户组

    在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念

    - 所有者

    - 所在组

    - 其它组

    - 改变用户所在的组

     

    所有者

    一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

    用ls ‐ahl命令可以看到文件的所有者

    也可以使用chown 用户名 文件名来修改文件的所有者

     

    文件所在组

    当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

    用ls ‐ahl命令可以看到文件的所有组

    也可以使用chgrp 组名 文件名来修改文件所在的组

     

    其它组

    除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

     

    文件权限

    ls

     -l中显示的内容如下:

    -rwxrw-r‐-1 root root 1213 Feb 2 09:39 abc

    - 10个字符确定不同用户能对文件干什么

    - 第一个字符代表文件(-)、目录(d),链接(l)

    - 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

    - 第一组rwx:文件所有者的权限是读、写和执行

    - 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

    - 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行

    也可用数字表示为:r=4,w=2,x=1  因此rwx=4+2+1=7

    - 1 表示连接的文件数

    - root 表示用户

    - root表示用户所在的组

    - 1213 表示文件大小(字节)

    - Feb 2 09:39 表示最后修改日期

    - abc 表示文件名

     

    改变权限的命令

    chmod 改变文件或目录的权限

    chmod 755 abc:赋予abc权限rwxr-xr-x

    chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限

    chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限

    chmod a+r abc:给所有用户添加读的权限

     

    改变所有者(chown)和用户组(chgrp)命令

    chown xiaoming abc:改变abc的所有者为xiaoming

    chgrp root abc:改变abc所属的组为root

    chown root ./abc:改变abc这个目录的所有者是root

    chown ‐R root ./abc:改变abc这个目录及其下面所有的文件和目录的所有者是root

     

    改变用户所在组

    在添加用户时,可以指定将该用户添加到哪个组中,同样用root的管理权限可以改变某个用户所在的组

    - usermod ‐g 组名 用户名

    你可以用

    - usermod ‐d 目录名 用户名,改变该用户登录的初始目录

     

    【综合案例】

    【题1.1】建立两个用户组group1和group2,以及三个用户dennis、daniel、abigale,并且将前2个用户分配在group1用户组下,后一个分配在group2用户组下

     

    【题1.2】以dennis用户登录,创建一个Hello.java文件

    【题1.3】以daniel用户登录,观察是否可以访问/home/dennis目录以及读或写其创建的Hello.java文件

    【题1.4】以dennis用户登录,修改目录/home/dennis及Hello.java文件的读写权限(更正:修改目录权限的时候,应该使用770,而不是760,否则权限不足)

     

    【题1.5】重复【题1.3】

    【题1.6】改变abigale的用户组由group2变为group1

     

    然后,可以使用cat /etc/passwd查看并确定

     

    【参考】

    - groupadd 组名,在linux中添加组

    - vi /etc/group,查看linux中所有组信息,可以看可以编辑

    - cat /etc/group,查看linux中所有组信息,只可以看不可以编辑

    - useradd ‐g 组名 用户名,创建用户的同时指定将该用户分配到哪个组下

    - vi /etc/passwd,查看linux中所有用户信息,可以看可以编辑

    - cat /etc/passwd,查看linux中所有用户信息,只可以看不可以编辑

     

    7.chatter

     常见命令参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
    S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
    a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
    b:不更新文件或目录的最后存取时间。
    c:将文件或目录压缩后存放。
    d:当dump程序执行时,该文件或目录不会被dump备份。
    D:检查压缩文件中的错误。
    i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
    s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
    u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
    t:文件系统支持尾部合并(tail-merging)。
    X:可以直接访问压缩文件的内容。

        常用的命令展示

      chatter: 锁定文件,不能删除,不能更改
            +a:  只能给文件添加内容,但是删除不了,
                  chattr +a  /etc/passwd
            -d:      不可删除
            加锁:chattr +i  /etc/passwd       文件不能删除,不能更改,不能移动
            查看加锁: lsattr /etc/passwd      文件加了一个参数 i 表示锁定
            解锁:chattr -i /home/omd/h.txt    - 表示解除
            隐藏chattr命令:

    which chattr
    mv /usr/bin/chattr  /opt/ftl/
    cd /opt/ftl/ 
    mv chattr h    -->更改命令,使用别名h隐藏身份
    /opt/ftl/h +i /home/omd/h.txt   -->利用h 行驶chattr命令
    lsattr /home/omd/h.txt    -->查看加密信息
     

    恢复隐藏命令

     
    mv h /usr/bin/chattr
    chattr -i /home/omd/h.txt
    lsattr /home/omd/h.txt
     
     
     

    8.$#,$@,$0,$1,$2,$*,$$,$?

    脚本内容

     #!/bin/sh
    
    echo "number:$#"
    echo "scname:$0"
    echo "first :$1"
    echo "second:$2"
    echo "argume:$@"
    
    echo "show parm list:$*"
    echo "show process id:$$"
    
    echo "show precomm stat: $?"

    保存退出

     赋予脚本执行权限

     # chmod +x test

     执行脚本

     # ./test aa bb
    
    number:2
    scname:./test
    first:aa
    second:bb
    argume:aa bb
    
    show parm list:aa bb
    show process id:24544
    
    show precomm stat:0

    通过显示结果可以看到:

    $# 是传给脚本的参数个数

    $0 是脚本本身的名字

    $1 是传递给该shell脚本的第一个参数

    $2 是传递给该shell脚本的第二个参数

    $@ 是传给脚本的所有参数的列表

    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个

    $$ 是脚本运行的当前进程ID号

    $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

     

    linux /etc/rc.d/目录及rc.local的详解

    https://blog.51cto.com/efoni/2147018

    centos 系统禁止普通用户使用crontab命令

    cron计划任务默认root用户与非root用户都可以执行,当然如果在安全方面想禁用这部分用户,则可以通过两个文件来解决:

    cron.allow
    cron.deny
    cron.allow:定义允许使用crontab命令的用户
    cron.deny:定义拒绝使用crontab命令的用户

    这两个文件有优先级,普通用户在执行crontab命令的时候
    1、系统先检测cron.allow文件是否存在;如果存在,则检测文件中存在的用户中是否有当前用户,检测通过则开始执行,检测不通过直接提示该用户没有执行权限

    2、当系统没有检测到cron.allow文件存在的时候,则接下来检测cron.deny文件,看当前用户是否被deny掉,如果没有在cron.deny文件中检测到当前运行crontab的用户,则该命令可以成功执行,如果有检测到该用户在cron.deny文件中,则直接提示该用户没有执行权限

    案例1:只允许root和www用户执行crontab命令,其他用户则禁止执行
    在需要定义该策略的主机上面执行:
    echo “www” > /etc/cron.allow

    案例2:只拒绝anonymous用户执行crontab命令,其他用户都可以执行该命令:
    rm -f /etc/cron.allow
    echo “anonymous” > /etc/cron.deny

  • 相关阅读:
    SpringBoot系列: Pebble模板引擎语法介绍
    SpringBoot系列: Pebble模板引擎
    SpringBoot系列: CommandLineRunner接口的用处
    SpringBoot系列: 设计Restful风格的API
    SpringBoot系列: 所有配置属性和官方文档
    Spring Security 之API 项目安全验证(基于basic-authentication)
    Spring Security 之方法级的安全管控
    SpringBoot系列: 使用 Swagger 生成 API 文档
    SpringBoot系列: Web应用鉴权思路
    SpringBoot系列: RestTemplate 快速入门
  • 原文地址:https://www.cnblogs.com/aidata/p/11703053.html
Copyright © 2020-2023  润新知