Linux基础(1)
声明
学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
- openssl
openssl是一个开源的工具包,提供各种加密,解密,签名,验证功能。
passwd表示这个命令是对处理密码进行相关操作,-1参数是指定使用MD5加密算法对密码进行加密。
MD5:一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值
同理,-5表示使用SHA-256加密算法进行哈希加密处理。
SHA-256:该算法是一种更安全的哈希加密算法,它生成的哈希值长度为256位,每次对相同的密码进行sha-256加密时,由于加密过程每次都会引入随机因素(如盐值)就会导致两次加密的结果不同,即使攻击者拿到密文也很难逆向出明文。
文件管理
-
创建空文件
touch file
![]()
-
删除文件
rm file
![]()
-
新建目录
mkdir newdir
![]()
-
删除目录
rmdir newdir
![]()
-
重命名文件
mv f1.txt f2.txt
![]()
-
移动文件
mv f1.txt wj1
![]()
-
复制文件
cp f1.txt f2.txt
![]()
-
软链接
软链接类似于Windows中的快捷方式,软链接文件保存的是指向原始文件的路径,当你访问软链接时,系统会根据路径去访问原文件。
软链接是一个独立的文件,具有自己的inode。
软链接可以指向任何文件或目录,甚至指向不存在的文件(此时会变成“悬空链接”)。
删除原文件不会影响软链接,但访问软链接会报错,因为它指向的目标文件不存在。
ln -s [目标文件或目录路径] [软链接文件名]

- 硬链接
硬链接是指一个文件系统中的多个目录条目指向同一个数据块(inode)。硬链接并不会创建新的文件,而是创建一个新的目录项,它和原文件共享相同的inode号。
工作原理:硬链接直接指向文件的数据块,而不是文件路径。所有指向相同inode的硬链接都指向同一份数据内容。
删除任何一个硬链接都不会影响到文件数据的存在,只有在所有硬链接都被删除后,数据才会被清除。
硬链接不能跨文件系统创建(即链接必须在同一分区内)。
硬链接不能链接目录,除非使用超级用户权限。
ln [源文件] [硬链接文件名]

软链接与硬链接的区别:
软链接像是指向目标文件的快捷方式,它是一个独立的文件,可以跨文件系统,但如果目标文件删除,软链接会变得无效。硬链接直接共享相同的文件数据,不受目标文件删除的影响,直到所有链接都删除后文件才会真正被删除,且只能在同一文件系统中使用。
搜索文件
- which
which 是用于查找可执行文件位置的命令。它可以显示指定命令的绝对路径,即它会在环境变量 PATH 所指定的目录路径中查找指定的可执行文件。
which <command>

- locate
locate 是用来快速查找文件的命令。与 find 命令不同,locate 并不实时遍历文件系统,而是通过查询一个预建的数据库来查找文件,这使得它比 find 命令要快得多。这个数据库是由 updatedb 命令定期更新的,sudo updatedb可以手动更新数据库。
locate <filename>
-i 忽视大小写,-r 使用正则表达式,-c 统计匹配文件数量。

- sudo
sudo 允许普通用户使用管理员权限执行命令。

``
- find
find 用于在文件系统中查找文件和目录,支持多种查找条件和操作选项,适用于查找文件、目录、符号链接等,并且能够执行一系列操作,如删除、复制、移动文件等。
find [路径] [选项] [表达式]

常见用法
find . -name "*.txt"查找当前目录及其子目录下所有 .txt 文件
-name按文件名查找, . 表示从当前目录开始查找。 "*.txt" 表示所有以 .txt 结尾的文件。
find . -type d查找当前目录下所有的目录
-type按文件类型查找,f 普通文件,d 目录 ,l 符号链接。
find . -size +1G查找大于 1GB 的文件
-size按文件大小查找
find . -mtime -7查找最近 7 天内修改过的文件
-mtime按修改时间查找,-7 表示查找最近 7 天内修改过的文件,+7 表示查找 7 天之前修改过的文件。
find . -perm 777查找所有权限为 777 的文件
-perm 按文件权限查找。
find . -name "*.log" -exec rm -f {} \;查找所有 .log 文件并删除
-exec执行操作,{}表示 find 命令找到的每个文件。 \;表示命令结束。
- whereis
whereis 用于查找某个命令的二进制文件、源代码文件和帮助文件等。它不仅查找 PATH,还会搜索一些特定的系统路径。

