Linux基础

2024-10-27 132 10/27

Linux基础

文件管理

创建空文件

touch newfile 创建一个名为"newfile"的文件

Linux基础

删除文件

rm newfile 删除一个名为"newfile"的文件

Linux基础

新建目录

mkdir newdir 创建一个名为"newfile"的目录

Linux基础

删除目录

rmdir newdir 删除一个名为"newfile"的目录

Linux基础

重命名文件

mv www.txt ww.txt 将www.txt文件重命名为ww.txt

Linux基础

移动文件

mv ww.txt ww 将ww.txt文件移动到ww目录下面

Linux基础

拷贝文件

cp www.txt wwww.txt 将www.txt文件复制一份放到当前目录

Linux基础

软链接

介绍

软链接也叫符号链接,它是一个特殊的文件,这个文件包含了另一个文件或目录的路径名。可以把软链接看作是一个指向其他文件或目录的 “快捷方式”。它本身有自己独立的 inode,存储的是目标文件或目录的路径信息

语法

ln -s [目标文件或目录路径] [软链接文件名]

示例

ln -s /kali/user/file.txt /home/kali/soft_link.txt

软链接本身并不包含实际的文件内容,它只是指向目标文件。

软链接可以跨越文件系统,因为它只是记录了目标文件的路径,而不是直接关联目标文件的 inode。

软链接有自己独立的 inode。它所指向的目标文件有自己单独的 inode。例如,创建一个软链接soft_link.txt指向file.txtsoft_link.txt的 inode 与file.txt的 inode 是不同的。

当通过软链接访问文件并进行修改时,实际上是对目标文件进行修改。如果目标文件被移动或删除,软链接就会失效(成为一个悬空链接),除非重新建立指向新位置的链接。例如,如果file.txt被移动到其他位置,soft_link.txt如果不更新路径就无法正确访问文件。

Linux基础

ls -liah --文件详细查看命令

发现他们的inode是不一样的

Linux基础

对链接文件的写入就是对源文件的写入

Linux基础

硬链接

介绍

硬链接是文件系统中的多个文件名指向同一个物理文件(即 inode)。可以理解为给文件的物理存储位置取了多个名字。在 Linux 文件系统中,每个文件都有一个对应的 inode(索引节点),它存储了文件的元数据,如文件的大小、权限、所有者、时间戳等信息,同时也记录了文件内容存储的磁盘块位置。硬链接实际上是在目录中创建了一个新的目录项,这个目录项的 inode 号与被链接文件的 inode 号相同。

语法

ln [源文件] [硬链接文件名]

示例

ln /home/user/file.txt /home/user/hard_link.txt

由于硬链接指向的是同一个物理文件,所以对任何一个硬链接文件进行修改,实际上都是对同一个文件内容进行修改。例如,通过file.txt写入数据后,在hard_link.txt中查看文件内容,会发现内容是同步更新的,因为它们是同一个文件

硬链接不能跨越文件系统,因为不同的文件系统有独立的 inode 编号体系。

软链接有自己独立的 inode。它所指向的目标文件有自己单独的 inode。例如,创建一个软链接soft_link.txt指向file.txtsoft_link.txt的 inode 与file.txt的 inode 是不同的。

硬链接没有源文件不能创建,软链接没有源文件可以创建

硬链接和其对应文件的inode是一样的

Linux基础

