Linux基础
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。
感谢泷羽sec 团队的教学
视频地址:linux基础(1)_哔哩哔哩_bilibili
一、openssl
openssl是 Kali Linux(以及许多其他 Linux 发行版)中广泛使用的命令行工具,用于执行加密、解密和其他加密操作。它基于 OpenSSL 库构建,该库实现了安全套接字层 (SSL) 和传输层安全 (TLS) 协议以及各种加密算法和标准。
下面是对密码进行加密的简单演示:
MD5 是一种广泛使用的哈希算法,它可以将任意长度的输入数据转换为固定长度的输出,通常是 128 位(16 字节)的哈希值。
openssl passwd -1 123
这个命令用于生成一个基于 MD5 的密码哈希。
- passwd:这是 OpenSSL 的一个子命令,用于处理密码。
- -1:表示使用 MD5 哈希算法。
- 123:这是要哈希的明文密码。
$1$VjoPProL$4tgNpt1OLJC7WbHG96pRO0
- $1$:表示 MD5 哈希格式。
- VjoPProL:这是一种盐,是添加到哈希中的随机字符串,以增加安全性。
- 4tgNpt1OLJC7WbHG96pRO0:这是经过 MD5 哈希处理后的密码。它是一个固定长度的字符串,通常表示为 32 个字符(128 位)。
openssl passwd -5 123
该命令 用于生成一个基于 SHA-256 的密码哈希。
- openssl:调用 OpenSSL 工具。
- passwd:表示要处理密码。
- -5:指定使用 SHA-256 哈希算法(比 MD5 更安全)。
- 123:这是要哈希的明文密码。
$5$BbzDx274X49hbAin$7d9RfwTInc7n8U/1Hgc6tr2/KEfIqaFEZqDCzilLZ19
- $5$ :表示使用 SHA-256。
- BbzDx274X49hbAin:是随机生成的盐值,用于防止彩虹表攻击。
- 7d9RfwTInc7n8U/1Hgc6tr2/KEfIqaFEZqDCzilLZ19:是哈希后的密码。
二、Linux基础命令
文件管理相关命令
1.创建空文件
touch filename
命令:touch newfile.txt
- touch命令用于创建文件或更新现有文件的时间戳
- newfile.txt是要创建的空文件名,如果文件已经存在,则更新其最后修改时间
2. 删除文件
rm filename
命令:rm newfile.txt
- rm命令用于删除文件。
- newfile.txt是要删除的文件名。
命令:rm -rf /tmp/new/newfile.txt
- -r参数表示递归删除目录及其内容
- -f参数表示强制删除,不提示确认
3. 新建目录
mkdir directory_name
命令:mkdir new
- mkdir命令用于创建目录
- new是要创建的目录名
命令:mkdir -p /tmp/a/b/c
- -p参数用于递归创建目录树,如果路径中的一些目录不存在,mkdir将自动创建它们。
4. 删除空目录
rmdir directory_name
命令:rmdir new
- rmdir命令用于删除空目录
- new是指定要删除的空目录名。注意,rmdir只能删除空目录。
5. 重命名文件
mv old_name new_name
命令:mv oldfile.txt newfile.txt
- mv命令用于移动或重命名文件
- oldfile.txt是原文件名
- newfile.txt是新文件名
6. 移动文件
mv filename /path/to/destination
命令:mv newfile.txt /tmp/a/b/c
- mv命令用于移动文件或目录
- newfile.txt是要移动的文件
- mv newfile.txt /tmp/a/b/c是目标目录路径
7. 拷贝文件
cp source_file destination_file
命令:cp newfile.txt backup_file.txt
- cp命令用于复制文件或目录。
- newfile.txt是源文件
- backup_file.txt是复制后且重命名的文件
命令:cp -r /tmp/a/b/c /tmp/
- -r参数表示递归复制目录及其内容。
- /tmp/a/b/c是源文件所在目录
- /tmp/是复制后的文件所在目录
8. 创建软链接
ln -s target link_name
命令:ln -s /usr/local/bin/pip /usr/bin/pip
- -s参数创建符号链接(软链接)
- /usr/local/bin/pip是目标文件
- /usr/bin/pip是符号链接名称
- 使用ls -l这个命令会列出文件的详细信息,包括链接。对于软链接,它会显示链接指向的目标文件路径。
9.创建硬链接
ln target link_name
命令:ln newfile.txt hardlink.txt
- ln命令创建硬链接。
- file.txt是目标文件,
- hardlink.txt是硬链接名称。
- 使用
ls -li
命会显示文件的详细信息,包括文件的inode号。硬链接具有相同的inode号。
10. 软链接和硬链接的区别
硬链接(Hard Link)
- 同一文件系统:硬链接必须指向同一文件系统中的文件。
- 共享inode:硬链接指向的是文件的inode,它们共享相同的inode和数据块,因此硬链接实际上并不占用额外的磁盘空间。
- 删除限制:只要至少有一个硬链接存在,文件数据就不会被删除。即使删除了创建硬链接的原始文件,数据仍然会保留,直到所有硬链接都被删除。
- 文件名不变:硬链接创建后,文件名不会改变,即使原始文件被重命名或移动。
- 权限继承:硬链接继承原始文件的权限。
- 不支持目录:不能对目录创建硬链接,因为这可能导致文件系统遍历问题。
软链接(Symbolic Link)
- 跨文件系统:软链接可以指向不同文件系统的文件。
- 独立路径:软链接包含目标文件的路径,因此它们不共享inode,实际上是一个独立的文件。
- 删除独立:软链接删除后不会影响目标文件,目标文件删除后软链接会变成“死链接”。
- 文件名变化:如果目标文件被移动或重命名,软链接将不再有效。
- 权限独立:软链接有自己的权限,与目标文件的权限无关。
- 支持目录:可以对目录创建软链接。
文件搜索工具及参数
1. which
命令:which ls
- which命令查找命令的可执行文件路径
- ls是要查找的命令
2. echo $PATH
命令:echo $PATH
- echo命令输出字符串或变量值
- $PATH`是环境变量,包含可执行文件查找路径
3. locate
locate 命令通过数据库查找文件
命令:locate -i *.img
- locate命令通过数据库快速查找文件
- -i忽略大小写搜索
- *.img是要查找的文件名
4. find
命令:find . -type f -iname '*.sh' -mmin -30 -ls
- .是当前目录,
- -type f查找文件,
- -iname '*.sh'`查找以.sh结尾的文件,忽略大小写
- -mmin -30查找过去30分钟内修改的文件
- -ls列出文件详细信息。
命令:find . -name '*.svn' -exec rm -rf {} \;
- -name '*.svn'`查找.svn文件或目录
- -exec`对每个找到的文件执行命令
- rm -rf {}删除找到的文件或目录
- \;结束-exec命令
用户和组账号管理
1. /etc/passwd
命令:cat /etc/passwd
- /etc/passwd是用户账户数据库文件,包含用户名、UID、GID、主目录和登录Shell
2. /etc/shadow
命令:cat /etc/shadow
- /etc/shadow包含用户密码的加密信息及密码策略,只有root用户可以访问
3. cat /etc/group
命令:cat /etc/group
- /etc/group是组账户数据库文件,包含组名、GID和组成员
4. sudo passwd -l username
命令:sudo passwd -l tom
- -l参数锁定用户,使其无法登录,tom是要锁定的用户名
5. chage -E 1900-01-01 username
命令:chage -E 2025-01-01 tom
- -E 1900-01-01参数将用户tom的密码过期日期设置为2025年1月1日
6. passwd -S username
命令:passwd -S tom
- -S参数显示用户tom的密码状态
文件系统权限
1. 查看权限
ls -la
命令:ls -la
-l参数长格式显示文件信息,包括权限、所有者、大小等-a参数显示所有文件,包括隐藏文件(以.开头的文件)
2. 更改文件所有者
chown root file
命令:sudo chown tom dd.zip
- chown命令更改文件或目录的所有者
- tom是新所有者
- dd.zip是要更改所有者的文件名
3. 修改文件权限
chmod
命令:chmod u=rwx,g+rw,o-r anaconda-ks.cfg
- u=rwx参数设置用户(所有者)具有读、写、执行权限
- g+rw参数设置组增加读、写权限
- o-r参数设置其他用户移除读权限
命令:chmod 400 anaconda-ks.cfg
- 400设置所有者具有读权限,其他用户无权限
系统日志管理
1. 查看日志文件
ls -l /var/log
命令:ls -l /var/log
- /var/log是系统日志文件所在目录,包含系统、认证、内核等日志文件
- ls -l长格式列出目录下的日志文件
2.认证日志
sudo tail -3 /var/log/auth.log
命令:sudo tail -3 /var/log/auth.log
- /var/log/auth.log
保存认证相关的日志文件
- tail -3查看日志文件的最后3行
3. 二进制日志
who /var/log/wtmp | tail -5
命令:who /var/log/wtmp | tail -5
- /var/log/wtmp保存登录和登出事件的二进制日志文件
- who显示登录用户
- tail -5显示最后5条记录
4. 系统日志
dmesg
命令:dmesg
- dmesg显示系统启动过程中产生的内核日志信息
5. systemd 日志
journalctl
命令:journalctl -xe
- -x参数显示详细的日志信息
- -e参数跳转到日志的末尾
内存和磁盘管理
1.内存管理
free -m
命令:free -m
- -m参数以MB为单位显示内存使用情况
2. 查看磁盘使用情况
df -hT
命令:df -hT
- -h参数以人类可读的格式显示(如GB、MB)
- -T参数显示文件系统类型
3.查看文件或目录大小
sudo du ./* -hsc
命令:sudo du ./* -hsc
- -h参数以人类可读的格式显示大小
- -s参数显示每个文件或目录的总大小
- -c参数显示所有项目的总和
4. 查看磁盘分区
sudo fdisk -l
命令:sudo fdisk -l
- fdisk -l列出所有磁盘的分区信息
5. 挂载分区
sudo mount /dev/sdb1 /mnt/usb
命令:sudo mount /dev/sdb1 /mnt/usb
- dev/sdb1是要挂载的设备分区
- /mnt/usb是挂载点,使用sudo mkdir /mnt/usb,创建挂载点
网络工具
1. 查看网络接口
ifconfig / ip addr
命令:ifconfig
- fconfig显示网络接口配置
命令:ip addr
- ip addr显示网络接口详细信息
2.启用/禁用网络接口
sudo ifdown ens33 / sudo ifup ens33
命令:sudo ifdown ens33
- ifdown禁用网络接口ens33
命令:sudo ifup ens33
- ifup启用网络接口ens33
3. 查看网络配置
/etc/network/interfaces
命令:cat /etc/network/interfaces
/etc/network/interfaces`是网络接口配置文件
4. 查看网络连接
netstat -natup / ss -natup
命令:netstat -natup
- netstat命令数字方式显示地址
- -n参数数字方式显示地址
- -a参数显示所有连接
- -t参数显示TCP连接
- -u参数显示UDP连接
- -p参数显示与连接相关的进程信息
命令:ss -natup
- ss命令数字方式显示地址
- -n参数数字方式显示地址
- -a参数显示所有连接
- -t参数显示TCP连接
- -u参数显示UDP连接
- -p参数显示与连接相关的进程信息
5.查看 ARP 表
arp -en
命令:arp -en
- arp命令显示 ARP 缓存(IP 地址到 MAC 地址的映射)
- -e参数显示 ARP 表
- -n参数以数字方式显示 IP 地址
6. 查看路由表
route / ip route
命令:route
- route命令显示或修改路由表。
命令:ip route
- ip route命令显示路由表的现代命令
7.添加静态路由
sudo ip route add 10.13.37.0/24 dev ens33
命令:sudo ip route add 10.13.37.0/24 dev ens33
- 10.13.37.0/24是目标网络
- dev ens33是通过ens33接口转发流量
8.追踪路由
traceroute offensive-security.com
命令:traceroute offensive-security.com
traceroute命令显示数据包到目标主机的路径
SSH服务
1. 启动服务
命令:sudo systemctl start ssh
- systemctl命令启动服务
- ssh是服务名
2.连接SSH
命令:ssh root@localhost
- ssh命令连接SSH服务
- root@localhost是以root用户连接本地主机
3. 配置文件
命令:cat /etc/ssh/sshd_config
- /etc/ssh/sshd_config是SSH服务的配置文件
4.客户端配置
命令:hash knownHosts yes
- hash knownHosts yes 是一个用于配置SSH客户端的命令,它放在SSH配置文件中,用于告诉SSH客户端在 ~/.ssh/known_hosts 文件中存储远程主机公钥的哈希值,而不是存储完整的公钥。
5. 远程拷贝
命令:scp root@1.1.1.1:/root/apache.txt new.txt
- scp命令远程拷贝文件
- root@1.1.1.1:/root/apache.txt是源文件路径
- new.txt是目标文件名
- 该命令用于从远端服务器上拉取文件到本地
命令:scp 0708.txt root@10.0.0.0:/root
- scp命令远程拷贝文件
- root@10.0.0.0:/root是所要放到的远程服务器上的目录
- 0708.txt是本地文件名
- 该命令把本地文件推送到远程服务器上
6. 查看历史命令
命令:history
- history命令显示用户的历史命令列表