linux系统常用操作命令
发布时间:2025-05-13 19:12:27 发布人:远客网络
一、linux系统常用操作命令
别不信!掌握好这20条Linux基础命令,让你的操作效率直接双倍
系统管理相关命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last。网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup。
使用这些基本命令会帮助新手们完成Linux的日常任务,由于它们的使用频率如此至高,所以我更乐意称他们为Linux命令之王!让我们开始学习这10条Linux基本命令吧。
linux常用命令(基础)man对你熟悉或不熟悉的命令提供帮助解释eg:manls就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行。
让我们开始学习这10条Linux基本命令吧。sudo这条命令的意思是“以超级用户的身份执行”,是SuperUserDo的简写,它是新手将要用到的最重要的一条Linux命令。
以下是一些常用的Linux命令行操作:文件和目录操作:ls:列出当前目录下的文件和目录。cd:切换目录。mkdir:创建新目录。rm:删除文件或目录。cp:复制文件或目录。mv:移动文件或目录。文件查看和编辑:cat:查看文件内容。
1、往期学员就业率,学员口碑,综合看看机构的发展情况。想要学习Linux技术,不知道去哪里好,可以来老男孩教育。
2、个人感觉达内和华清远见都还可以,清华远见是听他们说的,我公司有这个教育机构学完来上班的。
3、Linux底层内核/驱动开发嵌入式Linux开发等。Linux下的数据库方向Linux下的数据库方向主要包括Mysql、oracle以及windows下的SQLServer及DB2等的管理。
4、areFedora9%ofdeploymentsareGentoo多数Linux开发者使用的是Ubuntu的桌面版,倾向在开发生产时使用相同的系统,并且还能使用很多工具。
1、linux系统常用操作命令如下:ls:全拼list,功能是列出目录的内容及其内容属性信息。cd:全拼changedirectory,功能是从当前工作目录切换到指定的工作目录。cp:全拼copy,其功能为复制文件或目录。
2、杀死进程killvi命令vi/vim是linux最常用的文本编辑器,功能非常强大。
3、linux基本操作命令如下:查看内核版本:uname-a。控制台-图形界面:init5或者startx。图形界面-控制台:init3或者直接注销。如何查看ip地址:ifconfig。配置ip:ifconfigeth0ip地址。
4、linux常用命令:pwd命令该命令的英文解释为printworkingdirectory(打印工作目录)。输入pwd命令,Linux会输出当前目录。cd命令cd命令用来改变所在目录。
5、linux命令在系统中有两种类型:内置Shell命令和Linux命令。模式切换由图形到字符#logout或init3。由字符到图形界面init5。退出或exit或ctrld。注销CtrlAltBackspace。
6、Linux系统中grep命令是一种强大的文本搜索工具,grep允许对文本文件进行模式查找。如果找到匹配模式,grep打印包含模式的所有行。grep一般格式为:在grep命令中输入字符串参数时,最好引号或双引号括起来。例如:grep‘a’txt。
linux常用命令如下:查看内核版本:uname-a。控制台-》图形界面:init5或者startx。图形界面-》控制台:init3或者直接注销。如何查看ip地址:ifconfig。配置ip:ifconfigeth0ip地址。
du-显示目录和文件大小1ping-测试网络连接ifconfig/ip-配置或显示网络接口信息这20个命令可以完成大多数Linux文件操作、进程管理和网络配置任务。熟练掌握它们是成为Linux高手的基础。
您可以使用ls命令使用以下变体:ls-R还将列出子目录中的所有文件ls-a将显示隐藏的文件ls-al将列出文件和目录以及详细信息,例如权限,大小,所有者等。cat命令cat(连接的缩写)是Linux中最常用的命令之一。
linux常用命令:pwd命令该命令的英文解释为printworkingdirectory(打印工作目录)。输入pwd命令,Linux会输出当前目录。cd命令cd命令用来改变所在目录。
linux基本操作命令如下:查看内核版本:uname-a。控制台-图形界面:init5或者startx。图形界面-控制台:init3或者直接注销。如何查看ip地址:ifconfig。配置ip:ifconfigeth0ip地址。
以下是一些常用的Linux命令:ls:列出当前目录下的文件和目录。cd:改变当前目录。pwd:显示当前目录的路径。mkdir:创建新目录。rm:删除文件或目录。cp:复制文件或目录。mv:移动文件或目录。touch:创建新文件。
linux常用命令如下:查看内核版本:uname-a。控制台-》图形界面:init5或者startx。图形界面-》控制台:init3或者直接注销。如何查看ip地址:ifconfig。配置ip:ifconfigeth0ip地址。
su:用户切换格式:su[选项][使用者]切换至root用户时,建议使用-选项,这样可以讲root的环境变量和工作目录同时带入。如图,可以看到suroot与su-root的环境变量是不同的。
在终端直接输入命令名并按回车,会显示命令语法和简要说明。在终端输入man命令名,会显示对应命令的手册页,里面包含详细说明、参数和示例。
apt-get:Debian和Ubuntu系统上的软件包管理器。yum:RedHat、CentOS等系统上的软件包管理器。pacman:ArchLinux上的包管理器。基础编程:gcc:编译C/C++程序。make:自动化构建工具。gdb:调试程序。
安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last。文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln。
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup。学习linux注意事项Linux严格区分大小写。Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘。
Linux系统常用的基本命令入门篇基础命令Linux的进入与退出系统进入Linux系统:必须要输入用户的账号,在系统安装过程中可以创建以下两种帐号:root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。
cd命令:这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。
二、Microsoft visual c++弹窗
适用于 Linux的 Windows子系统中的 Visual Studio Code服务器使用本地 WebSocket WebSocket连接与远程 WSL扩展进行通信。网站中的 JavaScript可以连接到该服务器并在目标系统上执行任意命令。目前该漏洞被命名为CVE-2021-43907。
本地 WebSocket服务器正在监控所有接口。如果允许通过 Windows防火墙,外部应用程序可能会连接到此服务器。
本地 WebSocket服务器不检查 WebSocket握手中的 Origin标头或具有任何身份验证模式。浏览器中的 JavaScript可以连接到该服务器。即使服务器正在监控本地主机,也是如此。
我们可以在特定端口上生成一个Node Inspector示例,它还监控所有接口。外部应用程序可以连接到它。
如果外部应用程序或本地网站可以连接到这些服务器中的任何一个,它们就可以在目标计算机上运行任意代码。
Visual Studio Code库是不断更新的。我将使用一个特定的提交(b3318bc0524af3d74034b8bb8a64df0ccf35549a)。
$ git clone $ git reset--hard b3318bc0524af3d74034b8bb8a64df0ccf35549a
我们可以使用 Code(lol)来导航源代码。事实上,我已经在 WSL中为这个漏洞创建了具有相同扩展名的概念验证。
Visual Studio Code在 WSL内以服务器模式运行,并与 Windows上的代码示例对话(我称之为代码客户端)。这使我们可以在 WSL中编辑文件和运行应用程序,而不需要运行其中的所有内容。
可以通过 SSH和容器在远程计算机上进行远程开发。GitHub Codespaces使用相同的技术(很可能通过容器)。
1.打开一个WSL终端示例,在Windows上的代码中应该可以看到远程WSL扩展;
2.在 WSL中运行code/path/to/something;
3.如果未安装代码服务器或已过时,则会下载它;
5.你可能会收到一个 Windows防火墙弹出窗口,用于执行如下所示的可执行文件:
这个防火墙对话框是我执行失败的原因。出现该对话框是因为 VS Code服务器想要监控所有接口。
从我信任的Process Monitor开始:
4.我运行代码(例如,Windows Terminal.exe)的终端示例中运行Add process and children to Include filte。
经过一番挖掘,我发现了 VSCODE_WSL_DEBUG_INFO环境变量。我只是在 WSL中将 export VSCODE_WSL_DEBUG_INFO=true添加到~/.profile。运行服务器后我们会得到额外的信息。
运行 Wir.shark并捕获loopback接口上的流量。然后我再次在 WSL中运行代码。这次可以看到两个 WebSocket握手。
在 Wireshark中捕获的 WebSocket连接
该运行中的服务器端口是63574,我们也可以从日志中看到。在 Windows上的代码客户端中打开命令面板(ctrl+shift+p)并运行> Remote-WSL: Show Log。
最后一行有端口:在 上打开本地浏览器。我们还可以看到从 Windows上的 Code客户端到服务器的两个单独的 WebSocket连接。
服务器是位于/src/vs/server/remoteExtensionHostAgentServer.ts#L207的 RemoteExtensionHostAgentServer的一个示例。
它被 createServer在同一个文件中使用,我们可以使用 Code(lol)找到它的引用并追踪到 remoteExtensionHostAgent.ts(同一目录)。
可以根据注释查看 main.js内部。
打开文件,看到服务器可以从传递给main.js的参数中获得主机和端口。
没有 IP地址传递给脚本,我认为这就是为什么服务器监控所有有趣的事情。port=0可能告诉服务器使用临时端口,此信息来自同一目录中的 wslServer.sh。
每次看到本地 WebSocket服务器时,都应该检查谁可以连接到它。
WebSocket连接不受同源策略约束,浏览器中的 JavaScript可以连接到本地服务器。
WebSockets从握手开始,在跨源资源共享或 CORS的上下文中它始终是一个“简单”的GET请求,因此浏览器不需要预先请求就可以发送它。
可以快速创建一个尝试连接到特定端口上的本地WebSocket服务器的测试页面,将它托管在某个远程位置(例如,S3存储桶)并在计算机上打开它。如果连接成功,就可以继续操作了。
我还检查了 Burp,在 Burp Repeater中创建了 WebSocket握手。将 Origin标头修改为 。如果响应具有 HTTP/1.1 101交换协议,那么就可以继续了。
注意,这只对本地主机服务器有影响。这里的服务器也对外公开,攻击者不受浏览器约束。它们可以直接连接到服务器并提供任何 Origin标头。
接下来是查看 Wireshark中的流量,右键点击之前的WebSocket握手GET请求,然后选择 Follow> TCP Stream。我们将看到一个带有一些可读文本的屏幕。关闭它,只会看到这个进程的数据包,这允许我们只关注这个进程。
你可能会问为什么我关闭了仅包含消息内容的弹出窗口,因为没有用。根据 RFC6455,从客户端到服务器的消息必须被屏蔽。这意味着它们与一个 4字节的密钥(也随消息一起提供)进行了异或运算。Wireshark在选择时取消屏蔽每个数据包,但有效载荷在初始进程弹出窗口中显示为屏蔽。所以我们将看到纯文本的服务器消息,而客户端消息被屏蔽并出现乱码。如果你点击单个消息,Wireshark就会显示有效载荷。
我花了几天时间对协议进行逆向工程。后来,我意识到只能在/src/vs/base/parts/ipc/common/ipc.net.ts中看到协议的源代码。
来自服务器的第一条消息是 KeepAlive消息。
在协议定义中,我们可以看到不同的消息类型。
在/src/vs/platform/remote/common/remoteAgentConnection.ts中,它在代码的其他部分被称为 OKMessage和heartbeat。
客户端在/src/vs/platform/remote/common/remoteAgentConnection.ts的connectToRemoteExtensionHostAgent中处理此问题。客户端(Windows上的代码)发送这个包,它是一个KeepAlive和一个单独的认证消息。
最初,我认为长度字段是 12个字节而不是 4个字节,因为其余的字节总是空的。然后我意识到只有常规消息使用消息 ID和 ACK字段,而且我只看到了不规则的握手消息。
注意:在 2021-11-09更新之前(commit b3318bc0524af3d74034b8bb8a64df0ccf35549a)客户端没有发送数据。但是,使用此提交,我们仍然可以在没有此密钥的情况下发送消息并且它会起作用。这是我们给服务器签名的内容,以检查连接到正确的服务器。
服务器已经签名了我们在前一条消息中发送的数据,并用它自己的数据请求进行了响应。
客户端验证签名的数据,以检查它是否是受支持的服务器。当创建我们的客户端时,可以简单地跳过。
使用options.signService.validate方法,然后就会得到/src/vs/platform/sign/node/signService.ts。
vsda是一个用 C++编写的 Node原生插件,将 Node原生插件视为共享库或 DLL。该插件位于 的私有存储库中,根据的说法,直到2019年左右,它都是一个NPM包。
它与 VS Code客户端和服务器捆绑在一起:
C:\Program Files\Microsoft VS Code\resources\app\node_modules.asar.unpacked\vsda\build\Release\vsda.node
服务器(WSL):~/.vscode-server/bin/{commit}/node_modules/vsda/build/Release/vsda.node。
我找到了,并通过一些实验找到了如何使用它创建和签名消息。
1.用msg1= validator.createNewMessage("1234")创建一个新消息,输入至少4个字符。
2.使用signed1= signer.sign(msg1)进行签名。
3.使用 validator.validate(signed1)对其进行验证,响应为“ok”。
需要注意的是,如果你创建了新消息,则无法再验证旧消息。在源代码中,每条消息都有自己的验证器。
Linux版本有符号,大小约为 40 KB。把它放到 IDA/Ghidra中,应该就可以开始了。
我花了一些时间,想出了这个伪代码。可能不太正确,但可以让你大致了解此签名的工作原理。
1.用当前时间+ 2*(msg[0])初始化 srand,它只会创建 0到 9(含)之间的随机数;
2.从许可证数组中附加两个随机字符;
3.从 salt数组中附加一个随机字符;
仅从许可证数组中选择前 10个位置的字符,它总是 rand()% 10,但salt数组翻了一番。
salt数组的前 32个字节(查找 Handshake::CHandshakeImpl::s_saltArray)是:
我从来没有真正检查过我的分析是否正确,不过这无关紧要,知道如何使用插件签名消息,这就足够了。
接下来,客户端需要签名来自服务器的数据并将其发送回来,以显示它是一个“合法”的代码客户端。
提交应该匹配服务器的提交哈希。这不是秘密。这可能是最后一个稳定版本提交(或最后几个之一)。这只是检查客户端和服务器是否在同一版本上。它也可以在 :{port}/version上找到,你的浏览器 JavaScript可能无法看到它,但外部客户端没有这样的限制。
signedData是对我们在前面消息中从服务器获得的数据进行签名的结果。
Args是此消息中最重要的部分,它可以告诉服务器在特定端口上启动一个 Node Inspector示例。
break:启动 Inspector示例后中断。
Env:传递给检查器示例进程的环境变量及其值的列表。
Node Inspector示例可用于调试 Node应用程序。如果攻击者可以连接到你计算机上的此类示例,那么攻击就成功了。2019年,Tavis发现 VS Code默认启用了远程调试器。
整个设置旨在允许 Windows上的代码客户端在 WSL、容器或 GitHub代码空间中进行远程开发。这意味着它可以在远程计算机上做任何想做的事情。
因此,如果网站可以连接到你本地的 WebSocket服务器并绕过 DRM,它就可以模拟代码客户端。它可以在你的系统上远程执行代码,并且不需要 Node Inspector示例。
到目前为止,我们已经找到了两种利用该系统的方法:
生成并连接到 Node Inspector示例;
模拟代码客户端并使用自定义协议与远程计算机交互;
让我们看看前面消息中的参数,/src/vs/server/remoteExtensionHostAgentServer.ts在服务器上处理它们。
IRemoteExtensionHostStartParams接口类似于我们之前看到的 JSON对象:
_updateWithFreeDebugPort检查端口是否空闲,如果没有,它将尝试接下来的10个端口。最后一个空闲端口存储在startParams.port中。
选择的端口被发送回客户端,所以我们知道去哪里:
最后,它在/src/vs/server/extensionHostConnection.ts中调用con.start(startParams);。
这看起来很复杂,让我们来分析一下:
1.Node Inspector示例将监听 0.0.0.0:debugPort,这很危险,如果用户接受 Windows防火墙对话框,它将在外部可用;
2.我们也可以注入 Inspector的环境变量;
3.removeDangerousEnvVariables方法不是安全过滤器,只是删除 DEBUG、DYLD_LIBRARY_PATH和 LD_PRELOAD环境变量(如果存在)以防止崩溃。
它可以用来调试Node进程。有一些客户端和库支持这一点,但通常,我使用Chromium内置的专用节点DevTools(chrome|edge://inspect)。
连接到 Inspector示例后,我们可以打开控制台并运行 require('child_process').exec('calc.exe');。尽管我们使用的是wsdl,但它仍然有效。
浏览器中的 JavaScript无法连接到 Inspector示例,客户端使用另一个 WebSocket连接与示例对话。但是,我们需要知道调试器会话 ID。
浏览器中的 JavaScript可以发送此 GET请求,但由于 SOP(响应没有 Access-Control-Allow-Origin标头)而无法看到响应。其他客户端则没有这个限制,因为检查器在外部可用,我们可以从外部连接到它。
现在,我创建了一个简单的概念验证:
1.打开一个网站并输入端口(我们可以扫描它,但手动输入它会更快)。
2.网站中的 JavaScript完成握手。
3.我使用/sign API创建了一个 Node应用程序,这样就可以使用 vsda插件。
4.一旦生成Node Inspector示例,第二个 API就会被 debugPort调用。
5.使用 chrome-remote-interface库的 Node应用程序连接到 Inspector示例并运行 calc。
你可以通过以下链接看到源代码:
创建客户端并使用协议连接到服务器的代码位于 VS Code GitHub存储库中,这需要大量的复制/粘贴和解析,我只花了几个小时。
如果要创建一个快速的概念验证,应该满足一些假设:
2.从外部连接到Node Inspector示例;
查找本地 WebSocket端口并不难,从浏览器扫描本地服务器并不是什么新鲜事。服务器也可以从外部使用,因此我们不受那里的浏览器约束。
Chrome限制不起作用,因为 WebSocket服务器需要一个网络服务器来处理握手。我也很好奇 WebSocket节流是 Chrome特定的保护还是 Chromium的一部分。
有趣的是,Chrome浏览器有一个保护机制,可以防止恶意行为者暴力破解 WebSocket端口,它在第 10次尝试后开始节流。不幸的是,这种保护很容易被绕过,因为扩展的 HTTP和 WebSocket服务器都在同一个端口上启动。这可用于通过向 img标签添加 onload处理程序来检查特定本地主机端口上的图片是否存在来强制所有可能的本地端口。
也就是说,这是一个开发环境,用户可能整天都在 WSL中开发并且从不关闭他们的浏览器选项卡,因此如果他们打开我们的网站,我们就有可能找到它。
连接到Node Inspector示例是另一回事,我们无法从浏览器执行此操作,因此我们需要我们的服务器可以访问受害者的计算机。
第二种利用方法(模拟代码客户端)没有这些限制,因为浏览器可以与本地服务器通信并执行所有操作。它只需要我们对协议进行逆向工程并找出要发送的正确消息。
当你收到 WebSocket升级请求时,请根据许可名单检查 Origin标头。代码客户端在该标头中发送 vscode-,以便我们可以使用它来操作。
参考及来源:
三、学习Linux的步骤是怎样的
1、首先,要学Linux编程,你得会用Linux,也就是得在命令行环境下生存下来。什么叫生存下来呢?就是我现在给你一台主机,键盘,显示器啥的,然后给你一个服务器版的Linux系统的光盘或者其他什么安装盘,你去把这台主机用起来。什么叫用起来呢?你平常用Windows电脑干啥,你现在还用这台电脑干啥。新建文件啊,查看文件,编辑文件,保存文件,复制,移动,删除,打包,解压,联网,下载个什么东西啊等等基本操作你得会。还有软件怎么安装,不仅要熟悉apt-get和yum,还有给你源码的软件怎么安装你得会,另外要熟悉Linux下的文件系统,每个目录是干啥的,目录下的文件是干嘛的,插入一个U盘,如何挂载这个U盘,操作U盘下的文件你得会啊。这个看一本书就行了,《鸟哥的Linux私房菜-基础篇》,记得是基础篇,记得安装Linux系统自己操作一遍,还有一本是服务器篇,你既然是要学Linux编程开发,那就不用看服务器架设篇了。做完这一步,你可以开发了。
2、Linux下开发,两种基本语言,C和C++咯,至于其他人要说Python,Java,Ruby啥的不讨论,因为就讨论Linux下的开发,什么是Linux开发呢?就是利用Linux的API进行开发咯,首先你得会C语言或者C++语言啊,这个去看丹尼斯的《C程序设计语言》,注意是丹尼斯的,C++的就去看《Essential C++》或者《C++ Primer》,然后在Linux下的程序开发,Linux的API是遵循POSIX标准的,自行谷歌什么叫POSIX。Linux下程序开发几大块,文件操作,这个很重要,你要知道Linux下的一个思想叫一切皆文件,可见文件读写多重要了。I/O模型,五大I/O模型,阻塞,非阻塞,复用,信号驱动和异步I/O,环环相扣丝丝相连,概念和操作都要仔细琢磨,最重要的当属复用,就是select,poll和epoll,面试笔试就问这个东西,要知道他们的适用范围和优缺点。进程和线程,包括进程和线程的概念和区别,进程和线程的建立,同步,通信,互斥等等。网络编程,就是socket编程,Linux编程,这个学不好等于啥都没学,这个估计还得了解一下TCP/IP协议,编程方面主要是那几步,申请socket,bind,listen,accept几步,要熟悉种常见的服务器模型,进程池线程池方式的,多进程方式的,复用方式的,最重要的是复用方式的,这部分可以先只写服务器,测试直接用Telnet就好了,加快速度么。其余的就是数据库,这个东西不属于Linux,但是还得会,要不然啥都做不了,看那本《MySQL必知必会》,当然深入的话还得找本专业的书细细看。这个时候就可以真刀真枪的去干点有意思的事了,比如写个终端下的类似于QQ的软件啊,包括服务器和客户端啊,慢慢的增加并发数,比如可以同时支持五千人在线啊,文件传输啊等等。然后学学Qt,熟悉一下图形界面,可以把你的终端下的QQ完全改成图形界面下的。估计到这个时候,你差不多在Linux下进行像样的开发了吧。在这个过程的学习中,相信你已经学会Makefile的编写啊,编译啊,链接啊等等一些细枝末节的东西了,还得反思一下把零散的东西串一串,要系统化。
3、接下来就是继续深入了,Linux为什么这么多人用,好处在哪里,你得去稍微的看看内核源码啊,内核的进线程调度啊,我告诉你,Linux内核的一个链表都够你研究好几节课的。哦,这个时候,数据结构啥的又得翻出来加强一下了不是,计算机网络啥的也得看看,操作系统原理啥的也得看看呢不是,把这些东西放在这里是合适的,前面让你知其然,知道怎么编程怎么做,现在要知其所以然了不是。
4、在学习的过程中,要不断积累和了解最新的东西,最起码要知道个概念,比如分布式,大数据,云计算,机器学习,计算机视觉,JIT等等,形成知识链,这样不会导致你最后不知道学啥。有个建议,一定要学一下Python,一定要学一下Python,一定要学一下Python,重要的事情说三遍。它能极大的提高你的工作效率,也能和C/C++结合在一起用,很nice的语言。
5、最后推荐几本书(前面的包含在内):
6、《Linux C编程一站式学习》宋劲杉写的
7、《Linux高级程序设计》华清远见的