搜索文件

  1. find 命令

    • 功能:它是一个功能强大且非常灵活的文件搜索工具。可以根据文件的名称、类型、大小、权限、所有者、所属组、修改时间等各种属性来查找文件。

    • 基本语法find [搜索路径] [搜索条件] [操作]

      find . -name "test.txt"

      Linux基础

      在当前目录及其子目录中查找名为test.txt的文件,“.” 表示当前目录,-name是用于指定文件名的搜索条件,双引号中的内容是要查找的文件名。

      find ~ -mtime 2 -ls | sort -k9 -k10 | more

      • ~:这是一个快捷方式,表示当前用户的主目录。例如,对于用户user~通常指向/home/user

        • -mtime 2:这是find命令的一个时间选项。-mtime用于根据文件的修改时间来查找文件。参数2表示查找修改时间距离现在正好是两天的文件。如果想查找在过去两天内(包括两天)修改过的文件,可以使用-mtime - 2;如果想查找修改时间超过两天的文件,可以使用-mtime +2

        • -ls:这是find命令的一个动作选项。它会以类似ls -l命令的长格式显示找到的文件的详细信息,包括文件类型、权限、硬链接数、所有者、组、大小、修改时间和文件名等内容。

      • sort -k9 -k10部分

        • sort命令:用于对文本行进行排序。

        • -k9 -k10-k选项用于指定排序的关键字。-k9表示以每行的第 9 个字段作为第一个关键字进行排序,-k10表示以每行的第 10 个字段作为第二个关键字进行排序。在find -ls输出的长格式信息中,第 9 个字段是文件大小,第 10 个字段是修改时间。所以这个命令实际上是先按照文件大小排序,文件大小相同的情况下,再按照修改时间排序。

      • more部分

        • more命令:用于分页显示文本内容。当find命令找到的文件信息较多时,more命令可以让用户逐页查看这些信息,按回车键可以逐行查看,按空格键可以翻页。

      Linux基础

      find . -type f -iname '*.sh' -mmin -30 -ls

      • .:表示当前目录,是查找操作开始的路径起点。也就是说,查找范围是当前目录以及它下面的所有子目录。

      • -type f-typefind命令的一个选项,用于指定要查找的文件类型。这里的f表示普通文件,即排除了目录、设备文件、符号链接等其他类型的文件,只查找普通的文本文件、二进制文件等这类常规意义上的文件。

      • -iname '\*.sh'-iname也是find命令的选项,它类似于-name,但-iname在匹配文件名时不区分大小写。'*.sh'是一个通配符模式,*表示任意字符序列,所以-iname '*.sh'的作用是匹配文件名以.sh结尾的文件,无论文件名中的字母是大写还是小写。例如,它可以匹配test.shTEST.SHaBc.sh等文件。

      • -mmin -30-mminfind命令用于根据文件的修改时间来查找文件的选项。-30表示查找在过去 30 分钟内被修改过的文件。如果是-mmin +30,则表示查找修改时间超过 30 分钟的文件;如果是-mmin 30,则表示查找修改时间刚好是 30 分钟之前的文件。

      • -ls:这是find命令的一个动作选项。它会以类似ls -l命令的长格式显示找到的文件的详细信息,包括文件类型、权限、硬链接数、所有者、组、大小、修改时间和文件名等内容。

      Linux基础

      find / -user root -type f -perm -o=w -name '*.sh' 2>/dev/null

      • /:表示根目录,是整个查找操作的起始路径,意味着要在整个文件系统(从根目录开始,包含其下所有子目录)中进行查找。

      • -user root-userfind命令的一个选项,用于指定文件的所有者。这里-user root表示只查找属于root用户的文件。

      • -perm -o=w-permfind命令用于根据文件权限来查找文件的选项。-o=w表示查找具有其他用户(除了文件所有者和所属组用户之外的用户)可写权限的文件。这里的-o表示 “其他用户”(英文为 “others”),=w表示可写权限。

      • -name '\*.sh'-namefind命令用于指定文件名模式的选项。'*.sh'是一个通配符模式,其中*表示任意字符序列,所以-name '*.sh'的作用是匹配文件名以.sh结尾的文件。例如,它可以匹配test.shscript.sh等文件。

      • 2>/dev/null:这是一个输出重定向操作。在 Linux 中,文件描述符2代表错误输出。>是重定向符号,/dev/null是一个特殊的设备文件,它会丢弃写入其中的任何数据。所以2>/dev/null的作用是将命令执行过程中可能产生的所有错误输出都重定向到/dev/null,使得在终端上看不到这些错误信息,只显示正常的查找结果(如果有的话)。

      Linux基础

      Linux基础

    • 按文件类型搜索:使用-type选项可以按文件类型进行搜索。例如,要查找当前目录下所有的目录,可以使用find. -type d;要查找所有的普通文件,可以使用find. -type f。文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)、符号链接(l)、套接字(s)和命名管道(n)等。

    • 按文件大小搜索:通过-size选项来实现。例如,要查找大小大于 10MB 的文件,可以使用find. -size +10M。这里的 “+” 表示大于,“-” 表示小于,没有符号表示等于。单位可以是b(字节)、k(千字节)、M(兆字节)、G(吉字节)等。

    • 按修改时间搜索:使用-mtime(修改时间)、-atime(访问时间)或-ctime(文件状态改变时间)选项。例如,要查找在过去 7 天内修改过的文件,可以使用find. -mtime -7

    Linux基础

  2. locate 命令

    • 功能:该命令用于在整个文件系统中快速定位文件。它通过查询一个预先建立的数据库(这个数据库是由updatedb命令定期更新的)来查找文件,因此查找速度通常比find命令快。

    • 基本语法locate [文件名或部分文件名]。例如,要查找包含test这个关键词的文件,可以使用locate test

    • 注意事项:由于它依赖于数据库,所以如果刚刚创建或移动了一个文件,而数据库尚未更新,可能会找不到该文件。在这种情况下,需要先运行updatedb命令来更新数据库。

    Linux基础

  3. which 命令

    • 功能:主要用于查找命令的可执行文件的位置。它会在环境变量PATH所指定的目录路径中查找指定的可执行文件。

    • 基本语法which [可执行文件名]。例如,要查找python可执行文件的位置,可以使用which python。这个命令在需要确定某个命令是从哪个目录执行的时候非常有用,特别是当系统中有多个同名的可执行文件位于不同的目录中时。

      Linux基础

  4. whereis 命令

    • 功能:它用于查找指定文件(包括可执行文件、源代码文件和帮助手册文件)的位置。它会在一些特定的目录(如/bin/sbin/usr/bin/usr/sbin/usr/local/bin等)中进行搜索。

    • 基本语法whereis [文件名]。例如,要查找gcc文件的位置,可以使用whereis gcc。它会返回gcc的二进制文件、源代码文件和帮助手册文件的位置(如果存在的话)。

    Linux基础