- whereis,find,locate,which的区别
which只查找可执行文件,且仅限于 PATH 中的目录。whereis搜索范围有限,只查找系统的标准路径。find查找速度较慢,尤其是在大文件系统中。locate依赖于数据库,可能不准确,不能进行复杂条件查找。
如果只关心某个命令的路径,使用 which 或 whereis。需要在文件系统中根据多个条件查找文件,使用 find。需要快速查找文件并且能接受数据库过期的情况,使用 locate。
用户账号数据库
- /etc/passwd
用于存储系统用户的账户信息。
用户名:密码占位符:用户ID (UID):组ID (GID):用户信息:用户的主目录:登录Shell
- etc/shadow
专门用来存储用户账户的密码信息(加密后的密码)以及与密码相关的管理设置。与 /etc/passwd 不同,/etc/shadow 文件是专门用来存放敏感数据的,因此它的权限更加严格,只有管理员(如 root)具有读取和写入权限。
用户名:加密密码:上次修改日期:最小密码年龄:最大密码年龄:警告期:不活动期:过期日期:保留字段
- /etc/group
用来存储系统中所有用户组(group)信息的文件。
组名:密码:组ID:组成员
- cat etc/passwd
cat命令可以查看上诉的信息。

- useradd [username]
添加用户,添加用户后需要使用passwd命令(sudo passwd [username])设置新密码,否则无法用。
- passwd -l username
锁定(禁用)账户,可以用passwd -u username解锁账户。
chage -E 1990-01-01 kali
用于设置用户 kali 的账户过期日期为 1990年1月1日,也就是让该账户在这个日期之后无法登录。
chage 是用于更改用户账户密码和账户过期设置的命令。-E 选项指定账户的过期日期,若想设置永不过期可以用-1。
sudo chage -l kali可以查看过期时间。
passwd -S username
查看指定用户的密码状态信息。

文件管理权限
Linux中一切都是文件
- ls -la /etc/passwd
-la是ls的命令组合,-l是以长格式显示文件的信息,包括权限、所有者、文件大小、修改时间等,-a 选项表示显示所有文件,包括以点(.)开头的隐藏文件。可以用-liah显示详细信息

- chown root file
chown 命令用于更改文件或目录的所有者和/或所属组。使用 chown root file 命令的作用是将文件 file 的所有者更改为 root 用户。

- sudo chmod u=rwx,g+rw,o-r file
chmod 命令用于修改文件或目录的权限,u=rwx将文件的所有者(u 代表用户、即文件的拥有者)权限设置为 rwx,即读取(r)、写入(w)和执行(x)权限。g+rw将文件的同组用户(g 代表组)权限增加为读取(r)和写入(w)权限,注意这里是使用了+号,表示是增加权限。o-r将文件的其他用户(o 代表其他用户)权限移除读取权限(r)。这里的 - 表示移除权限。

- chmod 400 file
以数字方式设置文件权限,第一位表示所有者权限,第二位表示同组用户权限,第三位表示其他用户权限。

日记信息
- ls -l /var/log
/var/log 是系统日志文件所在目录。

- sudo tail -3 /var/log/auth.log
/var/log/auth.log是系统中的日志文件,记录与认证相关的事件,例如登录、sudo 权限使用、SSH 登录等。tail用于查看文件的最后部分,默认为显示文件的最后 10 行。-3选项表示显示文件的最后 3 行
auth.log文件需要系统打开rsyslog服务的时候,才会记录这个日志文件
如果没有这个服务,需要通过apt-get install rsyslog 进行安装
systemctl status rsyslog 查看服务开启状态

- last
读取 /var/log/wtmp 文件,列出系统上的登录历史

- lastlog
会读取 /var/log/lastlog 文件,显示每个用户的最后登录时间和登录信息。

- who /var/log/wtmp | tail -5
/var/log/wtmp 是一个二进制的日志文件,记录了系统登录与注销的信息,who 命令用于显示当前登录的用户信息。

