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

-lals的命令组合,-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 是命令的编号)。

posted @ 2024-11-21 02:15  空前123  阅读(31)  评论(0)    收藏  举报