首页 文章 精选 留言 我的

精选列表

搜索[linux],共10000篇文章
优秀的个人博客,低调大师

Linux内核的Meltdown和Spectre漏洞修补情况

稳定版内核维护者 Greg Kroah-Hartman 释出了更新 4.14.12,4.9.75 和 4.4.110,主要是将 Meltdown 和 Spectre 修补补丁移植到稳定内核分支,他随后在个人博客上介绍了 Meltdown 和 Spectre 的内核修补情况。Kroah-Hartman 称大部分发行版都已经打了补丁,但如果用户使用内核版本不是 4.4、4.9、4.14 或没有发行版支持,那么用户只能不走运了。 然而相比修补 Meltdown 和 Spectre 漏洞,用户目前使用的内核显然还包含了数以百计的其它漏洞,用户需要担心的不是 Meltdown 和 Spectre,而是更迫切的其它安全漏洞。 他建议用户及时更新系统。对于广大的 Android 用户来说,新的漏洞真的不是什么大问题。

优秀的个人博客,低调大师

Linux下误删 /user/bin目录后的补救

当危险的动作发生, 误删 /user/bin目录后的补救 以下是昨天晚上真实的误操作现场,模拟记录一下 (这是测试环境,所以操作得很随意,有些执行动作很不规范) 在上面编译一个软件Dboop,完事以后想把它做个软链到 /usr/bin sudo - su cd/usr/local/dboop/bin/ cpDboop dboop ln -s /usr/bin /usr/local/dboop/bin/dboop (这句写错了) ln --help ln -s /usr/bin/ /usr/local/dboop/bin/dboop -f(这句继续 错) ll ( WHAT?怎么出来个这玩意,心想,操,ln又写反了啊!!!) rm -rf dboop .... 然后瞬间一激灵,觉得不对,/usr/bin目录下的所有文件都凉了。 啥也执行不了,yum wget sudo ...全没了 恢复过程从其他机器 scp拷贝 /user/bin/目录过来 这里要注意的点: 别动机器上的其他服务(我这台测试机上当时还跑着nginx,uwsgis,celry,redis,mysql.....等服务) 一直能正常服务 别退出当前SHELL ,其他SHEELL登进来,会发现没有SUDO 了 从其他机器SCP过来时,可能会提示没有SCP文件,需要变通一下 拷过来的文件权限可能不对了 重要的是sudo权限乱了。 sudo -su 会报错: sudo:有效用户 ID 不是 0,sudo 属于 root 并设置了 setuid 位吗? 这时候试了很多方法都不行,只能找系统部同事 chmod u+s /usr/bin/sudo ln -s /usr/bin/sudo /usr/bin/sudoedit 就可以了,误删/user/bin目录 已经修复了

优秀的个人博客,低调大师

kali linux 2.0 web 渗透测试 电子书

原创2017-05-31玄魂工作室玄魂工作室 打起精神,重新开启订阅号的原创文章写作工作,但是需要点时间,请耐心等待。 求资料的同学,没有及时回复的,请再次留言,我会尽快处理。今天分享两本电子书,虽然是英文的,但是难度不高。 第一本是基于Kali 2.0 的web渗透测试 链接: http://pan.baidu.com/s/1slLgAAD 密码: 8gvn 第二本是基于Hadoop的大数据取证技术 链接: http://pan.baidu.com/s/1qY37DMG 密码: 2cax 欢迎关注玄魂工作室 本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/p/6928166.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Linux基础之bash脚本进阶篇-数组