用户账号信息位置

/etc/passwd (存储用户信息)

/etc/shadow (存贮用户与哈希密码)

组账号

cat /etc/group

添加用户

useradd newuser

  • 当使用这个简单的命令时,系统会按照默认设置为用户创建一个家目录(通常在/home目录下,例如/home/newuser),并为用户分配一个唯一的用户 ID(UID)和组 ID(GID)。系统还会根据默认的配置文件(如/etc/login.defs)来设置用户的其他属性,如密码过期时间等。

  • 添加用户后,新用户是没有密码的,需要使用passwd命令来设置密码。例如,对于刚刚添加的用户newuser,可以使用命令passwd newuser

  • 然后系统会提示输入新密码两次,以确认密码设置。在输入密码时,出于安全考虑,密码不会显示在屏幕上。

Linux基础

禁用账号

sudo passwd -l username 禁用用户为username密的账号

  • sudo是用于以超级用户(root)权限执行命令

  • passwd是用于操作用户密码的工具

  • -lpasswd命令的一个选项,用于锁定(lock)用户账户

  • username是要锁定账户的用户名。

Linux基础

chage -E 1990-01-01 kali 设置某个账户过期的时间(起到禁用账户的作用)

  • -Echage命令的一个选项,用于指定账号的过期日期(Expire date)。

  • 1990 - 01 - 01是设置的过期日期,格式为YYYY - MM - DD

  • kali是要修改账号过期时间的用户名。

  • Linux基础

passwd -S username

  • passwd是用于管理用户密码相关操作的工具,

  • -Spasswd命令的一个选项,代表 “status”(状态),

  • username是要查看其密码状态的用户名。

Linux基础

文件系统权限

Linux系统中一切皆文件

查看权限

ls -la /etc/passwd

  • -lals命令的选项组合

  • -l表示以长格式(long format)列出文件信息

  • -a表示列出所有文件,包括隐藏文件(在 Linux 中,以 “.” 开头的文件是隐藏文件)

一般使用选项 -liah 文件的详细信息就都会展现出来

Linux基础

更改文件所有者

chown root file

  • chown是一个用于更改文件或目录所有者的命令。

  • chown root file这个命令中,root是新的所有者,file是要更改所有者的文件名。

  • 这意味着执行这个命令后,文件file的所有者将被更改为root用户。

Linux基础

修改文件权限

两种表达与操作

sudo chmod u=rwx,g+rw,o-r file

  • u=rwx

    • u代表文件的所有者(user)。

    • rwx分别表示读(read)、写(write)、执行(execute)权限。这意味着将文件所有者的权限设置为拥有对文件的读、写、执行全部权限。

  • g+rw

    • g代表文件所属的组(group)。

    • +rw表示在组当前已有的权限基础上,增加读(read)和写(write)权限。也就是说,不管组之前对该文件有什么权限,现在要确保组拥有读和写的权限。

  • o-r

    • o代表其他用户(others),即既不是文件所有者也不属于文件所属组的其他用户。

    • -r表示移除其他用户的读权限。所以其他用户将不再拥有对该文件的读权限。

Linux基础

chmod 400 file 通过数字模式(绝对模式)来设置指定文件file的权限

  • 读权限(r)对应二进制位的值为 4(即 2^2)

  • 写权限(w)对应二进制位的值为 2(即 2^2) 读写: 4+2 =6

  • 执行权限(x)对应二进制位的值为 1(即 2^0) 读写执行 : 4+2+1 =7

  • 对于文件所有者(user):

    • 数字 “4” 对应的权限组合是读权限。因为 4 = 2^2,也就是只拥有读权限(r),没有写(w)和执行(x)权限

  • 对于文件所属组(group):

    • 数字 “0” 表示没有任何权限。即文件所属组的成员对文件既不能读,也不能写,更不能执行

  • 对于其他用户(others):

    • 同样,数字 “0” 表示其他用户对文件没有任何权限,既不能读,也不能写,更不能执行

Linux基础

日志信息

系统日志

ls -l /var/log

  • /var/log 是系统日志文件所在目录。

Linux基础

认证信息日志

sudo tail -3 /var/log/auth.log

  • tail命令表示查看文件末尾部分

  • -3显示文件最后三行末尾部分

  • auth.log文件(在基于 Debian 和 Ubuntu 的系统中)

  • secure.log文件(在基于 Red Hat 和 CentOS 的系统中)

last

Linux基础

lastlog

Linux基础

这两个命令都可以对用户认证信息进行查看

二进制

who /var/log/wtmp | tail -5

  • who命令用于显示当前登录的用户信息

  • /var/log/wtmp是一个二进制的日志文件,记录了系统登录与注销的信息

Linux基础