1. var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
2. /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
3. /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
4. /var/log/boot.log — 包含系统启动时的日志。
5. /var/log/daemon.log — 包含各种系统后台守护进程日志信息。
6. /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
7. /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
8. /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
9. /var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
10. /var/log/user.log — 记录所有等级用户信息的日志。
11. /var/log/Xorg.x.log — 来自X的日志信息。
12. /var/log/alternatives.log – 更新替代信息都记录在这个文件中。
13. /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
14. /var/log/cups — 涉及所有打印信息的日志。
15. /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
16. /var/log/yum.log — 包含使用yum安装的软件包信息。
17. /var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
18. /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
19. /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
20. /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:
• /var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
• /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
• /var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
• /var/log/prelink/ — 包含.so文件被prelink修改的信息。
• /var/log/audit/ — 包含被 Linux audit daemon储存的信息。
• /var/log/samba/ – 包含由samba存储的信息。
• /var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
• /var/log/sssd/ – 用于守护进程安全服务。
- dmesg
用于显示内核环缓冲区(kernel ring buffer)中的信息。这些信息通常包括系统启动时的日志消息、硬件驱动程序加载、内核错误消息、设备连接和断开、系统警告等。

- systemd 日志相关命令
journalctl是用于查看和管理 systemd 日志的命令行工具,能够查看、过滤和操作由 systemd journal 管理的日志消息,这些日志包含了系统的各种信息,如启动日志、内核日志、应用日志、服务日志等。

**查看指定时间的日志**
journalctl --since="2021-09-16 14:22:02"
journalctl --since "30 min ago"
journalctl --since yesterday
journalctl --since "2021-01-01" --until "2021-09-16 13:40"
journalctl --since 07:30 --until "2 hour ago"
**显示尾部的最新10行日志**
journalctl -n
**显示尾部指定行数的日志**
journalctl -n 15
**实时滚动显示最新日志**
journalctl -f
与tail -f类似
**查看指定服务的日志**
journalctl /usr/lib/systemd/systemd
**比如查看docker服务的日志**
systemctl status docker
**查看指定进程的日志**
journalctl _PID=665
**查看某个路径的脚本的日志**
journalctl /usr/bin/bash
**查看指定用户的日志**
journalctl UID=33 --since today
**查看某个 Unit 的日志**
journalctl -u nginx.service
journalctl -u nginx.service --since today
存储管理
- free -m
free用于显示系统内存(包括物理内存和交换空间)的总量、已使用量、空闲量等信息-m是让输出结果以MB为单位进行显示.

- df -hT
用于查看文件系统磁盘空间和类型,-h以“人类可读”的格式显示磁盘使用情况,也就是以合适的单位(如 GB、MB)显示磁盘空间,而不是以字节显示。-T显示每个文件系统的类型。

