免责声明
学习视频来自 B 站up主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
泷羽sec官网:https://longyusec.com/
泷羽sec B站地址:https://space.bilibili.com/350329294
目录
sudo tail -3 /var/log/auth.log
查看 systemd 日志 (通过 journalctl 命令)
6.1 traceroute offensive-security.com
scp [email protected]:/home/kali/.bashrc Copiedbashrc
文件管理操作
在 Linux 中,文件管理是最基础的操作之一。无论是创建、删除文件,还是对文件进行复制、移动,掌握相关命令都能大大提高工作效率。
创建空文件
使用 touch
命令可以轻松创建一个空文件:
touch 文件名
删除文件
删除文件时,使用 rm
命令:
rm 文件名
加上 -r
选项,可以递归删除文件夹及其内容:
rm -r 目录名
如果需要强制删除文件(不提示确认),可以使用 -f
选项:
rm -f 文件名
创建和删除目录
新建目录使用 mkdir
:
mkdir newdir
如果目录为空,使用 rmdir
删除:
rmdir emptydir
文件移动与重命名
通过 mv
命令可以移动或重命名文件:
mv oldfile newfile
例如,将文件 file.txt
重命名为 new.txt
:
mv file.txt new.txt
文件拷贝
cp
命令用于复制文件:
cp file.txt newfile.txt
查看文件内容
在 Linux 中,快速查看文件内容是很常用的需求
查看文件文件全部内容
cat 文件名
查看文件前几行
head -n 5 文件名
查看文件后几行
tail -n 5 文件名
链接管理:软链接与硬链接
在 Linux 中,链接可以让我们在不同位置引用相同的文件。理解硬链接和软链接的区别至关重要。
硬链接
硬链接是文件系统中多个文件名指向同一数据块。如果删除原文件,数据依然可以通过其他链接访问:
ln 原文件 硬链接名
软链接
软链接类似于 Windows 中的快捷方式,如果原文件被删除,软链接会失效:
ln -s 原文件路径 软链接名
链接实验
#创建一个测试文件f1
#创建f1的一个硬连接文件f2
#创建f1的一个符号连接文件f3
删除以后f2可以继续查看,f3却不可以
文件搜索与定位
当系统中有大量文件时,快速查找所需文件变得尤为重要。常见的文件查找工具有 which
、locate
和 find
。
查找可执行文件
使用 which
查找命令的具体位置:
which 命令名
使用 locate
查找文件
locate
通过数据库快速查找文件:
locate 文件名
更新数据库:
sudo updatedb
使用 find
查找文件
find
是一个强大的工具,可以根据多种条件查找文件:
示例1
find ~ -mtime 2 -ls | sort -k9 -k10 | more
作用
- 在用户主目录 (
~
) 中查找最近 2天前(不含当天)修改过 的文件或目录。 - 列出这些文件的详细信息。
- 按文件名(或路径)进行排序。
- 分页显示结果。
选项详解
find ~ -mtime 2 -ls
find
:搜索文件和目录的命令。~
:表示当前用户的主目录(例如/home/username
)。-mtime 2
:- 匹配 最近 2 天前修改过 的文件或目录。
- 时间计算是基于文件的最后修改时间,以天为单位(以当前时间为基准,向前推 2 天)。
- 精确解释:
-mtime 2
匹配最近 大于 2 天但不超过 3 天 的文件(以整天计,不包括今天)。
-ls
:列出匹配文件的详细信息,包括 inode、权限、大小、所有者、组、时间戳和路径。
| sort -k9 -k10
|
:管道符,将前面find
命令的输出传递给sort
。sort -k9 -k10
:-k9
:按第 9 列(通常是文件名或路径)进行排序。-k10
:如果第 9 列相同,则按第 10 列(通常是文件的后续部分,如时间戳)进一步排序。- 此排序适用于
-ls
输出格式,其中文件名和路径通常在第 9 列。
| more
|
:管道符,将sort
命令的结果传递给more
。more
:分页显示结果,按屏幕大小逐页展示。- /按空格键查看下一页。
- 按
q
退出。
示例2
find . -type f -iname '*.sh' -mmin -30 -ls
作用
在当前目录及其子目录中,查找过去 30 分钟内修改过的 .sh
脚本文件,并显示其详细信息。
选项详解
find
:搜索文件和目录的命令。.
:表示从当前目录开始搜索。-type f
:仅匹配普通文件(不包括目录、链接等)。-iname '*.sh'
:-iname
:忽略大小写的文件名匹配。*.sh
:匹配以.sh
结尾的文件。
-mmin -30
:-mmin
:按修改时间筛选文件。-30
:表示文件的最后修改时间在 30 分钟以内。
-ls
:列出符合条件的文件的详细信息,包括 inode、权限、大小等。
示例3
find . -name '*.svn' -exec rm -rf {} \;
作用
在当前目录及其子目录中,查找名字为 *.svn
的文件或目录,并递归删除它们。
选项详解
find
:搜索文件和目录的命令。.
:表示从当前目录开始搜索。-name '*.svn'
:-name
:按文件名匹配。*.svn
:匹配名字以.svn
结尾的文件或目录。
-exec
:对匹配到的文件执行指定的命令。rm -rf
:rm
:删除命令。-r
:递归删除目录及其内容。-f
:强制删除,不提示。
{}
:占位符,代表匹配到的每个文件或目录。\;
:表示-exec
命令结束。
示例4
find / -user root -type f -perm -o=w -name '*.sh' 2>/dev/null
作用
在整个文件系统中,查找属于 root
用户、文件类型为普通文件、可被其他用户写入且文件名以 .sh
结尾的文件,并忽略错误信息。
选项详解
find /
:从根目录/
开始搜索。-user root
:匹配文件的所有者为root
的文件。-type f
:仅匹配普通文件。-perm -o=w
:-perm
:按文件权限匹配。-o=w
:表示文件的 "其他用户"(即非所有者和所属组)对文件有写权限。
-name '*.sh'
:匹配以.sh
结尾的文件。2>/dev/null
:2>
:将标准错误输出重定向。/dev/null
:将错误信息丢弃,避免权限不足等错误干扰输出。
用户管理与权限控制
在 Linux 系统中,合理管理用户和设置文件权限非常重要,以确保系统的安全性。
查看用户账户信息
Linux 的用户账户信息通常存储在 /etc/passwd
和 /etc/shadow
文件中:
cat /etc/passwd
cat /etc/shadow
组账号
cat /etc/group
禁用账号
添加或删除用户
使用 useradd
添加用户,使用 userdel
删除用户:
useradd 新用户名
userdel -f 用户名
文件系统权限
linux系统中一切都是文件
ls -la /etc/passwd
作用
列出 /etc/passwd
文件的详细信息,包括权限、所有者、大小、修改时间等。
选项详解
ls
:列出目录内容或文件信息。-l
:使用长格式显示文件信息,包括权限、硬链接数、所有者、组、大小、时间戳等。-a
:显示所有文件,包括隐藏文件(以.
开头的文件)。
chown root file
作用
将文件 file
的所有者更改为用户 root
。
选项详解
chown
:更改文件的所有者。root
:新所有者的用户名。file
:要更改所有者的文件。
sudo chmod u=rwx,g+rw,o-r 文件名
r(读)w(写)x(执行)
作用
修改文件 file
的权限:
- 用户(owner)有 读、写、执行 权限。
- 组(group)增加 读、写 权限。
- 其他用户(others)移除 读 权限。
选项详解
sudo
:以超级用户权限执行命令。chmod
:更改文件权限。u=rwx
:设置用户(owner)的权限为 读(r)、写(w)、执行(x)。g+rw
:增加组(group)的 读(r)和写(w) 权限。o-r
:移除其他用户(others)的 读(r) 权限。file
:要修改权限的文件。
sudo chmod u+x,g+w,o-r 文件名
作用
修改文件 file
的权限:
- 用户(owner)增加 执行 权限。
- 组(group)增加 写 权限。
- 其他用户(others)移除 读 权限。
选项详解
- 与上一条类似,只是权限变更具体不同:
-
u+x
:用户增加执行权限。g+w
:组增加写权限。o-r
:其他用户移除读权限。
chmod 400 文件名
作用
将文件权限设置为 仅用户可读(用户有读权限,组和其他用户没有任何权限)。
选项详解
chmod
:更改文件权限。400
:使用八进制表示文件权限:4
:代表读权限。0
:无权限。
400
的含义- 组(g):
0
(无权限)。 - 其他用户(o):
0
(无权限)。 - 用户(u):
4
(读权限)。
- 组(g):
chmod数字权限值
数字 | 权限 | 描述 |
0 | --- | 无任何权限 |
1 | --x | 仅执行权限 |
2 | -w- | 仅写权限 |
3 | -wx | 写和执行权限 |
4 | r-- | 仅读权限 |
5 | r-x | 读和执行权限 |
6 | rw- | 读和写权限 |
7 | rwx | 读、写、执行权限 |
三位数字分别代表用户,组,其他用户
系统日志
ls -l /var/log
作用
列出 /var/log
目录中所有文件的详细信息。
选项详解
ls
:列出目录内容。-l
:使用长格式显示文件信息。
-
- 权限、硬链接数、所有者、组、文件大小、修改时间、文件名。
/var/log
:系统日志文件所在的目录,存储了系统运行和服务的日志文件。
输出示例
- 文件类型:
-
c
: 表示该文件是字符设备文件。rw-rw-r--
: 读写读写读都没有执行权限。1
: 硬链接数。root
: 文件的拥有者。utmp
: 文件所属组。Dec 2 14:55
: 文件最后修改时间。wtmp
: 文件名。
sudo tail -3 /var/log/auth.log
作用
显示 /var/log/auth.log
文件的最后 3 行内容,通常包含身份验证相关的日志(例如登录尝试、SSH 访问等)。
选项详解
sudo
:以超级用户权限运行(某些日志文件需要权限)。tail
:显示文件末尾的内容。-3
:仅显示最后 3 行。/var/log/auth.log
:身份验证日志文件。
who /var/log/wtmp | tail -5
作用
查看 /var/log/wtmp
文件中的用户登录历史,并仅显示最后 5 条记录。
选项详解
who
:显示当前和历史登录会话。/var/log/wtmp
:记录登录历史的二进制日志文件。|
:管道符,将who
的输出传递给tail
。tail -5
:显示最后 5 行。
输出示例
dmesg
作用
显示内核启动后的系统消息(从系统启动到现在的内核日志)。
选项详解
- 无选项时:默认输出所有内核日志信息。
- 常用选项:
-
dmesg | tail
:仅查看最新的日志信息。dmesg -T
:将日志时间戳转换为可读格式(需支持该选项的系统)。dmesg | grep keyword
:通过grep
筛选日志中特定的关键字。
查看 systemd
日志 (通过 journalctl
命令)
journalctl
基础用法
作用
journalctl
是 systemd
提供的日志查看工具,用于管理和查看所有系统日志(包括内核日志、服务日志等)。
常见命令
- 查看全部日志:
journalctl
输出所有日志,按时间顺序排列。
- 实时查看日志:
journalctl -f
类似于 tail -f
,实时滚动显示新日志。
- 查看特定服务的日志:
journalctl -u servicename
替换 servicename
为目标服务名,例如 ssh
。
- 按时间范围过滤:
journalctl --since "2024-11-01" --until "2024-11-30"
显示指定时间段内的日志。
- 查看内核日志:
journalctl -k
仅显示内核相关的日志。
- 按优先级筛选:
journalctl -p 3
显示优先级为 3
(错误)及更高(严重错误)的日志。
选项详解
-u servicename
:筛选指定服务的日志。-f
:实时显示日志。-k
:仅查看内核日志。--since/--until
:按时间范围筛选日志。-p priority
:按日志优先级筛选。
存储管理
free -m
作用
显示系统的内存使用情况,包括物理内存(RAM)、交换内存(swap)和缓存。
选项详解
free
:查看内存使用信息。-m
:以 MB(兆字节) 为单位显示内存使用情况。
输出示例
- Mem:
-
total
:总物理内存。used
:已用内存。free
:未使用内存。shared
:共享内存(通常为 tmpfs)。buff/cache
:缓冲区和缓存占用的内存。available
:系统可以立即使用的内存(考虑缓存)。
- Swap:
-
total
:总交换分区大小。used
:已使用交换分区。free
:剩余交换分区。
df -hT
作用
显示文件系统的磁盘空间使用情况,包括每个分区的类型和使用百分比。
选项详解
df
:查看磁盘空间使用情况。-h
:以人类可读的格式(如 KB、MB、GB)显示大小。-T
:显示文件系统的类型(如 ext4、xfs、vfat)。
输出示例
- Filesystem:设备名。
- Type:文件系统类型。
- Size:分区总大小。
- Used:已用空间。
- Avail:可用空间。
- Use%:使用百分比。
- Mounted on:挂载点。
sudo du ./* -hsc
作用
统计当前目录下每个文件和子目录的大小,并以人类可读的格式显示总计。
选项详解
sudo
:以超级用户权限运行(某些目录可能需要权限)。du
:显示目录或文件占用的磁盘空间。./*
:统计当前目录下的所有文件和子目录。-h
:以人类可读格式(如 KB、MB、GB)显示大小。-s
:只显示每个文件/目录的总计大小,而不是逐层列出。-c
:显示一个总计。
输出示例
- 每一行显示子目录或文件的大小,最后一行显示总计。
sudo fdisk -l
作用
显示所有磁盘及其分区表的信息。
选项详解
sudo
:以超级用户权限运行(查看磁盘信息需要权限)。fdisk
:磁盘分区管理工具。-l
:列出所有磁盘及其分区。
输出示例
- Disk:磁盘设备及其大小。
- Device:分区设备名称。
- Boot:是否可引导。
- Start/End/Sectors:分区的起始扇区、结束扇区和扇区数量。
- Size:分区大小。
- Type:分区类型(如 Linux、swap 等)。
sudo mount /dev/sdb1 /mnt/usb
作用
将设备 /dev/sdb1
挂载到目录 /mnt/usb
,使用户可以访问该设备的内容。
选项详解
sudo
:以超级用户权限运行(挂载操作需要权限)。mount
:挂载文件系统。/dev/sdb1
:设备路径(例如 USB 驱动器的分区)。/mnt/usb
:挂载点(需要提前创建该目录)。
适用场景
- 挂载 USB 设备或其他存储设备。
- 挂载远程文件系统(如 NFS 或 Samba)。
注意事项
- 确保目标目录
/mnt/usb
存在,可以使用mkdir /mnt/usb
创建。 - 如果设备未正确挂载,可以使用
sudo umount /mnt/usb
卸载后重新尝试。
总结
命令 | 作用 |
| 查看系统内存和交换分区的使用情况,以 MB 为单位。 |
| 查看磁盘分区的使用情况和文件系统类型,以人类可读格式显示。 |
| 统计当前目录下每个文件和子目录的大小,并显示总计。 |
| 显示所有磁盘及其分区表信息(设备路径、大小、分区类型等)。 |
| 将设备(如 USB 驱动器)挂载到指定目录以访问其内容。 |
基本网络枚举
1. 基本网络工具
1.1 ifconfig
- 作用:显示或配置网络接口信息(IPv4)。
- 常用选项:
-
- 无参数:显示所有活动网络接口信息(包括 IP 地址、子网掩码、MAC 地址)。
ifconfig eth0 down
:关闭网络接口eth0
。ifconfig eth0 up
:启用网络接口eth0
。
- 注意:已被
ip
命令替代,但仍可用于某些系统。
1.2 ip addr
- 作用:显示或配置网络接口信息(IPv4 和 IPv6)。
- 常用选项:
-
ip addr show
:显示所有网络接口的 IP 地址及相关信息。ip addr add 192.168.1.100/24 dev eth0
:为接口eth0
添加 IP 地址192.168.1.100
。ip addr del 192.168.1.100/24 dev eth0
:从接口eth0
删除指定 IP 地址。
1.3 sudo ifdown eth0
- 作用:停用指定网络接口(需要超级用户权限)。
- 示例:
停用 eth0
网络接口。
1.4 sudo ifup eth0
- 作用:启用指定网络接口(需要超级用户权限)。
- 示例:
启用 eth0
网络接口。
2. 网络配置
2.1 /etc/network/interfaces
- 作用:Linux 系统中存储网络配置的文件(在传统网络管理工具中使用)。
- 内容示例:
2.2 NetworkManager
- 作用:现代 Linux 系统中的网络管理工具,支持动态和静态配置。
- 相关命令:
-
nmcli
:命令行工具,用于管理网络连接。
nmcli dev status
nmcli con show
-
nmtui
:基于文本的用户界面,用于配置网络。
3. 网络连接
3.1 netstat -natup
- 作用:显示网络连接、监听的端口及其进程信息(已被
ss
替代)。 - 选项详解:
-
-n
:数字化显示(IP 地址和端口号),而非主机名和服务名。-a
:显示所有连接(包括监听和非监听状态)。-t
:显示 TCP 连接。-u
:显示 UDP 连接。-p
:显示连接的进程信息(需要超级用户权限)。
3.2 ss -natup
- 作用:显示活动网络连接及监听的端口(更高效的
netstat
替代工具)。 - 选项同
netstat
。
4. 二层地址(MAC 地址)
4.1 arp -en
- 作用:显示 ARP 表,解析二层地址(MAC 地址)。
- 选项详解:
-
-e
:显示扩展信息,包括接口名称。-n
:数字化显示(不解析主机名)。
- 输出示例:
-
Address
:IP 地址。HWtype
:硬件类型(如ether
表示以太网)。HWaddress
:MAC 地址。Iface
:接口名称。
5. 路由信息
5.1 route
- 作用:显示或修改系统的路由表。
- 示例:
-
route -n
:数字化显示路由表。- 添加路由:
5.2 ip route
- 作用:更现代的路由配置工具(替代
route
)。 - 示例:
-
- 显示路由表:
ip route show
-
- 添加路由:
sudo ip route add 10.13.37.0/24 dev eth1
为网络 10.13.37.0/24
设置路由,数据通过接口 eth1
传输。
6. 路由追踪
6.1 traceroute offensive-security.com
- 作用:跟踪数据包到目标主机的路由路径。
- 参数详解:
-
- 默认无参数时,显示每一跳的信息,包括 IP 地址、响应时间等。
- 示例输出:
1 192.168.1.1 1.123 ms 1.456 ms 1.789 ms
2 10.0.0.1 10.123 ms 10.456 ms 10.789 ms
-
-
- 每行表示一跳(路由器或设备)的信息。
- 第一列为跳数。
- 后续为设备 IP 和响应时间。
-
- 注意事项:
-
- 若需要超级用户权限,可以使用
sudo traceroute
。
- 若需要超级用户权限,可以使用
总结
命令 | 作用 |
| 显示或配置网络接口(传统工具)。 |
| 显示或配置网络接口(现代工具,支持 IPv4 和 IPv6)。 |
| 停用/启用网络接口 |
| 存储静态网络配置的文件。 |
| 现代 Linux 网络管理工具。 |
| 显示网络连接、端口及进程(传统工具)。 |
| 显示网络连接、端口及进程( |
| 显示 ARP 表和二层地址(MAC 地址)。 |
| 显示或配置路由表(传统工具)。 |
| 显示或配置路由表(现代工具)。 |
| 添加一条新的路由规则。 |
| 跟踪数据包到目标主机的路由路径,用于网络故障排查。 |
ssh服务
1. 启动服务
1.1 sudo systemctl start ssh
- 作用:启动 SSH 服务,允许远程主机通过 SSH 协议连接到本地系统。
- 命令详解:
-
sudo
:以超级用户权限运行。systemctl
:服务管理工具,用于启动、停止、重启、查看状态等操作。start ssh
:启动名为ssh
的服务。
- 相关命令:
-
sudo systemctl stop ssh
:停止 SSH 服务。sudo systemctl restart ssh
:重启 SSH 服务。sudo systemctl status ssh
:查看 SSH 服务状态。
2. 连接到本地主机
2.1 ssh root@localhost
- 作用:通过 SSH 协议连接到本地主机的
root
用户账户。 - 参数详解:
-
ssh
:SSH 客户端命令,用于连接到远程主机。root@localhost
:
-
-
root
:目标主机上的用户名。localhost
:目标主机的地址,这里表示本地。
-
- 连接过程:
-
- 系统会提示输入
root
用户的密码。 - 连接成功后会进入目标主机的终端环境。
- 系统会提示输入
3. 配置文件
3.1 /etc/ssh/sshd_config
- 作用:SSH 服务端的配置文件,用于定义服务行为。
- 常用配置项:
-
Port 22
:指定 SSH 服务监听的端口(默认是 22)。PermitRootLogin yes
:是否允许root
用户通过 SSH 登录。
-
-
yes
:允许。no
:禁止。prohibit-password
:禁止基于密码的登录,但允许使用密钥。
-
-
PasswordAuthentication yes
:是否允许基于密码的身份验证。
-
-
yes
:允许。no
:禁止,仅支持密钥登录。
-
-
AllowUsers user1 user2
:指定允许通过 SSH 登录的用户。MaxAuthTries 3
:限制身份验证的最大尝试次数。
- 配置文件生效: 修改后需重启 SSH 服务:
sudo systemctl restart ssh
4. 客户端配置
4.1 HashKnownHosts yes
- 作用:在客户端的
~/.ssh/known_hosts
文件中,将已知主机的公钥信息保存为哈希值。 - 优点:
-
- 提高安全性,防止直接暴露已连接主机的 IP 地址或主机名。
- 配置位置:
-
- 在
~/.ssh/config
文件中添加:
- 在
HashKnownHosts yes
4.2 ~/.ssh
- 作用:SSH 客户端的默认配置目录,用于存储密钥和相关配置。
- 常见文件:
-
~/.ssh/config
:客户端配置文件,用于指定默认行为或连接选项。
-
-
- 示例:
-
Host example
HostName example.com
User username
Port 22
-
~/.ssh/id_rsa
:默认的私钥文件(RSA 算法)。~/.ssh/id_rsa.pub
:对应的公钥文件。~/.ssh/known_hosts
:存储已连接主机的公钥,用于防止中间人攻击。
总结
命令/配置 | 作用 |
| 启动 SSH 服务,允许远程主机连接到本地。 |
| 使用 SSH 协议连接到本地主机的 用户账户。 |
| SSH 服务端配置文件,定义服务行为(如端口、允许用户等)。 |
| 客户端配置项,将 文件中的主机信息以哈希形式存储,提升安全性。 |
| 客户端默认配置目录,存储密钥文件、公钥文件、已知主机信息等。 |
| 存储已连接主机的公钥,用于验证主机身份防止中间人攻击。 |
远程拷贝
scp [email protected]:/home/kali/.bashrc Copiedbashrc
作用:
使用 scp
命令从远程主机 1.1.1.1
(root
用户)复制文件 /home/kali/.bashrc
到本地机器,目标文件名为 Copiedbashrc
。
命令详解:
scp
:用于在本地与远程主机之间复制文件或目录,支持加密传输。[email protected]:/home/kali/.bashrc
:
-
root
:远程主机的用户名。1.1.1.1
:远程主机的 IP 地址。/home/kali/.bashrc
:远程主机上的源文件路径。
Copiedbashrc
:本地文件的目标路径和文件名,复制的内容将被保存在本地名为Copiedbashrc
的文件中。
总结:
该命令将远程主机 1.1.1.1
上的 /home/kali/.bashrc
文件复制到本地,并将其保存为 Copiedbashrc
。
history
作用:
history
命令用于显示当前用户的命令历史记录。
命令详解:
history
:无参数时,显示当前用户的命令历史列表,列出执行过的命令及其编号。
常用选项:
history n
:显示最近n
条命令记录。例如,history 10
显示最近的 10 条命令。!n
:执行编号为n
的历史命令。例如,!5
将执行历史记录中的第 5 条命令。history -c
:清除命令历史。
总结:
history
命令会显示你当前用户在终端中输入的命令历史记录,方便查看或重复使用以前执行的命令。
总结表
命令 | 作用 |
| 从远程主机
保存为 |
| 显示当前用户的命令历史记录。 |
linux目录介绍
/bin 二进制可执行文件
/etc 系统管理和配置文件
/etc/rc.d 启动的配置文件和脚本
/home 用户主目录的基点
/lib 标准程序设计库,又叫动态链接共享群
/sbin 超级管理命令,这里存放的是系统管理员使用的程序
/tmp 公共的临时文件存储点
/root 系统管理员的主目录
/mnt 系用户临时挂载的文件系统
/lost+found 系统非正常关机保存文件的
/proc 虚拟的目录
/var 某些大文件的溢出区
/usr 应用程序
/usr/bin 众多应用程序
/usr/sbin 超级用户的一些管理程序
了解
软链接和硬链接区别
1. 本质区别
- 硬链接:
-
- 是文件系统中多个文件名指向同一数据块的方式。
- 硬链接与原始文件共享相同的 inode 号码,实际上指向同一个存储空间。
- 删除任意一个硬链接或原始文件,数据依然存在,除非所有指向该数据块的链接都被删除。
- 软链接:
-
- 是一个指向目标文件路径的文件,类似于快捷方式。
- 软链接有自己的 inode,与原文件的 inode 不同。
- 如果原文件被删除,软链接会失效,成为“死链接”。
2. 实现方式
- 硬链接:
-
- 直接通过文件系统的 inode 来实现。
- 只能在同一个文件系统中创建。
- 软链接:
-
- 存储的是目标文件的路径。
- 可以跨文件系统创建。
3. 特性对比
特性 | 硬链接 | 软链接 |
是否占用存储空间 | 不额外占用存储空间 | 占用存储空间,用于存储路径信息 |
指向方式 | 指向相同数据块 | 指向目标文件路径 |
文件删除的影响 | 删除某个链接不影响其他链接和数据 | 删除目标文件会导致链接失效 |
是否支持目录 | 一般不支持(Linux下可以通过特殊方式实现) | 支持 |
跨文件系统支持 | 不支持 | 支持 |
inode 共享情况 | 共享相同的 inode | 不共享 inode |
4. 使用场景
- 硬链接:
-
- 用于需要确保数据安全的场景,即使原文件名被删除,数据仍然可通过其他链接访问。
- 如需要多个路径指向相同数据,同时无需创建新文件。
- 软链接:
-
- 用于快捷访问目标文件或目录的场景。
- 跨文件系统、跨目录引用文件。
- 方便更改目标路径时,链接本身不需要变化。
openssl
开源的加密工具包,提供各种加密,解密,签名,验证等功能。
openssl passwd -1 123
passwd表示用于密码处理
-1 使用md5
-5 使用SHA-256哈希算法
-6 使用 SHA-512 哈希算法生成密码散列
-apr1 加入了盐的md5
-aixmd5 IBM AIX 系统上的 MD5 哈希算法
'123'对这个密码进行处理