dmesg

  • dmesg是一个在 Linux 系统中用于查看内核环形缓冲区(kernel ring buffer)消息的命令。

  • 信息包括设备的初始化情况、硬件检测结果、驱动程序加载信息、系统错误和警告等诸多重要内容

  • 帮助用户了解系统硬件状态和内核的运行情况

  • -c选项:清除内核环形缓冲区中的消息。例如,dmesg -c会清除当前缓冲区中的所有消息。这个选项在需要重新开始记录消息或者在测试场景下希望清除之前的旧消息时比较有用。

  • -n选项:设置控制台日志级别。例如,dmesg -n 1会将控制台日志级别设置为只显示紧急(emergency)消息,这样可以减少输出的信息量,只关注最关键的系统问题。通常日志级别数字越小,显示的消息越紧急,数字范围从 0(紧急)到 7(调试)。

  • -w--follow选项:实时查看内核环形缓冲区中的消息更新。这类似于tail -f命令对于普通文件的作用。当系统正在运行并且可能会有新的消息产生时,使用dmesg -w可以实时看到新产生的内核消息,比如在插入或拔出硬件设备、系统服务出现新的问题等情况时能够及时获取信息。

Linux基础

systemd 日志相关命令

journalctl

  • journalctl是一个用于查询和查看系统日志的强大工具,主要用于 systemd 日志管理

  • 这些日志信息记录了系统启动、运行过程中的事件,包括服务的启动 / 停止、错误消息、用户登录等多种内容。

  • 按时间范围查看日志:

    • --since--until选项:可以用于查看特定时间范围内的日志。例如,journalctl --since "2024-11-04 17:30:00"会显示从 2024 年 11 月 4 日 17:30:00 开始的日志,journalctl --until "2024-11-05 10:00:00"则会显示截至 2024 年 11 月 5 日 10:00:00 的日志。这对于排查在某个特定时间段内发生的系统问题非常有用,比如系统在某个特定时间出现故障,可以通过查看这个时间段的日志来寻找线索。

  • 按服务或单元查看日志:

    • -u--unit选项:用于查看特定系统服务或单元的日志。例如,journalctl -u sshd可以查看sshd(SSH 服务)的日志,方便排查与该服务相关的问题,如 SSH 连接失败、登录异常等情况。如果想知道为什么 SSH 服务无法启动或者为什么用户无法通过 SSH 登录,查看sshd的日志是一个很好的入手点。

  • 查看特定优先级(日志级别)的日志:

    • -p--priority选项:可以筛选出特定优先级的日志。日志优先级从 0(紧急 - emerg)到 7(调试 - debug)。例如,journalctl -p 3journalctl --priority err会显示错误(error)级别及以上优先级的日志,这有助于快速定位系统中的严重问题,因为它过滤掉了一些信息性(如info级别)和调试性的日志,只关注可能导致系统故障或功能异常的错误消息。

  • 实时查看日志更新:

    • -f--follow选项:类似于tail -f对于普通文件的功能,用于实时跟踪日志的更新。当系统正在运行并且可能会产生新的日志时,如正在调试一个服务或者监测系统的实时状态,使用journalctl -f可以让你即时看到新产生的日志记录,对于及时发现和解决问题很有帮助。例如,当你对一个网络服务进行故障排除,并且希望看到在进行一些操作(如重新启动服务、进行连接尝试等)后产生的新日志时,journalctl -f就非常方便。

    Linux基础

存储管理

内存使用量

free -m

  • free命令本身用于显示系统内存(包括物理内存和交换空间)的总量、已使用量、空闲量等信息

  • -m选项是让输出结果以兆字节(MB)为单位进行显示

Linux基础

硬盘使用量

df -hT

  • df -hT是一个用于查看文件系统磁盘空间使用情况的命令。其中df是 “disk free” 的缩写

  • -h选项表示以人类可读(human - readable)的格式显示信息

  • -T选项用于同时显示文件系统类型

Linux基础

文件或目录大小