-
sudo du ./* -hsc
用于检查当前目录下所有文件和子目录大小,du:磁盘使用(disk usage)命令,用于显示文件和目录的磁盘空间占用情况。
./*:当前目录下的所有文件和子目录(* 是通配符,代表当前目录下的所有文件和目录)。
-h:以“人类可读”的格式显示大小(即使用 KB、MB、GB 等单位,而不是字节)。
-s:显示每个指定文件或目录的总大小,而不是递归地显示每个文件/目录下的大小。
-c:在最后显示所有指定文件和目录的总和(总计),并显示一个总的大小。

-
sudo fdisk -l
用于列出当前系统中所有磁盘及其分区信息。
fdisk:一个用于管理磁盘分区的命令行工具。它用于查看、创建、删除和修改磁盘分区表。
-l:列出(list)系统中所有的磁盘和分区信息。
![]()
-
sudo mount -t /dev/sda2 /mnt/data
mount 是挂载命令,它的作用是将指定的文件系统(在这里是由设备 “/dev/sda2”
表示的分区)挂载到 Linux 文件系统的挂载点(在这里是 “/mnt/data”)

基本网络操作
- ifconfig
用于显示和配置网络接口信息的命令行工具。

- ip addr
用于查看和管理网络接口的命令,同时提供了比ifconfig更详细的信息显示,包括接口状态、IP地址、子网掩码、广播地址。

- sudo ifdown eth0
ifdomwn用于关闭指定的网络接口。

- sudo ifup eth0
ifup 用于开启指定的网络接口。

- /etc/network/interfaces
是一个系统文件,用于配置网络接口的静态、IP地址、子网掩码、网关等信息。

- NetworkManager
是一个用于在 Linux 系统中管理网络连接的工具。它提供了图形和命令行接口,用于配置和管理网络设备,如有线、无线、VPN 以及移动网络。NetworkManager 的目标是简化网络配置,自动处理网络连接的创建、切换和管理,使得用户能够更方便地使用网络资源。
- netstat -natup
用于显示网络连接的状态,尤其是 TCP/IP 连接的详细信息。

- ss -natup
用于显示网络连接状态的命令,它是 ss 工具的一个常见用法,ss 是比 netstat更现代、性能更优的网络统计工具。它通常用于替代 netstat,提供更快、更详细的网络连接信息。
ss: 是 Socket Stat 的缩写,是一个用于显示套接字(socket)状态的工具。
`-n`: 以数字形式显示地址和端口号,而不是尝试解析为域名和服务名。
-a: 显示所有的连接,包括监听中的(LISTEN)和已经建立的(ESTABLISHED)连接。
-t: 仅显示 TCP 连接。
`-u`: 仅显示 UDP 连接。
-p: 显示与连接相关的进程信息,包括进程的 PID 和名称(需要超级用户权限)。

- arp -en
是一个用于查看和管理网络中的地址解析协议(ARP)缓存表的命令。ARP(Address Resolution Protocol)是用于将网络层地址(如 IP 地址)转换为数据链路层地址(如 MAC 地址)的协议。
arp: 地址解析协议命令,用于显示和修改计算机的 ARP 缓存表。
-e: 显示ARP表的扩展信息,通常包括设备的接口信息。
-n: 以数字格式显示 IP 地址和 MAC 地址,而不尝试解析为主机名或其他信息。

- route
用于查看和操作内核 IP 路由表 。

- ip route
用于查看和管理路由表.

-
sudo ip route add 10.13.27.0/24 dev eth1
sudo:以管理员权限执行命令,通常需要权限来修改路由表。
ip route add:添加一个新的路由条目。
10.13.27.0/24:这是目标网络的地址,表示一个子网 10.13.27.0,子网掩码为 255.255.255.0(即 10.13.27.0/24)。
dev eth1:指定通过哪个网络接口发送数据包。 -
traceroute offensive-security.com
tracerout 是一个用于跟踪数据包从本地主机所经过的路由路径的工具。

ssh服务
- sudo systemctl start ssh
启动服务
systemctl:是 systemd 管理的命令行工具,用于控制系统和服务(服务的启动、停止、重启等操作)。
start:指示 systemctl 启动指定的服务。
ssh:表示 OpenSSH 服务。SSH(Secure Shell)协议允许安全地远程登录到计算机,通常用于远程管理和文件传输。

- systemctl status ssh
查看服务状态。

- systemctl stop ssh
关闭服务。

- ssh root@localhost
连接本地主机。

- ssh user1@ip
远程连接ssh。user1是指定用户
配置文件
- /etc/ssh/sshd_config
SSH服务器主要配置文件。

- hash knownHosts yes
是一个 SSH 客户端配置选项,用于配置是否对已知主机文件(~/.ssh/known_hosts)中的主机名进行哈希处理。具体来说,这个选项决定了 SSH 客户端是否将已知主机的公钥存储为哈希值,而不是存储主机名和公钥的明文形式。
HashKnownHosts:这是 OpenSSH 客户端的一个配置选项。它控制是否将已知主机的公钥以哈希形式存储。
yes:启用此选项后,已知主机文件中的条目将以哈希值存储,而不是直接以主机名和公钥的明文形式存储。
-
scp root@10.10.10.1:/home/kali/.bashrc ./Copiebashrc
scp:安全地复制文件。root@10.10.10.1:表示从 IP 地址为 10.10.10.1 的主机上,使用 root 用户进行连接。:/home/kali/.bashrc:远程主机上要复制的文件路径。./Copiebashrc:本地保存文件的路径和文件名,这里假设你希望将文件保存为 Copiebashrc,并保存在当前工作目录中。
查看历史命令
- history
history n:显示最后 n 条命令历史。
!n:执行历史记录中的第 n 条命令。
history -c:清除命令历史记录。
history -d offset:删除历史记录中的指定条目(offset 是命令的编号)。











浙公网安备 33010602011771号