数组 什么是数组? 计算机中的数组指的是具有相同类型的若干变量按照一定的顺序组织起来的一种数据类型。 通俗点来说数组就是变量的一种,按现在的术语来说就是变量圈子中的一个,只不过这个变量圈子都是相同类型的变量并有一定的组织顺序。 数组的格式 array[key]=value array:表示数组变量的名称 key:表示数组元素的索引又称下标 value:表示key对应的数组元素的值 大体了解了什么是数组,下面就来了解下如何定义数组或如何创建数组 定义数组 定义数组主要有如下几种类型 1、通过指定元素来定义数组 1 2 3 4 5 6 7 #!/bin/bash #通过指定元素来定义数组 #指定数组元素值 array[0]=8 array[2]=two #输出数组元素 echo "${array[@]}" 运行脚本 1 2 [root@docker test ] #sh20160910-1 8two 2、通过declare语句来定义数组 1 2 3 4 5 6 7 8 9 #!/bin/bash #通过declare语句来定义数组 #定义数组-a选项表示后面定义的是一个名为array的数组。 declare -aarray #为元素赋值 array[0]=1 array[1]=2 #输出元素值 echo "${array[@]}" 运行脚本 1 2 [root@docker test ] #sh20160910-2 12 通过上面两个例子,其实可以发现在shell中这样的声明不是非常必要的,因为在shell中,所有的变量不必显示定义就可以用作数组,在某种意义上所有变量都是数组:赋值给没有下标的变量与赋值给下标内为0的元素效果是相同的。 示例: 1 2 3 4 #!/bin/bash tom=1 echo "${tom}" echo "${tom[0]}" 运行脚本 1 2 3 [root@docker test ] #sh20160910-3 1 1 由结果可知赋值给没有下标的变量与赋值给下标内为0的元素效果是相同的。 3、通过元素列表定义数组 1 2 3 4 5 6 7 8 #!/bin/bash #通过元素列表定义数组 #定义数组 array=(123456) #输出第4个数组元素的值 echo "Thefourthelementis${array[3]}" #输出所有元素的值 echo "Theelementsofthisarrayare${array[@]}" 运行脚本 1 2 3 [root@docker test ] #sh20160910-4 Thefourthelementis4 Theelementsofthisarrayare123456 数组的访问或查看 数组访问有若干途径,下面列举常用两种: 1、通过索引值来查看其对应的元素值 1 2 3 4 5 #!/bin/bash #定义数组 array=(123) #查看下标为1的元素 echo "thesecondelementis${array[1]}" 运行脚本 1 2 [root@docker test ] #sh20160910-5 thesecondelementis2 2、通过循环列表遍历数组 我们如果要用for循环的c表达,那么有一个问题需要解决,就是取值范围,而数组中有多少个元素只有定义的人才知道,如果有一个现成的数组,我们在不知道其有多少个元素的情况下如何通过for循环遍历显示? 为此我们需要先知道该数组有多少个元素,在数组里面可以通过${#array[@]}表示 1 2 3 4 5 6 7 8 9 10 #!/bin/bash #通过循环列表定义数组 #定义数组 array=(onetwothreefourfive678910) #获取数组长度 length= "${#array[@]}" #通过循环遍历数组 for ((i=0;i<$length;i++)); do echo "${array[$i]}" done 运行脚本 1 [root@docker test ] #sh20160910-6 1 2 3 4 5 6 7 8 9 10 one two three four five 6 7 8 9 10 关联数组 “关联数组”是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或者其他类型的值(除了NULL)来索引它 关联数组必须事先声明,否则导致创建关联数组失败 declare -A array声明关联数组 array=([a]=tom [b]=john [c]=3) 如果我们定义下标内是人名其对应的元素为成绩,那么输入指定的人名就可以知道其对应的成绩 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #!/bin/bash #定义关联数组 declare -Agrades #为数组下标指定对应的分数 grades=([tom]=90[lilei]=88[rose]=92[Lucy]=80) #给一个名字 read -p "Giveaname:" name_G #判断是否给了内容,若没有则在提示后退出 [-z$name_G]&& echo "Nonepleaseselect[tom|lilei|rose|Lucy]&&exit1" #根据输入的名字输出对应的分数 case $name_G in tom) echo "tom'sgradesis${grades[tom]}" ;; lilei) echo "lilei'sgradesis${grades[lilei]}" ;; rose) echo "rose'sgradesis${grades[rose]}" ;; Lucy) echo "Lucy'sgradesis${grades[Lucy]}" ;; *) echo "pleaseselect[tom|lilei|rose|Lucy]" esac 运行脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@docker test ] #sh20160910-7 Giveaname:tom Tom'sgradesis90 [root@docker test ] #vim20160910-7 [root@docker test ] #sh20160910-7 Giveaname:rose rose'sgradesis92 [root@docker test ] #sh20160910-7 Giveaname:lilei lilei'sgradesis88 [root@docker test ] #sh20160910-7 Giveaname:Lucy Lucy'sgradesis80 [root@docker test ] #sh20160910-7 Giveaname:other please select [tom|lilei|rose|Lucy] 数组的增删合 增加数组个数 1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash #定义数组 array=(12) #显示数组所有元素 echo "${array[@]}" #显示数组元素个数 echo "${#array[@]}" #追加数组元素 array[2]=3 array[3]=4 #显示追加后的数组信息 echo "${array[@]}" echo "${#array[@]}" 运行脚本 1 2 3 4 5 [root@docker test ] #sh20160910-8 12 2 1234 4 可以从数组的任意未使用的下标数开始。可以非连续增加数组 删除数组 1、删除数组指定某个元素 命令:unset array[n] 1 2 3 4 5 6 7 8 9 10 11 #!/bin/bash #定义数组 array=(123) #显示数组所有元素 echo "${array[@]}" #显示下标为0的数组元素 echo "${array[0]}" #删除下标为0的数组元素 unset array[0] echo "${array[@]}" echo "${array[0]}" 2、删除整个数组 命令:unset array 1 2 3 4 5 6 7 #!/bin/bash #定义数组 array=(123) echo "${array[@]}" #删除整个数组 unset array echo "${array[@]}" 运行脚本 1 2 [root@docker test ] #sh20160910-9 123 数组之间的合并 数组可以将多个不同的数组组合成一个新的数组。 数组连接语法如下: ("${array1[@]}" "${array2[@]}" ... "${arrayN[@]}") 数组之间用空格隔开 示例 1 2 3 4 5 6 7 #定义两个数组 array1=(123) array2=(456) #连接数组 array1_2=( "${array1[@]}" "${array2[@]}" ) #显示合并后数组的所有元素 echo "${array1_2[@]}" 运行脚本 1 2 [root@docker test ] #sh20160910-10 123456 数组中的切片 所谓切片,是指截取数组的部分元素或某个元素的部分内容 基本语法为:${array[@|*|n]:start:length} 示例1:给定一个长度为8的数组,截取第3个元素开始的4个元素。 1 2 3 4 #!/bin/bash array=(12345678) var=${array[@]:3:4} echo "$var" 运行脚本 1 2 [root@docker test ] #sh20160910-11 4567 示例2:给定一个长度为3的数组,截取第2个元素,从该元素的第1个字符开始,截取其中3个字符 1 2 3 4 #!/bin/bash array=(appleorangebanana) var=${array[2]:1:3} echo "$var" 运行脚本 1 2 [root@docker test ] #sh20160910-12 ana 数组中的替换 数组的替换是指将某个数组元素的部分内容用其他字符串来代替,但不影响原来的数组的值。 基本语法为:${array[@|*]/pattern/replacement} 1 2 3 4 #!/bin/bash replace=(abcde) echo "thereplacedarrayis${replaced[@]/c/3}" echo "theoriginalarrayis${replace[@]}" 运行脚本 1 2 3 [root@docker test ] #sh20160910-13 thereplacedarrayisab3de theoriginalarrayisabcde 小结 本文主要讲述数组的概念,数组的定义,数组的查看,关联数组的使用,数组的增删合,数组的切片,数组的替换这7部分内容。 感触:我在总结完数组后,隐隐感觉到数组与数据库之间有一定的关联性。 查看历史可以知道数组诞生于数据库之前,因此我感觉数据库这个思想一定程度上是借鉴了数组的一些理念。当然数据库比数组要强大很多,在数据查询搜索专业许多。可还是觉得这两者之间有种本质上的一致:基于数据之间的对应。 本文转自 紫色的茶碗 51CTO博客,原文链接:http://blog.51cto.com/chawan/1851443,如需转载请自行联系原作者

