Linux
文章平均质量分 52
郭同学如是说
在这里亟需一个宏大的的沉思。
展开
-
一个基于 LKM 的 Linux 内核级 rootkit 的实现
rootkit是一种恶意软件,攻击者可以在获得 root 或管理员权限后安装它,从而隐藏入侵并保持root权限访问。rootkit可以是用户级的,也可以是内核级的。关于rootkit的详细介绍可以参考https://en.wikipedia.org/wiki/rootkit有许多技术可以实现rootkit,本项目使用的是通过编写LKM(Linux kernel module)并hook系统调用表的方式。这种方式具有诸多优点,比如rootkit作为内核模块可以动态的加载和卸载,大多数rootkit也都是通原创 2023-02-27 15:13:55 · 1295 阅读 · 3 评论 -
查看Linux系统信息的几种方法
uname命令$ uname -aLinux metalts 5.4.0-84-generic #94~18.04.1-Ubuntu SMP Thu Aug 26 23:17:46 UTC 2021 x86_64 x86_64 x86_64 GNU/Linuxlsb_release$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.6 LTSRelea原创 2022-04-21 20:25:09 · 337 阅读 · 0 评论 -
命令行自动纠错命令:fuck
thefuckthefuck是github上一个项目,可纠正命令中的错误打开链接查看神奇效果安装与配置以我所在的Ubuntu服务器为例:sudo apt install thefuckvim ~/.bashrc#文件末加入下面语句,给thefuck取别名fuckeval "$(thefuck --alias fuck)"#使配置生效source ~/.bashrc官方推荐的安装方法:On macOS or Linux, you can install The Fuck via原创 2022-04-21 17:18:51 · 893 阅读 · 0 评论 -
watch命令实现Linux监控
watch命令简介watch命令可以重复的执行命令,并且将其输出在命令行上,可以方便的实现一些简单的监控 watch -n 1 cat 1.txt上面的这个命令输出1.txt的内容,-n 1表示每隔一秒钟执行一次命令右侧shell执行命令,左侧是watch的输出我们可以看到先是输出了wdnmd,然后输出了nmsl,至此,我们很简单的实现了一个不断变化的文件的监控,但它是实用的——比如监控一个动态变化的log日志另一个小例子:在所有进程中查找是否有node关键字的进程,每隔三秒刷新一次 wa原创 2022-04-21 16:26:20 · 1793 阅读 · 0 评论 -
一文搞懂 Linux TTY
TTY的历史TTY全称TeleTYpewriter,也即是电传打字机,它通过两根电缆连接计算机,一根用于向计算机发送指令,一根用于接收计算机的输出,输出结果是打印在纸上的由于历史原因, Linux保留了TTY,上述的输入和输出两个电缆,可以简单的认为是键盘输入和显卡输出tty和stty命令tty命令返回当前的终端名字,1表示可以通过Ctrl+Alt+F3得到$ tty/dev/pts/1stty是对tty进行设置的命令,s表示set - Display all settings for原创 2022-04-19 18:18:54 · 4624 阅读 · 0 评论 -
shell脚本转化为二进制文件
shc简介shc,全称 shell script compiler,可以将shell脚本编译为二进制可执行文件,从而达到隐藏源代码的目的shc的工作过程分为两步:将shell脚本转化为C语言源码将C语言源码进行编译链接得到二进制文件shc网站安装方式sudo apt-get install shc使用vim hello.sh写入:#!/bin/bashecho "hello,world~"$ shc -f hello.sh$ lshello.sh hello.sh原创 2022-04-18 20:32:32 · 5573 阅读 · 0 评论 -
Linux句柄相关全局变量及其函数调用链分析
一切皆文件在 Linux 中,一切皆文件。许多操作,比如文件打开、进程创建、管道创建、新的网络连接创建,甚至计时器创建(timerfd _ create)和事件生成(eventfd) ,都会增加 nr_files文件描述符与inode的关系file-maxfile-max定义了系统级别的、所有进程的打开文件限制This file defines a system-wide limit on the number of open files for all process原创 2022-04-18 16:54:30 · 477 阅读 · 0 评论 -
Linux硬链接与软连接
硬链接不同的文件名可以指向相同的 i-node 节点,也将这些名称称为链接,有时也称之为硬链接(用来与符号链接作区别)比如下面的1、2两个文件名可以指向相同的inode结点811212支持硬链接的系统:原生 LinuxUNIX 文件系统均支持硬链接微软的 NTFS 文件系统支持硬链接不能为目录创建硬链接利用 ln 命令为一个已存在的文件创建新的硬链接zaralts@metalts:~/C$ echo wdnmd > 1zaralts@metalts:~/C$ ls -lito原创 2022-04-16 16:33:56 · 867 阅读 · 0 评论 -
Linux UTS namespace 的简单实现
UTS 简介UTS是Linux命名空间的一种,可以用作主机名的隔离代码实现command()函数返回*Cmd结构体,参数sh表示被 fork 出来的新进程内的初始命令为shtype Cmd struct { Path string Args []string Env []string Dir string Stdin io.Reader Stdout io.Writer Stderr io.Writer ExtraFiles []*原创 2022-04-15 22:49:39 · 844 阅读 · 0 评论 -
文件描述符与inode的关系
文件描述符Linux中,文件描述符(File descriptor,fd),是表示指向文件的引用的抽象化概念,在形式上是一个非负整数,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符下面open系统调用返回一个文件描述符给fdfd = open(pathname, flags, mode)常见的几个文件描述符:STDIN,文件描述符:0;标准输入,默认从键盘读取信息;STDOUT,文件描述符:1;标准输出,默认将输出结果输出至终端;STDERR,文件描述符:2;标准原创 2022-04-09 22:10:18 · 2229 阅读 · 0 评论 -
Linux输入输出重定向
标准输入、标准输出、标准错误STDIN,文件描述符:0;标准输入,默认从键盘读取信息;STDOUT,文件描述符:1;标准输出,默认将输出结果输出至终端;STDERR,文件描述符:2;标准错误,默认将输出结果输出至终端常用重定向命令将命令的标准输出重定向到文件中SomeCommand > SomeFile.txt 将命令的标准输出重定向、追加到文件中SomeCommand >> SomeFile.txt将命令的标准输出、标准错误重定向到文件中Some原创 2022-04-08 11:50:58 · 273 阅读 · 0 评论 -
fork炸弹分析
Linux系统创建进程的方式十分简单,只需写一行fork();即可。因此,很容易在Linux环境下使用fork系统调用不断复制自身从而引发拒绝服务攻击Unix环境下的fork炸弹:(){ :|: & };:: 是函数名| 是管道命令,将前者的输出作为输入给后者,在这里每次调用:函数会执行:两次Unix中&表示将函数后台运行,换句话说,解除两函数的关联,当前面的:函数被终止,并不会杀死后面的:函数;表示函数定义结束后面的:是第一次的函数调用C语言实现#include &原创 2022-04-08 10:45:09 · 2317 阅读 · 0 评论 -
fork 系统调用解析
fork:一次调用,两个返回值fork 函数用于在Linux中创建新进程,英文本意是叉子,fork系统调用就像是叉子一样,寓意一分为二,一次调用,两个返回值fork执行后发生了什么?fork函数执行后,后将存在两个进程,且每个进程都会从 fork()的返回处继续执行新的子进程几近于对父进程的翻版:子进程获得父进程的栈、数据段、堆和执行文本段的拷贝执行 fork()之后,每个进程均可修改各自的栈数据、以及堆段中的变量,而并不影响另一进程父进程的fork返回值为子进程的pid,子进程的fork返原创 2022-04-07 23:33:36 · 1762 阅读 · 0 评论 -
Ubuntu 一键安装 docker
安装https://get.docker.com/有自动安装的脚本,因此下载到本地安装即可$ curl -fsSL get.docker.com -o get-docker.sh$ sudo sh get-docker.sh --mirror Aliyun原创 2022-04-02 18:23:37 · 2926 阅读 · 0 评论 -
解决apt命令报错:Could not get lock /var/lib/dpkg/lock
执行apt-get指令遇到一个诡异的报错: Could not get lock /var/lib/dpkg/lock原因:有别的apt进程正在执行看一下apt有关的进程:执行命令:sudo rm /var/lib/dpkg/lock再次查看进程:发现相关进程已被kill之后,apt指令正常使用...原创 2022-04-02 16:16:31 · 288 阅读 · 0 评论 -
分析Linux二进制文件的常用命令:xxd readelf file objdump
本文讲解了以下基本命令的使用:xxdreadelffileobjdumpxxd该命令将二进制文件以16进制表示$ xxd a.out | lessreadelf输出 elf 文件的有关信息-a 输出全部-h 输出elf 文件头file鉴别文件类型objdupmobjdump -f filename输出文件相关信息objdump -d filename输出文件反汇编之后的结果...原创 2022-03-31 19:03:00 · 923 阅读 · 0 评论 -
使用 strace 分析Linux系统调用
系统调用简介进程通过系统调用使用内核服务。系统调用会进入内核,让内核执行服务然后返回一些常见的系统调用:系统调用描述fork()创建进程exit()结束当前进程wait()等待子进程结束exec(filename, *argv)加载并执行一个文件open(filename, flags)打开文件,flags 指定读/写模式read(fd, buf, n)从文件中读 n 个字节到 bufwrite(fd, buf, n)从 buf 中原创 2022-03-31 18:31:54 · 542 阅读 · 0 评论 -
查看、管理 Linux 进程的几个常见命令
pidofpidof命令罗列出给定名字对应的进程id罗列出bash的进程id号:$ pidof bash2674500 2950 2454杀死bash相关所有进程: $ kill $(pidof name)pstreepstree 命令将正在运行的进程以树形式输出命令:pstree [option]option为-p:同时输出进程号option为user:输出特定用户的进程示例:$ pstree -p root输出root用户的进程树,同时输出其进程号ps输出所有原创 2022-03-27 14:44:43 · 1047 阅读 · 0 评论 -
【Linux入门】tldr:man手册的极佳替代
man 手册:大而全一定是好事吗?man 手册提供了极佳的快速查询功能,当我们不熟悉某个指令的时候,可以通过在命令行输入 man + command 查询在线手册。下面是man的一个介绍:【Linux入门】一文看懂 Linux man 手册但是,对于某些命令,man 的内容实在太多,比如,我们输入 man gcc | wc -l来统计gcc的man手册行数,结果如下:zarathustra@VM-24-6-ubuntu:~$ man gcc | wc -ltroff: <standard i原创 2022-02-23 17:04:26 · 1180 阅读 · 0 评论 -
【Linux常用指令】grep命令常见用法
grep命令简介Grep用来搜索文本字符串的命令行命令,有如下的常见使用情景:在文件中搜索字符串(pattern)配合管道使用,将其他Linux命令的输出通过管道传输到grepgrep的四个字母对应如下英文:G:global searchRE:regular expressionP:print out the linecut 是将一行讯息当中,取出某部分我们想要的,而 grep 则是分析一行讯息, 若当中有我们所需要的信息,就将该行拿出来命令格式 grep [OPTION...原创 2022-01-20 18:52:02 · 1986 阅读 · 0 评论 -
【Linux入门】使用scp和filezilla远程传输文件
scp简介很多时候我们需要在两个主机之间传送文件,比如为了完成ssh连接,需要在远程服务器上放置.pub的公钥文件。scp 命令可在本地与远程主机之间复制文件或目录,达到我们的需求scp命令格式$ scp [-r] [[user1@]hostname1:]file1 ... [[user2@]hostname2:]file2举两个实际生活中遇到的例子:当我们想从本地传输文件到远程。欲传输文件为当前目录下1.txt文件,远程服务器ip为11.22.33.44,远程用户为zara,要传输到的文件目原创 2022-01-17 19:17:13 · 1492 阅读 · 0 评论 -
【计算机教育中缺失的一课】Tmux快速入门
tmux简介——优雅永不过时tmux是个非常强大的终端工具,不仅可以提供终端的多路复用,同时可以将会话(session)与窗口分离,大幅提升生产力在终端写命令的时候,经常碰到这几种状况需要多个终端命令行同时共同工作,但是:根本没有自带分屏(比如Ubuntu),只能多开几个terminal终端窗口自带的分屏非常难用,即是是软粉吹上天的新版Windows terminal,分屏也非常拉胯需要ssh远程连接服务器,但是若丢失了与远程系统的连接(比如突然断网或者卡死),那么一切服务都会被关闭原创 2022-01-04 13:45:18 · 854 阅读 · 0 评论 -
【计算机教育中缺失的一课】ssh远程连接主机
什么是sshSecure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接SSH最常见的用途是远程登录系统,利用SSH来传输命令行界面和远程执行命令非常常用举个例子,不管你使用Windows系统还是macOS,都可以使用ssh远程连接Linux服务器,从而在你自己的主机上,运行Linux系统环境,或者完成文件的互传比如笔者有一台Ubuntu的云服务器和一台装了Debi原创 2022-01-17 11:36:57 · 1066 阅读 · 0 评论 -
【Linux入门】一文看懂 Linux man 手册
前言man是Linux的一个非常强的的命令,它的全称为manual(手册)当我们遇到忘记的指令,可以直接通过man指令来获得提示当我们输入man grep,就会获得以下界面,通过输入/text,可以快速的匹配到text,获得对应信息接下来,让我们对man的内容进行解析man文档的内容结构section类别上图中,我们可以看到左上角的GREP(1), 这表示,此时所显示的section类别为第1种类别:可执行的程式或是shell 指令除了第一种类别外,还有别的类别1:可执行的程式或是原创 2022-01-10 11:53:09 · 3553 阅读 · 0 评论 -
【计算机教育中缺失的一课】Vim快速入门
vim简介——编辑器之神vim是一个文本编辑器,被称为编辑器之神,但与之强大功能所对应的,是陡峭的学习曲线很多人学习vim都是从入门到放弃,之后便将其束之高阁。但是掌握之后,你将感受到vim哲学与效率的巨大提升在学习之前需要明确的几点:学习vim在开始是痛苦的只有多用才会熟练克服的一切困难都是值得的快速入门下面是vim的一个快速使用示范:在命令行中键入vim 1.cpp,会直接进入vim的普通模式(Normal Pattern),此时是无法输入文字的按下i,便进原创 2022-01-04 13:47:22 · 328 阅读 · 0 评论