-
描述DemonCAT 工具覆盖计算全栈的故障注入能力,包含芯片、硬件、网络、OS、基础组件和AI应用等故障注入能力,从底端芯片到上层应用,覆盖整个计算产品的硬件层、软件层和应用层,测试人员无需单独寻找各个组件或部件的故障注入方法和工具,通过 DemonCAT工具配合使用指南即可实现对目标的故障注入与清除,大大提升了可靠性测试的效率。 以CC视角初步构建计算产品故障注入能力,提供工具支撑:L0/L1 层 – 硬件平台L0对应芯片级别,L1 为其他硬件级别。在此级别DemonCAT将支持 CPU、NPU和GPU等芯片的故障注入能力,支持内存模块的CE/UCE的事件注入能力,支持SCSI协议 磁盘的链路故障注入,同时进一步探索交换机故障注入能力。L2 层 – 基础软件L2级别主要包括Linux OS,Docker,iSulad等应用运行所依赖的基础软件。DemonCAT目前支持Linux OS与Docker容器类故障模式共130多种。当前仍在不断地丰富Linux OS与容器的注入能力,将支持更多的 Linux OS与容器的故障模式,例如:将新增支持更多种Linux OS文件资源的注入能力、支持Android镜像的容器。L3 层 – 上层软件L3级别主要是业务应用的故障注入能力,DemonCAT将覆盖AI训练场景故障注入能力,支持AI训练模型、数据故障注入能力。同时 DemonCAT即将进一步探索更多应用的故障注入能力,例如:Java、微服务、k8s、Go等等常见的业务应用。支持的故障模式DemonCAT工具实现计算全栈故障注入版面太多,我们分为上下两期,敬请期待~
-
NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小)、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。一、版本通常的Linux发行版中都带有NetCat(简称nc),甚至在拯救模式光盘中也由busybox提供了简版的nc工具。但不同的版本,其参数的使用略有差异。NetCat 官方地址:http://netcat.sourceforge.net/ 引用[root@hatest1 ~]# cat /etc/asianux-releaseAsianux release 2.0 (Trinity SP2)[root@hatest1 ~]# cat /etc/redflag-releaseRed Flag DC Server release 5.0 (Trinity SP2)[root@hatest1 ~]# type -a ncnc is /usr/bin/nc[root@hatest1 ~]# rpm -q ncnc-1.10-22建议在使用前,先用man nc看看帮助。这里以红旗DC Server 5.0上的1.10版本进行简单说明。假设两服务器信息:引用server1: 192.168.228.221server2: 192.168.228.222二、常见使用1、远程拷贝文件从server1拷贝文件到server2上。需要先在server2上,用nc激活监听,server2上运行:引用[root@hatest2 tmp]# nc -lp 1234 > install.logserver1上运行:引用[root@hatest1 ~]# ll install.log-rw-r--r-- 1 root root 39693 12月 20 2007 install.log[root@hatest1 ~]# nc -w 1 192.168.228.222 1234 < install.log2、克隆硬盘或分区操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工具光盘)启动系统后,在server2上进行类似的监听动作:# nc -l -p 1234 | dd of=/dev/sdaserver1上执行传输,即可完成从server1克隆sda硬盘到server2的任务:# dd if=/dev/sda | nc 192.168.228.222 1234※ 完成上述工作的前提,是需要落实光盘的拯救模式支持服务器上的网卡,并正确配置IP。3、端口扫描可以执行:引用# nc -v -w 1 192.168.228.222 -z 1-1000hatest2 [192.168.228.222] 22 (ssh) open4、保存Web页面# while true; do nc -l -p 80 -q 1 < somepage.html; done5、模拟HTTP Headers引用[root@hatest1 ~]# nc www.linuxfly.org 80GET / HTTP/1.1Host: ispconfig.orgReferrer: mypage.comUser-Agent: my-browserHTTP/1.1 200 OKDate: Tue, 16 Dec 2008 07:23:24 GMTServer: Apache/2.2.6 (Unix) DAV/2 mod_mono/1.2.1 mod_python/3.2.8 Python/2.4.3 mod_perl/2.0.2 Perl/v5.8.8Set-Cookie: PHPSESSID=bbadorbvie1gn037iih6lrdg50; path=/Expires: 0Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Pragma: no-cacheCache-Control: private, post-check=0, pre-check=0, max-age=0Set-Cookie: oWn_sid=xRutAY; expires=Tue, 23-Dec-2008 07:23:24 GMT; path=/Vary: Accept-EncodingTransfer-Encoding: chunkedContent-Type: text/html[......]在nc命令后,输入红色部分的内容,然后按两次回车,即可从对方获得HTTP Headers内容。6、聊天nc还可以作为简单的字符下聊天工具使用,同样的,server2上需要启动监听:[root@hatest2 tmp]# nc -lp 1234server1上传输:[root@hatest1 ~]# nc 192.168.228.222 1234这样,双方就可以相互交流了。使用Ctrl+D正常退出。7、传输目录从server1拷贝nginx-0.6.34目录内容到server2上。需要先在server2上,用nc激活监听,server2上运行:引用[root@hatest2 tmp]# nc -l 1234 |tar xzvf -server1上运行:引用[root@hatest1 ~]# ll -d nginx-0.6.34drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34[root@hatest1 ~]# tar czvf - nginx-0.6.34|nc 192.168.228.222 12348、参数简介这仅是一个1.10版本的简单说明,详细的参数使用还是需要看man:引用想要连接到某处: nc [-options] hostname port[s] [ports] ...绑定端口等待连接: nc -l -p port [-options] [hostname] [port]参数:-g gateway source-routing hop point[s], up to 8-G num source-routing pointer: 4, 8, 12, ...-h 帮助信息-i secs 延时的间隔-l 监听模式,用于入站连接-n 指定数字的IP地址,不能用hostname-o file 记录16进制的传输-p port 本地端口号-r 任意指定本地及远程端口-s addr 本地源地址-u UDP模式-v 详细输出——用两个-v可得到更详细的内容-w secs timeout的时间-z 将输入输出关掉——用于扫描时,其中端口号可以指定一个或者用lo-hi式的指定范围。 9、1.84版本参数简介1. nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]2. [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x3. proxy_address[:port]] [hostname] [port[s]] 1. -4 强制使用ipv42. -6 强制使用ipv63. -D 允许socket通信返回debug信息4. -d 不允许从标准输入中读取5. -h 显示nc帮助文档6. -i interval 7. 指定每行之间内容延时发送和接受,也可以使多个端口之间的连接延时8. -k 当一个连接结束时,强制nc监听另一个连接。必须和-l一起使用9. -l 用于监听传入的数据链接,不能与-p -z -s一起使用。-w 参数的超时也会被忽略10. -n 不执行任何地址,主机名,端口或DNS查询11. -p 指定nc使用的源端口,受权限限制且不能余-l一起使用12. -r 指定nc使用的源端口和目的端口,不能使用系统原来就指定的那些端口13. -S 允许在RFC 2385的TCP MD5签名选项14. -s source_ip_address 15. 指定用于发包的接口的IP地址,不能和-l一起使用16. -T ToS17. 指定链接的IP服务类型(TOS)18. -C 自动换行19. -t 使nc能够与telnet交互20. -U 使用UNIX域socket21. -u 使用udp代替默认的tcp选项22. -v 输出详细报告23. -w timeout24. 一个链接一段时间无操作,则自动断开,默认无超时25. -X proxy_version26. 指定nc使用代理时所采用的协议,可选的有socksv4,socks5以及https。默认socks527. -x proxy_address[:port]28. 指定nc使用的代理地址和端口。默认设置:1080(SOCKS),3128(HTTPS)29. -z 只监听不发送任何包 三、版本差异不用系统上提供的nc版本会有说不同,其提供的参数使用方法也略有差异。例如,红旗Asianux 3.0 SP1拯救光盘上的版本是供使用的参数仅有一部分:引用# nc -hBusyBox v1.2.0 (2008.04.14-01:35+0000) multi-call binaryUsage: nc [OPTIONS] [IP] [port]Netcat opens a pipe to IP:portOptions: -l listen mode, for inbound connects -p PORT local port number -i SECS delay interval for lines sent -e PROG program to exec after connect (dangerous!) -w SECS timeout for connects and final net reads而在Asianux 3.0 SP1系统中提供的nc版本则是1.84的,按上面的参数用法写会执行不了:引用[root@ftpserver ~]# rpm -q ncnc-1.84-10[root@ftpserver ~]# nc -lp 1234usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version] [-x proxy_address[:port]] [hostname] [port[s]]讲查看man文档,可见在这个版本中,-l是不能与-s、-p、-z一起使用的,-w参数也会被忽略,所以,正确的用法是:[root@ftpserver tmp]# nc -l 1234四、用在脚本中nc每次启动监听后,都会在客户端连接完成并退出的同时,服务端一同退出。所以,如果需要不断的使用nc进行数据传输,需要在脚本中使用循环。利用nc实现更多的功能,可参考其rpm提供的参考脚本:引用# rpm -qd nc/usr/share/doc/nc-1.10/Changelog/usr/share/doc/nc-1.10/README/usr/share/doc/nc-1.10/scripts/README/usr/share/doc/nc-1.10/scripts/alta/usr/share/doc/nc-1.10/scripts/bsh/usr/share/doc/nc-1.10/scripts/dist.sh/usr/share/doc/nc-1.10/scripts/irc/usr/share/doc/nc-1.10/scripts/iscan/usr/share/doc/nc-1.10/scripts/ncp/usr/share/doc/nc-1.10/scripts/probe/usr/share/doc/nc-1.10/scripts/web/usr/share/doc/nc-1.10/scripts/webrelay/usr/share/doc/nc-1.10/scripts/websearch/usr/share/man/man1/nc.1.gz转载自https://www.jb51.net/article/106898.htm
-
这一期我们聊一聊DemonCAT组网和架构,组网有什么样的要求?被测端配置的要求又是什么样的?Portal 与 Center 端配置要求你知道吗?OK,一起来看看吧。一、组网要求DemonCAT 主要围绕软件故障注入工具,核心是利用 Linux OS 远程连接的基本功能,来实现故障注入过程操作图形化、简单化。DemonCAT分为三部分,从表层到深层分别为DemonCAT Portal(以下简称 Portal)、DemonCAT Center(以下简称Center)以及 DemonCAT Core(以下简称 Core),三部分属于松耦合的关系,上层都不强依赖于下层运行。 Portal是一个 Web 界面,用户利用浏览器即可访问到相关页面,在该 Web 页面上可以方便的录入被测环境、创建故障注入任务、查看支持的故障模式等操作。Center是一个后端的Http服务,它是DemonCAT的核心内容,作为 DemonCAT的大脑存在,主要负责执行故障注入任务、保存所有的操作数据。 Core是一个故障注入的工具包,它是DemonCAT的基础,是不能缺少的部分。它包含了Linux OS与Docker容器等常用的故障注入工具包,它们是基于 Linux OS进行编译得到的程序工具包。DemonCAT Core不依赖于Center与Portal,可以利用命令行进行试用。DemonCAT 三部分的组网图如上图所示,其中 Portal 依赖于 Center 提供接口运 行,Core 与 Center 属于松耦合关系,Core 可单独运行或被集成。二、被测端配置要求Core包含计算产品各种层级的故障注入能力:芯片、CPU、内存、磁盘、网卡以及进程等相关模块的故障模式,大部分故障模式是基于Linux OS进行模拟实现的,小部计算故障注入工具(DemonCAT)技术白书DemonCAT原理和功能分故障模式需要相应的硬件配合才能实现,因此不同的故障模式对被测端的要求会有所变化。 硬件配置Core是运行在Linux OS中的故障注入程序,只要 64 位的 Linux OS 可以在硬件上 运行起来,则Linux OS上就可以运行Core程序。这里给出Ubuntu OS最小要求配置,其它操作系统大致类似:上述表格为通用的基础硬件配置,满足上述配置基本可运行大部分故障注入程序,部分故障注入程序是针对特殊的相关类型硬件进行的故障注入,因此对一些硬件是具有特殊要求的: 计算芯片类故障:计算芯片类的故障注入实现,主要是通过修改芯片之中的寄存器地址,来模拟部分硬件的故障,而寄存器地址在不同的CPU型号里面是不一样的,因此是该类故障注入程序不能一次性满足所有的计算芯片;目前支持的计算芯片为鲲鹏920(Hi1620)。网络类故障:网络类故障是基于当前服务器能够与其它机器网络连通的基础之上进行注入,因此当前服务器必须存在网卡配置(虚拟或物理都可以)。对于网卡的配置无具体要求,目前主要故障是针对网卡的启停、限速、丢包等故障模式进行的模拟,除专门针对指定网卡芯片的故障需要相应网卡芯片外,其余故障对网卡的规格配置基本无要求。 磁盘类故障:磁盘类故障主要是针对磁盘的驱动链路进行的故障注入,这类故障是与硬盘的类型强相关,目前支持的硬盘主要是scsi协议的硬盘。 软件配置Core属于Linux OS下的可执行程序(暂不支持 Windows 操作系统),依赖于Linux OS,当前支持的架构为x86_64或aarch64的常用Linux发行版(需要包含Linux安装时默认安装的一些常用软件)。目前已测试验证支持的发行版包括:EulerOS、计算故障注入工具(DemonCAT)技术白书 DemonCAT原理和功能openEuler、CentOS、Ubuntu OS、Debian OS、RHEL等。网络类与进程类故障存在特殊软件的需求:网络类故障:网络类故障模式主要为破坏网卡接收包的速率、数量以及正确性验证,这一类操作OS已提供了部分工具,Core主要对其进行了封装。因此需要满足存在 net-tools、iptoute2 等网络控制软件包。 进程类故障:进程类故障模式主要通过为指定进程加载动态链接库,从而实现进程资源的消耗或注入,加载动态链接库的方式是利用Linux OS的 GDB依附到指定的进程之中,然后通过 dlopen 函数加载so库。因此需要满足GDB程序存在。三、Portal 与 Center 端配置要求 Portal与Center为传统Web服务的前端与后端,基于故障注入的业务访问量不会很大,主要集中在后台任务运行。 硬件配置:1 核 CPU/1G 内存/20G 硬盘/1M 网络带宽,即可运行 Portal 与 Center。 软件配置:Portal与Center采用跨平台语言编写而成,支持市场主流的操作系统。但建议使用Linux系统,对Portal与Center运行具有较好维护、更高的运行效率。 欢迎大家一起参与讨论哦,下一期我们一起看下DemonCAT的架构原理,敬请期待~
-
漏洞名称:Linux Polkit 权限提升漏洞组件名称:Polkit影响范围:CentOS 6:polkit-0.96-11.el6_10.2CentOS 7:polkit-0.112-26.el7_9.1CentOS 8.0:polkit-0.115-13.el8_5.1CentOS 8.2:polkit-0.115-11.el8_2.2CentOS 8.4:polkit-0.115-11.el8_4.2Ubuntu 21.10 (Impish Indri) < Released (0.105-31ubuntu0.1)Ubuntu 21.04 (Hirsute Hippo) Ignored (reached end-of-life)Ubuntu 20.04 LTS (Focal Fossa) < Released (0.105-26ubuntu1.2)Ubuntu 18.04 LTS (Bionic Beaver) < Released (0.105-20ubuntu0.18.04.6)Ubuntu 16.04 ESM (Xenial Xerus) < Released (0.105-14.1ubuntu0.5+esm1)Ubuntu 14.04 ESM (Trusty Tahr) < Released (0.105-4ubuntu3.14.04.6+esm1)…漏洞类型:本地提权利用条件:1、用户认证:需要攻击者获得一个普通用户权限2、前置条件:恶意文件需要可执行权限3、触发方式:本地综合评价:<综合评定利用难度>:利用难度中等,需要攻击者获取普通用户权限。<综合评定威胁等级>:高危,能造成本地提权。漏洞分析:1、组件介绍Polkit(之前称为 PolicyKit)是一个用于在类 Unix 操作系统中控制系统范围权限的组件。它为非特权进程与特权进程通信提供了一种有组织的方式。也可以使用 Polkit 执行具有提升权限的命令。2、漏洞描述2022年1月26日,监测到一则 Polkit 组件存在本地权限提升漏洞的信息,漏洞编号:CVE-2021-4034,漏洞威胁等级:高危。该漏洞是由于 pkexec 在处理传入参数的逻辑出现问题,导致环境变量被污染,最终交由 pkexec 代码逻辑执行实现客户机权限提升。有普通权限用户的攻击者通过执行漏洞文件,触发越界读写,从而在目标系统上造成权限提升。解决方案:1、如何检测系统版本CentOS 用户可采用如下命令升级到安全版本或更高版本:yum clean all && yum makecacheyum update polkit -y验证修复,通过以下命令可查看 Polkit 是否为安全版本:rpm -qa polkitUbuntu 用户可采用如下命令升级至安全版本或更高版本:sudo apt-get updatesudo apt-get install policykit-1验证修复,通过以下命令可查看 Polkit 是否为安全版本:dpkg -l policykit-12、官方修复建议目前各 Linux 发行版官方均已给出安全补丁,建议用户尽快升级至安全版本,或参照官方说明措施进行缓解,CentOS、Ubuntu 及 Debian 用户可参考以下链接:https://ubuntu.com/security/CVE-2021-4034https://access.redhat.com/security/cve/CVE-2021-4034https://security-tracker.debian.org/tracker/CVE-2021-4034参考链接:https://ubuntu.com/security/CVE-2021-4034https://access.redhat.com/security/cve/CVE-2021-4034https://security-tracker.debian.org/tracker/CVE-2021-4034
-
背景:部分软件需要在系统内核为4KB下才能运行,一般Centos默认的内核是64KB,下文举例系统为CentOS7.6首先通过以下命令查询当前操作系统的pagesize大小getconf -a|grep PAGESIZE得到的结果为65536,则为64KB得到的结果为4096,则为4KB下载kernel源码包并安装依赖,此前需要配置好yum本地源等一些相关源参考下载地址:(http://vault.centos.org/7.6.1810/os/Source/SPackages/ )groupadd mockbuilduseradd mockbuild -g mockbuildwget https://vault.centos.org/7.6.1810/os/Source/SPackages/kernel-alt-4.14.0-115.el7a.0.1.src.rpm注意:这个包需要看当前的操作系统是7.6还是8.2还是其他,同时需要找到对应的内核版本,下载正确的rpm包安装依赖yum -y install gcc bc gcc-c++ ncurses ncurses-devel cmake elfutils-libelf-devel openssl-devel安装rpm包rpm -ivh kernel-alt-4.14.0-115.el7a.0.1.src.rpm安装完成后,rpm构建工程自动部署在/root/rpmbuild/SPECS/root/rpmbuild/SOURCES进入内核版本解压目录cd /root/rpmbuild/SOURCEStar zvf linux-xxxxx.tar.gzcd linux-xxxxx清理内核源目录make mrpropermake menuconfigKernel Features-->Page size (64KB)--> Page size (4KB) 保存 #Page size调整为4K。注释.config文件中的参数CONFIG_SYSTEM_TRUSTED_KEYSvim .config在CONFIG_SYSTEM_TRUSTED_KEYS参数前面添加#,将参数这行注释掉修改.config文件中的参数CONFIG_ARM64_VA_BITS。vim .config修改成下面参数CONFIG_ARM64_VA_BITS_48=yCONFIG_ARM64_VA_BITS=48编译内核make -j 64make modules_installmake install生成系统启动引导配置参数grub2-mkconfig -o /boot/grub2/grub.cfg从ibmc重启机器,选对应的操作系统
-
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:用户账号的添加、删除与修改。用户口令的管理。用户组的管理。一、Linux系统用户账号的管理用户账号的管理工作主要涉及到用户账号的添加、修改和删除。添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。1、添加新的用户账号使用useradd命令,其语法如下:复制代码代码如下:useradd 选项 用户名其中各选项含义如下:代码:-c comment 指定一段注释性描述。-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。-g 用户组 指定用户所属的用户组。-G 用户组,用户组 指定用户所属的附加组。-s Shell文件 指定用户的登录Shell。-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。用户名 指定新账号的登录名。例1:复制代码代码如下:# useradd –d /usr/sam -m sam此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。例2:复制代码代码如下:# useradd -s /bin/sh -g group –G adm,root gem此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。这里可能新建组:#groupadd group及groupadd adm 增加用户账号就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。Linux提供了集成的系统管理工具userconf,它可以用来对用户账号进行统一管理。2、删除帐号如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。删除一个已有的用户账号使用userdel命令,其格式如下:复制代码代码如下:userdel 选项 用户名常用的选项是-r,它的作用是把用户的主目录一起删除。例如:复制代码代码如下:# userdel sam此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。3、修改帐号修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。修改已有用户的信息使用usermod命令,其格式如下:复制代码代码如下:usermod 选项 用户名常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。另外,有些系统可以使用如下选项:代码:-l 新用户名这个选项指定一个新的账号,即将原来的用户名改为新的用户名。例如:复制代码代码如下:# usermod -s /bin/ksh -d /home/z –g developer sam此命令将用户sam的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。4、用户口令的管理用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:代码:passwd 选项 用户名可使用的选项:代码:-l 锁定口令,即禁用账号。-u 口令解锁。-d 使账号无口令。-f 强迫用户下次登录时修改口令。如果默认用户名,则修改当前用户的口令。例如,假设当前用户是sam,则下面的命令修改该用户自己的口令:复制代码代码如下:$ passwdOld password:******New password:*******Re-enter new password:*******如果是超级用户,可以用下列形式指定任何用户的口令:复制代码代码如下:# passwd samNew password:*******Re-enter new password:*******普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。为了系统安全起见,用户应该选择比较复杂的口令,例如最好使用8位长的口令,口令中包含有大写、小写字母和数字,并且应该与姓名、生日等不相同。为用户指定空口令时,执行下列形式的命令:复制代码代码如下:# passwd -d sam此命令将用户sam的口令删除,这样用户sam下一次登录时,系统就不再询问口令。passwd命令还可以用-l(lock)选项锁定某一用户,使其不能登录,例如:复制代码代码如下:# passwd -l sam 新建用户异常:useradd -d /usr/hadoop -u 586 -m hadoop -g hadoop1 Creating mailbox file: 文件已存在删除即可 rm -rf /var/spool/mail/用户名2 useradd: invalid numeric argument ‘hadoop'这是由于hadoop组不存在 请先建hadoop组通过cat /etc/passwd 可以查看用户的passcat /etc/shadow 可以查看用户名cat /etc/group 可以查看 组linux下创建用户(二)二、Linux系统用户组的管理每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。1、增加一个新的用户组使用groupadd命令。 其格式如下:复制代码代码如下:groupadd 选项 用户组可以使用的选项有:代码:-g GID 指定新用户组的组标识号(GID)。-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。例1:复制代码代码如下:# groupadd group1此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。例2:复制代码代码如下:#groupadd -g 101 group2此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。2、如果要删除一个已有的用户组,使用groupdel命令, 其格式如下:复制代码代码如下:groupdel 用户组例如:复制代码代码如下:#groupdel group1此命令从系统中删除组group1。3、修改用户组的属性使用groupmod命令。 其语法如下:复制代码代码如下:groupmod 选项 用户组常用的选项有:代码:-g GID 为用户组指定新的组标识号。-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。-n新用户组 将用户组的名字改为新名字例1:复制代码代码如下:# groupmod -g 102 group2此命令将组group2的组标识号修改为102。例2:复制代码代码如下:# groupmod –g 10000 -n group3 group2此命令将组group2的标识号改为10000,组名修改为group3。4、如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。 例如:复制代码代码如下:$ newgrp root这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。分配权限复制代码代码如下:chown -R hadoop:hadoop /usr/hadoop/让普通用户拥有root的权限1.root登录2.adduser 用户名3.passwd 用户名确定密码4.修改/etc/passwd即可,把用户名的ID和ID组修改成0。
-
Linux中的命令格式为:command [options] [arguments] 中括号表示可选的,即有些命令不需要选项也不需要参数,但有的命令在运行时需要多个选项或参数。options(选项):选项是调整命令执行行为的开关,选项的不同决定了命令的显示结果不同。agruments(参数):参数是指命令的作用对象。3.1 vi/vim文本编辑器,若文件存在则是编辑,若不存在则是创建并编辑文本。命令语法:vim [参数]参数说明:可编辑的文件名。命令示例:编辑名为clusterconfig的xml文本:vim clusterconfig.xml注:vim编辑器有以下三种模式:正常模式:其它模式下按Esc或Ctrl+[进入,左下角显示文件名或为空。插入模式:正常模式下按i键进入,左下角显示–INSERT–。可视模式:正常模式下按v键进入,左下角显示–VISUAL–。退出命令(正常模式下)::wq 保存并退出。:q! 强制退出并忽略所有更改。:e! 放弃所有修改,并打开原有文件。3.2 cd显示当前目录的名称,或切换当前的目录(打开指定目录)。命令语法:cd [参数]参数说明:●无参数:切换用户当前目录。●. :表示当前目录;●… :表示上一级目录;●~ :表示home目录;●/ :表示根目录。命令示例:●切换到usr目录下的bin目录中:cd /usr/bin●切换到用户home目录:cd●切换到当前目录(cd后面接一个.):cd .●切换到当前目录上一级目录(cd后面接两个.):cd .. ●切换到用户home目录:cd ~●切换到根目录下:cd /注:切换目录需要理解绝对路径和相对路径这两个概念。●绝对路径:在Linux中,绝对路径是从/(即根目录)开始的,例如 /opt/software、/etc/profile, 如果目录以 / 就是绝对目录。●相对路径:是以 . 或 … 开始的目录。 . 表示用户当前操作所在的位置,而 … 表示上级目录。例如 ./gs_om 表示当前目录下的文件或者目录。3.3 mv文件或目录改名(move (rename) files)或将文件或目录移入其它位置,经常用来备份文件或者目录。命令语法:mv [选项] 参数1 参数2常用选项:●-b:若需覆盖文件,则覆盖前先行备份。参数说明:●参数1:源文件或目录。●参数2:目标文件或目录。命令示例:●将文件python重命名为python.bak:mv python python.bak●将/physical/backup目录下的所有文件和目录移到/data/dbn1目录下:mv /physical/backup/* /data/dbn13.4 curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具。支持文件的上传和下载,是综合传输工具。命令语法:curl [选项] [URL]常用选项:●-A/–user-agent :设置用户代理发送给服务器;●-C/–continue-at :断点续转;●-D/–dump-header :把header信息写入到该文件中;●-e/–referer:来源网址;●-o/–output:把输出写到该文件中;●-O/–remote-name:把输出写到该文件中,保留远程文件的文件名;●-s/–silent:静默模式。不输出任何东西;●-T/–upload-file :上传文件;●-u/–user <user[:password]>:设置服务器的用户和密码;●-x/–proxy <host[:port]>:在给定的端口上使用HTTP代理;●-#/–progress-bar:进度条显示当前的传送状态。参数说明:●URL:指定的文件传输URL地址。命令示例:●将url(https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo)的内容保存到/etc/yum.repos.d/CentOS-Base.repo文件中。curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo●如果在传输过程中掉线,可以使用-C的方式进行续传。curl -C -O https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo3.5 yumShell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载和安装。命令语法:yum [options] [command] [package ...]常用选项:●-h:查看帮助;●-y:当安装过程提示选择全部为 “yes”;●-q:不显示安装的过程。参数说明:●command:要进行的操作。●package:安装的包名。命令示例:●列出所有可更新的软件清单命令:yum check-update●更新所有软件命令:yum update●列出所有可安裝的软件清单命令:yum list●安装指定的软件:yum install -y libaio-devel flex bison ncurses-devel glibc.devel patch lsb_release wget python33.6 wgetwget是Linux下下载文件的最常用命令。wget支持HTTP,HTTPS和FTP协议,支持自动下载,即可以在用户退出系统后在后台执行,直到下载结束。命令语法:wget [选项] [URL]常用选项:●-c:接着下载没下载完的文件;●-b:启动后转入后台执行;●-P:指定下载目录;●-O:变更下载文件名;●–ftp-user --ftp-password:使用FTP用户认证下载。参数说明:指定的文件下载URL地址。命令示例:●下载openGauss数据库安装文件到当前文件夹:wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/x86/openGauss-1.1.0-CentOS-64bit.tar.gz●使用wget断点续传:wget -c https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.1.0/x86/openGauss-1.1.0-CentOS-64bit.tar.gz3.7 ln为某一个文件在另外一个位置建立一个同步的链接(软硬链接,不带选项为硬链接)。当需要在不同的目录,用到相同的文件时,就不需要在每一个需要要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。命令语法:ln [选项] 参数1 参数2常用选项:●-b --删除,覆盖以前建立的链接;●-d --允许超级用户制作目录的硬链接;●-s --软链接(符号链接)。参数说明:●参数1:源文件或目录。●参数2:被链接的文件或目录。命令示例:●为python3文件创建软链接/usr/bin/python,如果python3丢失,/usr/bin/python将失效:ln -s python3 /usr/bin/python●为python3创建硬链接/usr/bin/python,python3与/usr/bin/python的各项属性相同:ln python3 /usr/bin/python3.8 mkdir创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。命令语法:mkdir [选项] [参数]常用选项:●-p --可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录(递归);●-v --每次创建新目录都显示信息;●-m --设定权限<模式> (类似chmod),而不是rwxrwxrwx减umask。参数说明:需要创建的目录。命令示例:●创建一个空目录:mkdir test●递归创建多个目录:mkdir -p /opt/software/openGauss●创建权限为777的目录(目录的权限为rwxrwxrwx):mkdir -m 777 test3.9 chmod更改文件权限。命令语法:chmod [选项] <mode> <file...>常用选项:●-R, --以递归的方式对目前目录下的所有文件与子目录进行相同的权限变更。参数说明:●mode:权限设定字串,详细格式如下 :[ugoa...][[+-=][rwxX]...][,...],其中,[ugoa…]:u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者);[±=]:+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限;[rwxX]:r 表示可读取,w 表示可写入,x 表示可执行,X表示只有当该档案是个子目录或者该档案已经被设定过为可执行。●file:文件列表(单个或者多个文件、文件夹)。命令示例:●设置所有用户可读取文件 cluterconfig.xml:chmod ugo+r cluterconfig.xml 或 chmod a+r cluterconfig.xml●设置当前目录下的所有档案与子目录皆设为任何人可读写:chmod -R a+rw *数字权限使用格式:●这种使用方式中,规定数字4、2和1表示读、写、执行权限,即r=4,w=2,x=1。例:rwx = 7(4+2+1);rw = 6(4+2);r-x = 5 (4+0+1);r-- = 4(4+0+0);–x = 1(0+0+1);每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :chmod <abc> file...其中,a,b,c各为一个数字,分别代表User、Group、及Other的权限,相当于简化版的chmod u=权限,g=权限,o=权限 file…,而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限。命令示例:●赋予cluterconfig.xml文件可读可写可执行权限(所有权限):chmod 777 cluterconfig.xml●赋予/opt/software/openGauss目录下所有文件及其子目录 用户所有权限组可读可执行权限,其他用户可读可执行权限:chmod -R 755 /opt/software/openGauss3.10 chown利用 chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。只有系统管理者(root)才有这样的权限。使用权限 : root。命令语法:chown [选项] user[:group] file...常用选项:●-c : 显示更改的部分的信息;●-f : 忽略错误信息;●-R : 处理指定目录以及其子目录下的所有文件。参数说明●user : 新的文件拥有者的使用者 ID。●group : 新的文件拥有者的使用者组(group)。●flie:文件。命令示例:●将文件 file1.txt 的拥有者设为omm,群体的使用者dbgrp:chown omm:dbgrp /opt/software/openGauss/clusterconfig.xml●将目前目录下的所有文件与子目录的拥有者皆设为omm,群体的使用者dbgrp:chown -R omm:dbgrp *3.11 ls列出文件和目录的内容。命令语法:ls [选项] [参数]常用选项:●-l --以长格式显示,列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等;●-a --列出文件下所有的文件,包括以".“和”…"开头的隐藏文件 (Linux下文件隐藏文件是以 .开头的,如果存在 … 代表存在着父目录);●-d --列出目录本身而非目录内的文件,通常要与-l一起使用;●-R --同时列出所有子目录层,与-l相似,只是不显示出文件的所有者,相当于编程中的“递归”实现;●-t --按照时间进行文件的排序,Time(时间);●-s --在每个文件的后面打印出文件的大小,size(大小);●-S --以文件的大小进行排序。参数说明:目录或文件。命令示例:以长格式列出当前目录中的文件及目录:ls -l3.12 cp复制文件或者目录。命令语法:cp [选项] 参数1 参数2常用选项:●-f --如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项);●-n --不要覆盖已存在的文件(使前面的 -i 选项失效);●-I --覆盖前询问(使前面的 -n 选项失效);●-p --保持指定的属性(默认:模式,所有权,时间戳),如果可能保持附加属性:环境、链接、xattr 等;●-R,-r --复制目录及目录内的所有项目。参数说明:●参数1:源文件。●参数2:目标文件。命令示例:将home目录中的abc文件复制到opt目录下:cp /home/abc /opt注:目标文件存在时,会询问是否覆盖。这是因为cp是cp -i的别名。目标文件存在时,即使加了-f标志,也还会询问是否覆盖。3.13 rm删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。rm是一个危险的命令,使用的时候要特别当心,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。命令语法:rm [选项] 文件常用选项:●-f --忽略不存在的文件,从不给出提示;●-r --指示rm将参数中列出的全部目录和子目录均递归地删除。参数说明:需要删除的文件或目录。命令示例:●删除文件:rm qwe注:输入rm qwe命令后,系统会询问是否删除,输入y后就会删除文件,不想删除文件则输入n。●强制删除某个文件:rm -rf clusterconfig.log3.14 cat连接文件并在标准输出上输出。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。命令语法:cat [选项] [参数]常用选项:●-E --在每行结束显示$;●-n –由1开始对给所有输出行编号;●-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号;●-v --使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。参数说明:可操作的文件名。命令示例:●显示testfile文件的内容:cat textfile●把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容追加到 textfile3 文档里:cat -b textfile1 textfile2 >> textfile3●向/etc/profile中追加内容(输入EOF表示结束追加):cat >>/etc/profile<<EOF >export LD_LIBRARY_PATH=$packagePath/script/gspylib/clib:$LD_LIBRARY_PATH >EOF注:EOF是end of file的缩写,表示"文字流"(stream)的结尾。"文字流"可以是文件(file),也可以是标准输入(stdin)。在Linux系统之中,EOF是当系统读取到文件结尾,所返回的一个信号值(也就是-1)。感谢阅读。下一篇我们讲继续为大家带来使用虚拟机在CentOS上安装部署openGauss数据库基本操作。
-
apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。apt 命令执行需要超级管理员权限(root)。apt 语法 apt [options] [command] [package ...]options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。command:要进行的操作。package:安装的包名。apt 常用命令列出所有可更新的软件清单命令:sudo apt update升级软件包:sudo apt upgrade列出可更新的软件包及版本信息:apt list --upgradeable升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade安装指定的软件命令:sudo apt install <package_name>安装多个软件包:sudo apt install <package_1> <package_2> <package_3>更新指定的软件命令:sudo apt update <package_name>显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>删除软件包命令:sudo apt remove <package_name>清理不再使用的依赖和库文件: sudo apt autoremove移除软件包及配置文件: sudo apt purge <package_name>查找软件包命令: sudo apt search <keyword>列出所有已安装的包:apt list --installed列出所有已安装的包的版本信息:apt list --all-versions实例查看一些可更新的包:sudo apt update升级安装包:sudo apt upgrade在以上交互式输入字母 Y 即可开始升级。可以将以下两个命令组合起来,一键升级:sudo apt update && sudo apt upgrade -y安装 mplayer 包:sudo apt install mplayer如过不太记得完整的包名,我们可以只输入前半部分的包名,然后按下 Tab 键,会列出相关的包名:以上实例我们输入来 reds,然后按下 Tab 键,输出来四个相关的包。如果我们想安装一个软件包,但如果软件包已经存在,则不要升级它,可以使用 –no-upgrade 选项:sudo apt install <package_name> --no-upgrade安装 mplayer 如果存在则不要升级:sudo apt install mplayer --no-upgrade如果只想升级,不要安装可以使用 --only-upgrade 参数:sudo apt install <package_name> --only-upgrade只升级 mplayer,如果不存在就不要安装它:sudo apt install mplayer --only-upgrade如果需要设置指定版本,语法格式如下:sudo apt install <package_name>=<version_number>package_name 为包名,version_number 为版本号。移除包可以使用 remove 命令:sudo apt remove mplayer查找名为 libimobile 的相关包:apt search libimobile查看 pinta 包的相关信息:apt show pinta列出可更新的软件包:apt list --upgradeable清理不再使用的依赖和库文件:sudo apt autoremove在以上交互式输入字母 Y 即可开始清理。
-
Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定:一、内核参数二、防火墙需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。具体的配置方法如下:一、内核参数设置1、允许Ping设置A.临时允许PING操作的命令为:#echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_allB.永久允许PING配置方法。/etc/sysctl.conf 中增加一行net.ipv4.icmp_echo_ignore_all=1如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的(0表示允许,1表示禁止)。修改完成后执行sysctl -p使新配置生效。2、禁止Ping设置A.临时禁止PING的命令为:#echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_allB.永久允许PING配置方法。/etc/sysctl.conf 中增加一行net.ipv4.icmp_echo_ignore_all=0如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的。(0表示允许,1表示禁止)修改完成后执行sysctl -p使新配置生效。二、防火墙设置注:此处的方法的前提是内核配置是默认值,也就是没有禁止Ping)这里以Iptables防火墙为例,其他防火墙操作方法可参考防火墙的官方文档。1、允许Ping设置iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT或者也可以临时停止防火墙操作的。service iptables stop2、禁止Ping设置iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP到此这篇关于Linux禁止ping或允许ping的设置方法的文章就介绍到这了
-
1、解压软件包的时间大概是在几分钟或几十分钟不等,如果解压时间过短,或者输入解压命令后没有反应,请查看一下软件包是否放置在正确的目录下软件包需要拷贝至“GKit工具解压路径/packages”路径下注意点:进入“GKit工具解压路径/packages”路径,会有一个back_up文件夹,有小伙伴会把软件包放在这个文件夹中,这是错误的。那么就有小伙伴会问,back_up这个文件夹是用来干嘛的呢?在解压软件包之前,back_up文件夹为空,解压软件包后,相应软件包自动拷贝或解压到om、tenant等路径,而且所有的软件包会拷贝到back_up文件夹。如果在安装检查时报错缺少软件包 ,这就可以在back_up文件夹中查看是否存在。2、做了大小网映射,如何启动Gkit工具,如何访问Gkit图形页面?输入命令启动Gkit工具,其中ip填写的是Linux跳板机小网ip地址启动成功后,访问Gkit图形页面:https://ip:port/ 其中ip是Linux跳板机大网ip地址3、安装检查时报错缺少软件包,而在back_up文件夹查看软件包是存在的这种情况下极有可能是跳板机的数据盘空间不足(系统盘只有40G),导致没有将软件包解压好。我们需要做的是给跳板机挂载一块100G的磁盘操作步骤可参考链接:手动分区挂载磁盘注意点:Linux跳板机要求:跳板机CPU、内存规格要求最小为4U8G,推荐提供100G空间。4、如何打包配置好的场景包?需要注意哪些点?将解压出来的文件全部选中打包成zip压缩包注意点:不要修改场景包中文件的名称,包括xml文件和Excel文件的名称;不要修改场景包的名称,即打包为场景包时,采用场景包原有的名称;压缩时注意,仅压缩场景包中的文件,不要压缩文件夹。如果还没懂,请看下列傻瓜操作:(1)全选(2)打包成zip格式5、安装管理中心前,使用lsblk命令查看磁盘挂载情况,以1VM场景下数据面为例。如图所示:场景包中,数据面磁盘挂载情况为:磁盘1:100G,磁盘2:500G登录数据面终端,输入lsblk查看到磁盘挂载情况由图可知,vda:100G;vdb:500G,与场景包中磁盘挂载情况一致。如不一致,这就需要修改场景包中tenant页签和partition页签某些值(这就是另外一个故事了,且听下回分解)6、磁盘挂载与场景包中的不一致,可怎么办?例如:3VM场景下,场景包中数据面3磁盘挂载情况为:磁盘1:100G;磁盘2:660G。而实际磁盘挂载情况是:磁盘1:120G;磁盘2:700G。此时需要修改场景包中对应的参数值(1)tenant页签:磁盘1的大小由100G改成120G,磁盘2的大小改成700G(2)partition页签:修改磁盘对应的挂载点大小7、安装检查时报错,磁盘分区错误,磁盘类型为msdos。管理中心安装,磁盘类型应该为gpt,输入以下命令修改磁盘类型。parted /dev/sdb print freeparted -s /dev/sdb mklabel gpt8、哪些软件包需要放进“Gkit工具/packages”目录下进行解压?软件包清单中会提示需要解压的软件包,一些不需要解压的软件包就不需要放进“Gkit工具/packages”目录下例如,Gkit工具包:GKit_2.1.0_Tool_Any-Any_Pkg-GKit-Any注意:童鞋们,这个软件包不能放进“Gkit工具/packages”目录下,否则会在“恢复软件包”步骤时报错。9、使用远程终端控制软件,以root用户登录某虚拟机,输入的密码是正确的,但无法进入使用华为镜像创建的虚拟机,首先以paas用户登录,后可切换root用户10、不安装Manas服务,在安装准备时报错没有找到“manas-rabbitmq”软件包“manas-rabbitmq”服务与RPA服务有依赖关系,所以需要将“manas-rabbitmq”服务合设具体操作:https://bbs.huaweicloud.com/forum/thread-174992-1-1.html11、OP环境下,创建租户时,需选择时区,那应该要选择什么时区呢?时区选择Asia/Shanghai(UTC-08:00),选择其他时区,运行任务时,执行器会报错。12、查看运行任务的日志,发现执行器运行任务的时间与实际时间不相符定位:创建虚拟机的时间与实际时间不相符解决方法:修改虚拟机的系统时间具体操作:依次输入以下命令ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimell /etc/localtime date -s "时间" clock -w 提示:在安装管理中心前,使用hwclock -r命令查看虚拟机系统时间,如不一致,需修改。
-
这篇文章主要介绍了linux下文本编辑器vim的使用方法,包括复制、粘贴、替换、行号、撤销、多文件操作,需要的朋友可以参考下文本文件的编辑命令:vim1、vim的三种状态模式1)命令模式(默认)备注:命令模式下输入“:q!”可以退出vim。2)可编辑模式(通过命令模式下输入小写“i”进入可编辑模式;按Esc退出至命令模式)备注:小写i,在当前光标处插入;小写a,在当前光标后插入。3)末行模式(通过命令模式下进入,按Esc退出至命令模式)作用:在文件的最后一行执行非文本编辑命令,保存、打开文件,写文件名等。例如“:w”的作用是,填写文件名;例如“:wq”的作用是,填写文件后保存并退出;例如“/”,从上往下查找;例如“?”,从下往上查找;2、vim的基本操作1)打开文件vim 文件名即可打开并进入命令模式。2)编辑文件命令模式下,输入小写i即可进入编辑模式;3)保存文件并退出编辑完成后,按Esc返回命令模式,输入“:w”(没有文件名的话添加文件名);再输入:q即可退出。3、vim的编辑操作(在命令模式下)1)复制操作小写“yy”复制单行;“2yy”复制光标处2行;……“nyy”复制光标出n行。2)粘贴操作小写“p”粘贴到当前光标的下一行;大写“P”粘贴到当前光标的下一行;3)删除操作“dd”删除当前行“2dd”删除光标处当前两行;……4)增行操作open小写“o”,在当前光标处的下一行插入空行;大写“o”,在当前光标处的上一行插入空行; 4、vim的查找替换操作(在末行模式下)1)查找操作作用:查找包含关键字的行;在命令模式下输入“/查找对象”,即可从上往下查找,按n查找(next);在命令模式下输入“?查找对象”,即可从上往下查找,按n查找(next);2)替换操作行替换:s/被替换对象/新对象/gc,提示后按y即完成替换。全文替换:%s/被替换对象/新对象/gc,分别按行提示后按y即完成替换。输入:wq(保存并退出)。5、vim的高级操作1)行号的设置在末行模式下输入“:set nu”即可显示文件的行号;在末行模式下输入“:set nonu”即可关闭显示文件的行号;vi ~/.vimrc2)~/.vimrc的编辑设置 3)多文件的并发操作该操作便于多文件相互复制粘贴等。命令:vim 文件名1 文件名2 文件名3……命令:“:args”在底部显示当前打开的多个文件的名字,【当前文件的名字】;命令:“:next”切换显示下一个文档;命令:“:prev”切换显示上一个文档;命令:“:first”切换显示第一个文档;命令:“:last”切换显示最后一个文档。4)操作的撤销与恢复备注:无论是u撤销,还是ctrl+r恢复,前提要是文件不能执行了保存。小写u:change before(按行,分步骤以时间轴为单位撤销最近的动作)直至already at oldest change(可撤销多步);大写U:仅撤销一步操作;Ctrl+r:change after (按行,分步骤以时间轴为单位恢复被撤销的动作)直至already at oldest change;Ctrl+R:恢复被撤销的,一步到底; linux 下 vi 文本编辑如何复制一行粘贴删除一行数据 在使用vi有时会想直接复制一行数据,然后粘贴一行或者直接删除一行数据复制一行数据的方法把光标放到要复制的一行前面,然后按两下yy字母键然后把光标放到要复制到的地方去,按键盘的p字母键删除一行是把光标移动到要删除的一行上,按两下dd键下面是相关键的说明:x,X : 在一行中,x为向后删除一个字符(相当于del键),X为向前删除一个字符(相当于backspace键)。dd : 删除光标所在的那一整行。ndd : n 为数字。从光标开始,删除向下n列。yy : 复制光标所在的那一行。nyy : n为数字。复制光标所在的向下n行。p,P : p 为将已复制的数据粘贴到光标的下一行,P则为贴在光标的上一行。u : 复原前一个操作CTRL + r : 重做上一个操作。小数点'.': 重复前一个动作。 vim常用命令(删除、复制、粘贴、撤销、查找、插入、光标移动、选择、保存、退出) vim基本操作:选择文本v 从光标当前位置开始,光标所经过的地方会被选中,再按一下v结束。V 从光标当前行开始,光标经过的行都会被选中,再按一下V结束。ctrl+v 从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v结束。ggVG 选中全部的文本,其中gg为跳到行首,V为选中整行,G为末尾删除,复制,粘贴,撤销d 删除 dd 删除整行 ndd 删除n行x 删除一个字符u 撤销上一次操作ctrl+R 反撤销(撤销撤销操作)y复制 (复制到寄存器)p粘贴 (默认从寄存器取出)常用 先是ESCi 光标前插入文本a 光标后插入文本o 在下面另起一行,并使当前模式转为Insert模式O(大写O) 将在当前行的上面另起一行:q 退出 :q! 强制退出:wq 保存并退出ZZ 保存并退出/ 简单搜索 /pp 在文件中搜索pp移动命令$ 将光标移动到行尾 2$ 移动到下一行的行尾 n$ 移动到下n行的行尾^ 将光标移动到当前行第一个非空白字符上0(数字0) 将光标移动到当前行的第一个字符上G 将光标移动到最后一行。 33G 将光标移动到33行gg 跳到第一行 Vim 全选复制粘贴 撤销 回退 操作全部删除:按esc键后,先按gg(到达顶部),然后dG全部复制:按esc键后,先按gg,然后ggyG全选高亮显示:按esc键后,先按gg,然后ggvG或者ggVG单行复制:按esc键后, 然后yy单行删除:按esc键后, 然后dd粘贴:按esc键后, 然后p复制到粘贴板: 全选高亮显示之后,ctrl+shift+c,vim只能粘贴50行的问题:在当前用户主目录编辑~/.vimrc(如果不存在,新建这个文件),添加一行:set viminfo='1000,<500至于为什么要输入输入’1000,这个其实不重要,最主要的是输入<500,它是设置寄存器保存的行数的。即最大值为 500在vim中按u可以撤销一次操作u 撤销上一步的操作Ctrl+r 恢复上一步被撤销的操作注意:如果你输入“u”两次,你的文本恢复原样,那应该是你的Vim被配置在Vi兼容模式了。重做如果你撤销得太多,你可以输入CTRL-R(redo)回退前一个命令。换句话说,它撤销一个撤销。要看执行的例子,输入CTRL-R两次。字符A和它后面的空格就出现了:young intelligent turtle有一个特殊版本的撤销命令:“U”(行撤销)。行撤销命令撤销所有在前一个编辑行上的操作。 输入这些命令两次取消前一个“U”:A very intelligent turtlexxxx 删除veryA intelligent turtlexxxxxx 删除turtleA intelligent用“U”恢复行A very intelligent turtle用“u”撤销“U”A intelligent“U”命令自己改变自己,“u”命令撤销操作,CTRL-R命令重做操作。这有点乱,但不用担心,用“u”和CTRL-R命令你可以切换到任何状态。流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。
-
使用命令查看Linux系统版本、内核版本、CPU型号、硬盘空间、内存信息、网络信息。1、查看系统版本:lsb_release -a2、查看内核版本:uname -a3、查看cpu型号:cat /proc/cpuinfo4、查看硬盘空间情况:df -h5、查看内存信息:free -m 6、查看网络信息:ifconfig常用的查看linux环境信息的命令设进程号为pid,端口号为port。1.CPU占用率命令:top -p pid,%CPU一项,单位为百分比。2.物理内存使用量命令:top -p pid,RES一项,单位为KB。3.虚拟内存使用量命令:top -p pid,VIRT一项,单位为KB。4.进程队列长度命令:top,load average一项,三个值分别代表最近1分钟、5分钟、15分钟进程队列的平均长度。5.打开的socket及其状态命令:netstat -an | grep port,第四列代表源IP,第五列代表目的IP,第六列代表状态(如LISTEN、ESTABLISHED、TIME_WAIT等)。替代命令:ss,需要安装几个内核模块,在连接较多时性能比netstat好很多。安装内核模块命令:insmod /lib/modules/2.6.18-164.el5/kernel/net/ipv4/inet_diag.koinsmod /lib/modules/2.6.18-164.el5/kernel/net/ipv4/tcp_diag.koinsmod /lib/modules/2.6.18-1.2.0.0-xen/kernel/net/ipv4/inet_diag.koinsmod /lib/modules/2.6.18-1.2.0.0-xen/kernel/net/ipv4/tcp_diag.ko6. I/O使用率命令:iostat -x,%util一项,单位为百分比。7.磁盘读写速率命令:iostate -k,kB_read/s表示磁盘每秒读出多少KB数据,kB_wrtn/s表示磁盘每秒写入多少KB数据。8.最近使用的系统调用及其耗费时间命令:strace -f -tt -T -p pid,第一项代表系统调用名称,最后一项代表该调用耗费的时间,单位为秒。9.打开的文件描述符数量命令:ls /proc/pid/fd | wc -l。10.进程地址空间命令:pmap -d pid。11.环境变量命令:cat /proc/pid/environ。12.进程各模块的内存使用情况命令:cat /proc/pid/smaps。13.进程状态信息命令:cat /proc/pid/status,State代表进程状态(运行、睡眠、僵尸等),SleepAVG代表进程睡眠时间的比例,Tgid代表线程组号,PPid代表父进程号,FDSize代表文件描述符的最大个数,VmSize代表进程虚拟地址空间的大小,VLck代表进程锁住的物理内存的大小,锁住的物理内存无法交换到磁盘,VmRSS代表进程正在使用的物理内存的大小,VmData代表进程数据段的大小,VmStk代表进程在用户态的栈的大小,VmExe代表进程拥有的可执行虚拟内存的大小,代码段,不包括使用的库,VmLib代表映射到进程地址空间的库的大小,以上单位均为KB,SigQ代表待处理信号的数量,SigBlk代表被阻塞的信号,SigIgn代表被忽略的信号,SigCgt代表被捕获的信号。14.进程的线程数量命令:ls /proc/pid/task | wc -l。15.启动该进程的命令行命令:cat /proc/pid/cmdline。16.列出当前系统打开了哪些文件以及分别由哪个进程打开命令:sudo lsof -n17.使程序主动生成core dump文件命令:gdb -p pid -batch -ex "generate-core-file"
-
Linux中sed命令功能强大,今天我们就来详细介绍如何在Linux中使用sed命令进行替换,具体来说分为以下几种情况:1)如何替换第一次搜索到的内容;2)如何在全文中替换所有能匹配的内容;3)如何替换某一行的内容;4)如何替换多行的内容;5)如何将sed替换结果保存到原文中;6)如何同时使用多个sed替换条件;7)如何使用正则表达式。1、替换第一次搜索到的内容,命令如下:sed 's/要替换的内容/新的内容/' 要处理的文件如下图,将第一个小写的b替换成了大写的B。2、在全文中替换所有能匹配的内容,命令如下:sed 's/要替换的内容/新的内容/g' 要处理的文件如下图,将所有的小写的b替换成了大写的B。3、替换某一行的内容,命令如下:sed '行号c 新的内容' 要处理的文件如下图,将第二行内容替换成了“new test!”4、替换多行的内容,命令如下:sed '起始行号,终止行号c 新的内容' 要处理的文件如下图,将第二行到第六行内容替换成了“new test!”5、上述这些替换命令都只是将替换的结果显示在屏幕上,如果想替换的结果直接保存到原文中,就只需加上-i参数。如下图所示。sed -i 's/要替换的内容/新的内容/g' 要处理的文件6、多个sed命令也可以用-e参数连接起来,一次性完成多个操作。如下图,首先将小写a替换成了大写A,然后又将第二行内容替换成了“new test!”7、再有,sed命令中替换与被替换的部分都允许使用正则表达式。比如,以下命令将所有数字替换成了“好的”。sed 's/[0-9]/好的/g' testFile2.txt 注意:在输入Linux命令前,一定要将输入法切换成英文半角符号状态。从Windows电脑上复制命令到Linux Terminal中执行时,也有可能遇到格式不正确造成的命令执行错误,这时建议手动重新输入字符,如果觉得输入麻烦,可以只删除命令中的空格和最后一个字符后,重新输入空格和最后一个字符。
-
1091. 如何创建脚本? (1)登录ManageOne的租户面,依次点击 资源->脚本资源->创建脚本。预置的脚本资源可供用户学习参考。 (2)添加脚本参数:参数配置中的参数名称与脚本内容中的参数名称保持一致,填写脚本参数的内容会被传入脚本中,进行执行。2. 如何使用脚本? (1)依次点击 系统->服务构建->创建->资源编排图形化设计器。 (2)在左树菜单栏的脚本库选择已创建好的脚本,拖拽至画布区。用配置绑定资源(OS::Heat::MultipartMime)将搭载脚本的脚本配置(OS::Heat::SoftwareConfig)资源连接至云服务器上。 (3)鼠标点击脚本,查看右面板,点击配置可查看创建脚本时配置的脚本参数,这些参数可在创建和申请服务时填写。 (4)脚本的参数也可在代码区进行查看。3. 问题定位集锦 (1)脚本编写完,通过Cloud-Init或CloudBase-Init执行后,未实现预期效果。 可能原因:脚本语法有错误或逻辑有问题。 解决办法:手工执行脚本。 Linux下脚本位于/var/lib/cloud/instance/scripts目录。 Windows下可以查看C:\Program Files\Cloudbase Solutions\CloudBase-Init\log\cloudbase-init.log找到脚本内容单独保存成文件,并根据脚本第一行为脚本文 件设置相应的后缀名。 (2)在Windows上将Linux中测试好的命令按照要求写成脚本文件,传到ECS中并授予执行权限执行或使用sh命令执行,命令无法正常执行。 可能原因:Linux采用的是“换行”(LF,Line Feed),而Windows采用的是“回车”(CR,Carriage Return)和“换行”(LF,Line Feed),由于多了CR符导致脚本不能正常执行。 解决办法: 使用较高版本的Notepad++打开脚本文件,在界面右下角“Windows(CR LF)”处点右键,选择“转为 Uninx 格式”,此时右下角会变为“Unix(LF)”,保存脚本,重新上传后执行。 (3)脚本静态检查逻辑正确,但执行过程中脚本后面的语句总是报文件不存在,脚本执行完后,手工检查,原来提示不存在的文件是存在的,且可以执行。 可能原因:脚本中有的命令是异步执行的,后续脚本在上述脚本未执行完就开始执行,当时需要的文件还没有创建出来。 解决办法:在异步执行的语句后一行加上wait命令,待异步执行的命令完成后再执行后面的语句。如果需要指定一个超时时间,也可以结合sleep命令使用。(4)使用服务构建器自动化注入并执行脚本时,cloudinit注入失败。 可能原因: ① 虚拟机无法ping通metadata服务器地址169.254.169.254 解决办法: <1>登录FSP的后台 <2>进入/etc/neutron/others/cfg_template路径 <3>修改neutron-dhcp-agent.json文件,添加"meta_data_force":“True” <4>重新启动neutron ② 脚本内容有问题 解决办法:检查脚本的语法、逻辑和格式等问题 例如:linux脚本第一行有空行,导致脚本无法执行。 注意:linux脚本第一行必须是#!/bin/bash -v windows脚本第一行必须是rem cmd 这两行用来告诉操作系统使用哪个程序来执行脚本,如果没有这两行,或者第一行是 空行或者其他语句,则会执行失败。(5)使用脚本自动化安装软件时,软件未安装成功 可能原因: ① 软件未下载到虚拟机上 解决办法:在虚拟机上ping 软件下载地址,保证网络可达 ② 软件包的版本不一致 解决办法:安装软件时做足准备工作,注意安装软件版本与安装环境是否匹配 ③ 脚本对安装包的处理有问题 解决办法:安装包可能是zip包结果用错了解压指令,修改脚本
-
1.yum介绍 yum,全称Yellow dog Updater,Modified,是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。2.yum源 yum源是本地下载软件需要的一个软件仓库,可以是本地仓库也可以是在线仓库,仓库里是RPM包。 yum源的目录在/etc/yum.repos.d/#cat /etc/yum.repos.d/CentOS-Base.repo[base]name=CentOS-$releasever - Basebaseurl=http://mirror.centos.org/altarch/$releasever/os/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64 #released updates[updates]name=CentOS-$releasever - Updatesbaseurl=http://mirror.centos.org/altarch/$releasever/updates/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64 #additional packages that may be useful[extras]name=CentOS-$releasever - Extrasbaseurl=http://mirror.centos.org/altarch/$releasever/extras/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-aarch64enabled=1 #additional packages that extend functionality of existing packages[centosplus]name=CentOS-$releasever - Plusbaseurl=http://mirror.centos.org/altarch/$releasever/centosplus/$basearch/gpgcheck=1enabled=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 更新源:现在国内的源对应arm架构支持不够,很多都只有x86架构的源。可以使用华为云内部源,速度较快。更新源的步骤如下:备份原来的源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak下载repo文件,指向华为源curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.myhuaweicloud.com/repo/Centos-altarch-7.repo清除原有缓存yum clean all更新源yum makecache 添加源:比如安装kubernetes的时候,使用kubernetes源vim /etc/yum.repos.d/kubernetes.repo添加如下内容:[kubernetes]name=Kubernetesbaseurl=http://yum.kubernetes.io/repos/kubernetes-el7-aarch64enable=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpghttps://packages.cloud.google.com/yum/doc/rpm-package-key.gpg保存后退出,更新源yum makecache 3.yum的使用3.1查看仓库中的软件包和版本信息yum listyum list nginx3.2查看详细信息yum info nginx3.3安装软件在公网仓库搜索安装,-y参数代表忽略提示yum install nginx -y安装本地rpm包yum install rabbitmq-server-3.7.4-1.el7.noarch.rpm -y3.4查看仓库信息yum repolist
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签