优秀的个人博客,低调大师

Linux文本处理---文件属性查找

文件查找 所谓的文件查找时根据文件的各种属性在特定的路径下找到对应文件的过程。 一、文件查找的方式 实时查找:遍历所有文件进行条件匹配。查找精确,但是速度慢。 这种查找通过find命令来实现。 非实时查找:根据索引进行查找。查找速度快,但是查找不精确。 这种查找locate命令,它只依赖于索引查找的,索引的创建时在系统空闲的时候由系统自动进行的。手动更新数据库的命令式upadtedb。 二、实时查找 通过find命令来实现。find是根据查找条件,在查找路径中查找到对应的文件,根据处理动作做出相应的操作。 Usage: find [options]... [查找路径] [查找条件] [处理动作] 查找路径:默认是当前路径 查找条件:默认是指定路径下的所有文件 处理动作:默认的处理动作时显示到屏幕上 查找条件类型: 查找条件类型 具体意义 示例 -name -iname 支持通配符 -name 文件名 -iname 文件名(不区分大小写) 查找当前路径下s开头的文件名 find ./ -name "s*" 查找当前路径下s|S开头的文件名 find ./ -iname "s*" -uid -user -nouser -gid -group -nogroup -uid 根据文件属主的UID查找 -user根据文件属主名查找 -nouser 没有属主的文件 查找当前路径下文件属主uid为500文件 find ./ -uid 500 查找当前路径下文件没有属主的文件 find ./ -nouser -type -type 根据文件类型查找 文件类型:f,d,l,b,c,s,p 查找当前路径下是目录的文件 find ./ -type d -size -size 根据文件大小查找 -size 12M 精确查找(11-12M之间都满足) -size +12M 大于12M的文件 -size -12M 小于12M的文件 查找当前路径下文件名s开头的并且大于100G的文件 find ./ -size +100G -a -name 's*' -atime -mtime -ctime -amin -mmin -cmin -atime 根据访问时间查找单位是天,-amin的单位是分 -mtime -mmin 文件内容修改时间 -ctime -cmin 文件元数据信息修改时间 -atime 2 修改时间是2天之前(2-3天) -atime -2 修改时间是2天之内 -atime +2 修改时间是3天之外(>3天) 查找/etc/目录下最近一周内其内容修改过的 find /etc/ -mtime -7 查找/etc/目录下最近一周内其内容没有修改过的(也就是7天之前修改过的) find /etc/ -mtime +7 -perm -perm 根据文件权限查找 -prem 644 文件权限就是644的 -prem +222 只要有任意一类用户可写权限即可(222对应的权限是-w--w--w-,查找文件的权限中,只要有一个对应位有w权限即可) -prem -222每一用户至少有可写权限,属主,属组,其他每个都至少有可写权限 查找/etc/目录所有用户都没有写权限的文件 find /etc/ -not -perm +222 查找/etc/目录所有用户都可写权限的文件 find /etc/ -perm -222 注意:在使用查找条件是可使用组合条件查询:-a(&&),-o(||),-not(!)。 处理动作: 处理动作 具体意义 示例 -print 默认处理动作,打印 find /etc/ -mtime -7 -print -exec -exec COMMAND {} \; 一次性查找符合条件的所有文件,并一同传递给CMOMANDD作为参数 find /etc/ -mtime -7 -exec rm -f {} \; -ok -ok COMMAND {} \; 同exec一样,只是在执行命令的时候会有所提示 find /etc/ -name 'i..ue' -ok rm -f {} \; 在使用exex后ok参数的时候,有些命令接受的参数有长度有限,运行过程中出现“参数列表过长”的类似信息。此时需要用另一个命令xargs。通常的用法是 find [option] [查找路径][查找条件] | xargs COMMAND。 执行过程是:find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。 在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。 三、非实时查找 通过locate命令来查找,是一种模糊匹配。 Usage: locate [option]... [PATTERN](通配符) 常用参数: -d 指定数据库(索引)的路径,默认是/var/lib/mlocate/mlocate.db -b '\NAME'精确匹配 1 2 3 4 5 6 7 [root@server~] #locate-b'\root' /root /etc/selinux/targeted/contexts/users/root /usr/src/kernels/2 .6.32-358.el6.x86_64 /include/config/usb/ehci/root /var/spool/cron/root /var/spool/mail/root ###locate'root'如果是这样的话,查询的是*root*这种模式 我们一般都是使用精确查找,所以这里只对locate做大致了解。 四、练习 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #1、查找/var/目录属主为centos且属组为mail的所有文件; find /var -usercentos-a-groupmail #2、查找/usr目录下不属于root、bin或hadoop的所用文件; find /usr -not-userroot-a-not-userbin-a-not-userhadoop #这里使用小括号时需要转义,并且小括号前后都有空格 find /usr -not\(-userroot-o-userbin-o-userhadoop\) #3、查找/etc/目录下最近一周内其内容修改过的,且不属于root且不属于hadoop的文件; find /etc -mtime-7-a-not\(-userroot-o-userhadoop\) #4、查找当前系统上没有属主或属组,且最近1个月内曾被访问过的文件; find /\(-nouser-o-nogroup\)-a-atime-30 #5、查找/etc/目录下大于1M且类型为普通文件的所有文件; find /etc -size+1M- type f #6、查找/etc/目录所有用户都没有写权限的文件; find /etc/ -not-perm+222 #7、查找/etc/目录下至少有一类用户没有写权限; find /etc/ -not-perm-222 #8、查找/etc/init.d/目录下,所有用户都有执行权限且其它用户有写权限的文件; find /etc/init .d/-perm-113 本文转自 羊木狼 51CTO博客,原文链接:http://blog.51cto.com/guoting/1437432,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册