sudo du ./* -hsc

Linux基础

  • du是 “disk usage” 的缩写,用于估算文件或目录占用的磁盘空间大小。

  • .*(当前目录下的所有文件和目录):

    • du命令中,./表示当前目录,*是通配符,表示匹配当前目录下的所有文件和目录。这意味着命令会对当前目录下的每一个文件和目录进行磁盘空间使用情况的统计。

  • -h(以人类可读的格式显示):

    • 这个选项使得输出的磁盘空间大小以人类容易理解的格式呈现。例如,输出结果可能会以KB(千字节)、MB(兆字节)、GB(吉字节)等单位显示,而不是以字节为单位的原始数字。这样更方便用户直观地了解文件或目录占用磁盘空间的大小。

  • -s(总结):

    • 当使用-s选项时,du命令会为每个指定的文件或目录显示一个总的磁盘使用量。如果不使用-s选项,du命令可能会列出目录中每个子文件和子目录的磁盘使用量,这在目录结构复杂、文件众多的情况下会产生大量的输出信息。而-s选项可以简化输出,只给出每个文件或目录整体占用的磁盘空间大小。

  • -c(总计):

    • -c选项会在输出的最后添加一行,显示所有已统计文件和目录的磁盘空间使用总量。这对于快速了解当前目录下所有文件和目录总共占用的磁盘空间大小非常有用。

查看硬盘分区

sudo fdisk -l

  • fdisk是一个磁盘分区工具

  • -l选项表示列出(list)所有磁盘分区的相关信息

Linux基础

挂载分区

sudo mount -t /dev/sda2 /mnt/data

如果不确定文件系统类型,可以省略-t选项,系统会尝试自动检测

  • mount是挂载命令,它的作用是将指定的文件系统(在这里是由设备 “/dev/sda2” 表示的分区)挂载到 Linux 文件系统的挂载点(在这里是 “/mnt/data”)

网络内容

基本网络操作

基本网络工具

ifconfig

  • 用于显示和配置网络接口信息的命令行工具

  • 它可以显示网络接口的IP地址、子网掩码、MAC地址等信息,也可以用来启动、停止、配置网络接口

Linux基础

ip addr

  • 用于查看和管理网络接口的命令

  • 同时提供了比ifconfig更详细的信息显示,包括接口状态、IP地址、子网掩码、广播地址

Linux基础

sudo ifdown eth0

  • `ifdomwn用于关闭指定的网络接口

  • eth0是网络接口的名称,这里表示关闭eth0的网络接口

sudo ifup eth0

  • ifup用于开启指定的网络接口

  • 这里表示开启eth0的网络接口

  • Linux基础

网络配置

/etc/network/interfaces

  • 这是一个系统文件,用于配置网络接口的静态、IP地址、子网掩码、网关等信息

Linux基础

Networkmanager

  • 这是一个动态网络控制和配置的守护进程

  • 它可以自动管理网络连接,包括有线连接、无线网络和VPN连接等

  • Networkmanager提供了图形界面和命令行工具来配置和管理网络,使得网络配置更加方便。还可以自动检测网络变化,并根据配置自动进行网络连接

网络连接

netstat -natup

  • -n(numeric):

    • 以数字形式显示网络地址和端口号。通常情况下,网络服务会关联到特定的端口,使用这个选项可以避免将 IP 地址和端口号解析为域名和服务名称,使得输出更加简洁明了。例如,它会直接显示 IP 地址 “192.168.1.100”,而不是尝试将其解析为域名;对于端口号,会直接显示 “80”,而不是显示对应的服务名称 “http”。

  • -a(all):

    • 显示所有的套接字(socket)连接,包括正在监听(listening)的和已经建立的连接。这意味着不仅可以看到已经成功建立的网络连接,如一个已经和远程服务器建立的 TCP 连接用于网页浏览,还可以看到服务器端正在等待客户端连接的监听状态的套接字,例如,Web 服务器在端口 80 上等待 HTTP 请求的监听状态。

  • -t(tcp):

    • 仅显示 TCP(Transmission Control Protocol)协议相关的网络连接信息。TCP 是一种面向连接的、可靠的传输协议,常用于如网页浏览(HTTP 协议基于 TCP)、文件传输(FTP 协议部分基于 TCP)等应用场景。使用这个选项可以筛选出 TCP 连接,便于查看特定协议下的网络连接状态,比如查看当前有多少个正在进行的 TCP 连接用于数据传输。

  • -u(udp):

    • 只显示 UDP(User Datagram Protocol)协议相关的网络连接信息。UDP 是一种无连接的、不可靠的传输协议,它常用于一些对实时性要求较高但对数据完整性要求相对较低的应用场景,如视频直播、DNS(域名系统)查询等。这个选项有助于聚焦 UDP 连接,了解 UDP 相关服务的连接状态。

  • -p(program):

    • 显示与每个网络连接相关联的程序(进程)名称和进程 ID(PID)。这对于确定是哪个程序在使用网络连接非常有用。例如,当发现一个可疑的网络连接时,可以通过-p选项查看是哪个程序发起的连接,从而判断是否存在恶意软件或者程序异常使用网络的情况。

    Linux基础

ss -natup

  • ss是一个用于查看网络套接字(socket)信息的工具,它可以替代传统的netstat命令,并且在某些情况下性能更好。-natup是它的一组选项,用于获取特定类型的网络状态信息。

两个命令的作用大致相同,只是一个是旧版的一个是新版的。ss比上面的更高速更稳定

Linux基础

二层地址

arp -en

  • arp是 “Address Resolution Protocol”(地址解析协议)的缩写,用于查看和操作本地系统的 ARP 缓存表。ARP 协议的主要作用是将 IP 地址转换为对应的 MAC 地址,以便在局域网内实现网络通信

  • -e:以 BSD 风格(类似 Unix 系统早期的 Berkeley Software Distribution 风格)的格式显示 ARP 缓存表信息。这种格式相对较为详细,会列出较多的信息列,方便用户全面了解 ARP 缓存的情况。

  • -n:以数字形式显示 IP 地址和 MAC 地址,而不进行域名解析或尝试将 MAC 地址转换为更易读的厂商格式。这样可以更直接、清晰地展示实际的地址信息,避免因域名解析等额外操作带来的不确定性和可能的错误。

Linux基础

路由信息

route

  • route命令主要用于查看和操作内核 IP 路由表。它可以帮助用户了解网络数据包在系统中的传输路径,以及手动添加、删除或修改路由规则。

Linux基础

ip route

是ip命令的一部分,提供了路由管理功能,进行更复杂的路由配置操作

Linux基础

sudo ip rout add 10.13.27.0/24 dev eth1

  • ip rout add用于添加一条路由条目

  • 10.13.27.0.24 是目标网络地址和子网掩码

  • dev eth1表示通过名为"eth1"的网络接口到达目标网络。

  • 执行这个命令可以向系统的路由表里添加一条路由,指定如何到达特定的网络。

路由跟踪工具

tracerout offensive-security.com

  • tracerout 是一个用于跟踪数据包从本地主机所经过的路由路径的工具

  • offensive-security 是目标主机的域名或ip地址。执行这个命令会逐跳显示数据包经过路由器的ip地址响应时间,可以帮助用户了解网络连接的路径和可能存在的网络。

Linux基础

ssh服务

ssh服务

启动服务

sudo systemctl start ssh

  • systemctl是用于管理系统服务的工具

  • start ssh是启动名为ssh的服务,就是启动SSH服务器,其他设备可以使用SSH协议进行登录连接

Linux基础

查看服务状态

systemctl status ssh

Linux基础

关闭ssh服务

systemctl stop ssh

Linux基础

连接本地主机

ssh root@localhost

  • ssh是SSH服务命令

  • root是指定的登录用户

  • localhost指定登录的机器,这里是指本机

远程连接ssh

ssh user1@192.168.1.100

  • user1是指定登录的用户

  • 192.168.1.100是指定登录的ip信息

ssh命令的其他选项

  • -p(指定端口):

    • 如果远程设备的 SSH 服务不是运行在默认端口 22 上,需要使用-p选项来指定端口。例如,若远程设备的 SSH 服务运行在端口 2222 上,命令应为ssh -p 2222 user1@192.168.1.100

  • -i(指定私钥文件):

    • 当使用 SSH 密钥进行身份验证时,需要通过-i选项指定私钥文件的路径。例如,私钥文件为~/.ssh/id_rsa,命令可以是ssh -i ~/.ssh/id_rsa user1@192.168.1.100。这种身份验证方式比密码验证更加安全,在自动化脚本或者高安全性要求的场景中经常使用。

配置文件

/etc/ssh/sshd_config

  • SSH服务器主要配置文件

包含各种参数:端口号、允许的登录用户、认证方式、访问权限,通过对此文件的操作可以定制化配置ssh服务器

Linux基础

客户端配置

HashKnownHosts yes

  • 通常情况下,/.ssh/known_hosts文件用于存储一直的远程主机的公钥信息,来确保连接的安全性。

  • 此配置选项会将已知主机文件中的主机名信息进行哈希处理。

~/.ssh

  • 这是用户主目录下的一个目录,用于存储SSH客户端的配置和相关文件

  • 通常包含私钥文件(如id_rsa)公钥文件(如id_rsa.pub)及已知主机文件(known_hostss).这些文件将用于客户端的身份认证和连接管理

远程拷贝

scp root@10.10.10.1:/home/kali/.bashrc Copiebashrc

  • scp:是 Secure Copy 的缩写,用于在本地主机和远程主机之间,或者在两个远程主机之间安全地复制文件。

  • root@10.10.10.1:指定了远程主机的登录信息,这里表示以 root 用户名登录到 IP 地址为 10.10.10.1 的远程主机。

  • :/home/kali/.bashrc:这是远程主机上要复制的文件路径,即要从远程主机的 /home/kali/ 目录下复制 .bashrc 文件。

  • Copiebashrc:这是复制操作后在本地保存的文件名(如果当前目录下不存在同名文件的话,它会直接创建这个文件并将内容复制过来;如果已存在同名文件,可能会根据情况提示是否覆盖等,具体取决于所在操作系统和相关设置)。

scp passwd -p kali ssh root@127.0.0.1

  • scp 远程链接

  • passwd -p 用户密码

  • ssh ssh远程连接

  • root@127.0.0.1 目标主机

history历史命令查看

查看历史命令

history

  • history 是一个常见的命令行工具命令,它的主要作用是显示用户在当前终端会话中执行过的命令历史记录。

Linux基础

  • 可以使用-n选项来指定显示最近n条命令历史记录。例如,history -10会显示最近 10 条执行过的命令。

  • 使用-p选项可以按照特定的模式来查找历史记录。例如,history -p "ls*"会查找所有以ls开头的命令历史记录

  • 可以使用!(感叹号)来重新执行历史命令。

  • 例如,!1会重新执行编号为 1 的命令;!ls会重新执行最后一次以ls开头的命令

  • 可以通过history -c来清除当前终端会话中的历史记录

Linux目录

  1. /(根目录)

    • 这是 Linux 文件系统的起点,所有的文件和目录都在根目录下。它就像一棵大树的主干,其他的目录都是从这个根目录分支出来的。例如,当你安装一个新的软件或者创建一个新的用户文件,它们的存储位置最终都可以追溯到根目录下的某个子目录。

  2. /bin

    • 含义:“bin” 是 “binary” 的缩写,这个目录存放着系统中最基本的用户命令,这些命令是二进制可执行文件

    • 用途:这些命令对于系统的基本操作是必不可少的,例如ls(用于列出目录内容)、cp(用于复制文件)、mv(用于移动文件)等。这些命令可以被所有用户使用,因为它们是系统基本功能的一部分。

  3. /sbin

    • 含义:“sbin” 代表 “system binaries”,存放的是系统管理员使用的基本系统管理命令,也是二进制可执行文件。

    • 用途:这些命令主要用于系统维护和管理。例如ifconfig(用于配置网络接口)、fdisk(用于磁盘分区)等。普通用户通常没有权限执行这些命令,只有具有管理员权限(如 root 用户)才能使用。

  4. /boot

    • 含义:这个目录主要存放系统启动时需要的文件,如内核文件(vmlinuz)、引导加载程序(如 GRUB)相关的文件等。

    • 用途:当计算机启动时,BIOS 或者 UEFI 会首先加载引导加载程序,然后引导加载程序会从 /boot 目录中读取内核文件,从而启动 Linux 系统。

  5. /dev

    • 含义:“dev” 是 “device” 的缩写,这个目录包含了系统中的所有设备文件

    • 用途:在 Linux 中,一切设备都被抽象为文件。例如,硬盘设备可能是/dev/sda/dev/sdb等,而终端设备可能是/dev/tty1/dev/tty2等。通过对这些设备文件进行操作,程序可以与硬件设备进行交互。

  6. /etc

    • 含义:这个目录存放着系统的配置文件

    • 用途:几乎所有系统和应用程序的配置文件都可以在这里找到。例如,/etc/passwd文件包含了系统用户的基本信息,/etc/fstab文件用于配置文件系统的挂载信息等。修改这些配置文件可以改变系统和应用程序的行为。

    • /etc//rc.d 启动的配置文件和脚本

  7. /home

    • 含义:这是用户的主目录所在地。

    • 用途:每个用户在系统中都有一个自己的主目录,通常位于/home目录下。例如,用户 “user1” 的主目录可能是/home/user1,用户可以在自己的主目录中存放个人文件、配置文件等。

  8. /lib 和 /lib64

    • 含义:这些目录存放着系统和应用程序所需要的共享库文件

    • 用途:当一个程序运行时,它可能会调用这些共享库来完成一些功能。例如,C 语言编写的程序可能会调用libc.so库文件,这些库文件提供了诸如文件操作、内存管理等基本功能。/lib目录通常用于存放 32 位系统的库文件,/lib64用于存放 64 位系统的库文件。

  9. /media 和 /mnt

    • 含义:这两个目录都用于挂载外部设备

    • 用途/media目录通常用于自动挂载可移动媒体设备,如 U 盘、移动硬盘等。而/mnt目录一般用于手动挂载文件系统,例如挂载网络文件系统(NFS)或者其他临时的文件系统。

  10. /opt

  • 含义:这个目录用于存放第三方软件

  • 用途:当你安装一些非系统自带的软件时,这些软件可能会被安装到/opt目录下。例如,一些商业软件或者大型开源软件(如 Oracle 数据库等)可能会选择/opt作为安装目录。

  1. /proc

  • 含义:这是一个虚拟文件系统,它提供了一种访问内核数据结构和进程信息的方式。

  • 用途:通过查看/proc目录下的文件,你可以获取系统的各种信息,如/proc/cpuinfo文件包含了 CPU 的信息,/proc/meminfo文件包含了内存信息,/proc/[pid](其中[pid]是进程 ID)目录包含了特定进程的详细信息,如打开的文件、内存映射等。

  1. /root

  • 含义:这是系统管理员(root 用户)的主目录。

  • 用途:与普通用户的主目录位于/home下不同,root 用户的主目录是/root,在这里存放着 root 用户的个人文件、配置文件等。

  1. /run

  • 含义:这个目录存放着系统运行时的数据

  • 用途:例如,系统启动后,一些进程的 PID 文件(用于标识进程的文件)会存放在/run目录下,还有一些系统运行时产生的临时文件也会放在这里。

  1. /srv

  • 含义:这个目录用于存放系统提供的服务相关的数据

  • 用途:例如,如果你运行一个 Web 服务器,网站的相关文件可能会存放在/srv/www目录下;如果是一个 FTP 服务器,相关文件可能会存放在/srv/ftp目录下。

  1. /sys

  • 含义:这是一个和/proc类似的虚拟文件系统,主要用于访问和控制系统硬件设备的相关信息

  • 用途:通过/sys目录,内核可以将硬件设备的一些属性和状态信息以文件的形式提供给用户空间程序。例如,你可以通过/sys/class/net/eth0(其中eth0是网络接口名)查看和设置网络接口的一些参数。

  1. /tmp

  • 含义:这个目录用于存放临时文件

  • 用途:任何用户和程序都可以在/tmp目录下创建临时文件,系统会定期清理这个目录中的文件。不过,不同的 Linux 发行版清理策略可能不同。

  1. /usr

  • 含义:“usr” 是 “Unix System Resources” 的缩写,这个目录包含了许多系统资源,如应用程序、库文件、文档等

  • 用途:它可以进一步细分为多个子目录。例如,/usr/bin存放着用户可以使用的应用程序,/usr/lib存放着库文件,/usr/share存放着共享数据,/usr//sbin超级用户的一些管理程序,如文档、图标等。许多用户安装的软件最终会安装到/usr目录下的某个子目录中。

  • kali自带的许多爆破字典都存在/usr/share

  1. /var

  • 含义:这个目录用于存放可变的数据,如日志文件、缓存文件、邮件文件等。

  • 用途:例如,/var/log目录存放着系统日志和各种应用程序的日志,/var/cache目录存放着应用程序的缓存文件,/var/mail目录存放着用户的邮件等。由于这些数据是可变的,并且可能会不断增长,所以需要定期对/var目录进行管理,如清理日志、清除过期的缓存等。

Linux基础

基本命令

  1. cd / 返回系统根目录

  2. clear 清屏

  3. cd 切换目录

  4. pwd 显示当前所在目录

  5. vim 文本编辑器

  • i 输入字符 esc : wq! 保存退出

  1. mkdir -p 123/1/2/3 类似与递归遍历进行目录创建

Linux基础

  1. rm -r 123 删除123目录

  • -i 递归删除

  • -r 删除文件夹和它的所有内容

  • -f 强制删除

  1. cp copy的简写,复制文件

  • cp www.txt ../www.txt 将www.txt文件复制到上一级目录

  1. mv move的简写,移动文件

  • mv www.txt home/www.txt 将www.txt文件移动到home目录

  1. cat 查看文件内容

  • cat www.txt 查看www.txt文件内容

  • Linux基础

  1. head 查看文件前半段的内容

  • head -5 www.txt 查看www.txt文件内容的前五行

  • Linux基础

  1. tail 查看文件后半段内容

  • tail -5 www.txt 查看www.txt文件内容的后五行

  • Linux基础

  1. more 查看文件内容并使用键盘翻页(主要还是查看,在不用鼠标的情况下尤其好用)

  • more www.txt

  • 按空格键(Space):显示下一屏内容。这是最常用的操作之一,当一屏内容查看完毕后,按下空格键可以继续查看文件的后续部分。

  • 按回车键(Enter):显示下一行内容。如果只想逐行查看文件,而不是整屏查看,可以使用回车键。

  • 按b键:显示上一屏内容。如果在查看过程中想要返回之前的屏幕内容,可以按下b键。

  • 按q键:退出more命令。当已经查看完需要的文件内容或者不想继续查看时,可以按下q键来退出查看状态。

  • 按/字符串:用于在文件中向前搜索指定的字符串。例如,在查看一个代码文件时,如果想查找某个函数名,可以按下/键,然后输入函数名进行搜索。搜索到第一个匹配的字符串后,会在屏幕上显示包含该字符串的那一行及其附近的内容。

  • 按?字符串:用于在文件中向后搜索指定的字符串。其功能和/类似,但是搜索方向相反。

  1. chown 改变当前所处用户和所处用户组

  • chown root:root 3.txt

  • chown是 “change owner” 的缩写,在 Linux 系统中用于更改文件或目录的所有者和所属组。

  • root:root表示将文件的所有者设置为root用户,所属组也设置为root组。

  • 3.txt是要更改所有者和所属组的文件名。

  1. useradd & adduser

  • adduser 会自动为创建的用户指定目录,系统shell版本,会在创建时输入用户密码

  • Linux基础

  • useradd 需要使用参数选项指定上述基本设置,如果没有任何参数,创建的用户则没有密码,没有主目录,没有指定shell版本

  1. userdel 删除用户

  • userdel -f y4er (删除y4er用户)

  1. su 用户切换

  • 如:从kali用户转至y4er用户

su y4er 则会切换到y4er用户,当然需要y4er用户的密码.

Linux基础

  1. passwd 管理用户密码

  • passwd kali 修改kali用户的密码

Linux编写病毒

Windows dos编程

Linux bash编程

Linux资源耗尽病毒

(使用alert或者notify-send等工具发送通知)

#!/bin/bash
while true
do
  notify-send "无限弹窗" "这是一个无限弹窗"
  sleep 2
done
  • 保存这个脚本到一个文件中,比如infinite_popup.sh,然后给他执行权限chmod +x infinite_popup.sh

  • 运行这个脚本./infinite_popup.sh

- THE END -
Tag:
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论