Linux简介
linux是一个操作系统,就像windows一样。它和windows还是有很大区别的,linux是开源系统他的版本众多而且使用起来比windows复杂。大型的服务系统都是linux系统,因为他强大的内核,有优异的服务性能,作为计算机的学习者是一个必学的系统。
系统命令
查看命令
ls
ls是最基础的查看文件夹的命令
单纯的ls只输出目录下没有隐藏的文件和文件夹使用参数可以获得更多信息。参数格式解释:-a是参数 后面的–all是英文全称,在使用总简称方便都是用简称。
使用ls可以阅读帮助信息,ls --help 或者 man ls
-a
1 2 3 4 5 6 -a, --all #打印出所有的文件包括隐藏文件和本级(.)上级(..)目录 -A, --almost-all #除了本级上级目录其他全打印 root@bl:~# ls -a . .cache i.txt .profile .. .config .jupyter .pydistutils.cfg
-l
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -l #列出详细信息 root@bl:~# ls -l total 466964 drwxr-xr-x 20 root root 4096 Apr 21 12:51 anaconda3 -rw-r--r-- 1 root root 478051940 Jan 31 2017 Anaconda3-4.2.0-Linux-x86_64.sh -rwxr-xr-x 1 root root 55 Feb 29 21:53 bash.sh drwxr-xr-x 5 root root 4096 Jun 29 23:09 C drwxr-xr-x 3 root root 77824 Jul 1 11:22 crunch -rw-r--r-- 1 root root 146 Feb 17 20:35 Gemfile -rw-r--r-- 1 root root 100 Feb 17 20:35 Gemfile.lock -rw-r--r-- 1 root root 4 Feb 28 21:38 i.txt -rw------- 1 root root 1929 Apr 21 12:53 mycert.pem -rw-r--r-- 1 root root 4 Feb 28 21:38 o.txt drwxr-xr-x 3 root root 4096 Feb 17 21:01 vendor drwxr-xr-x 6 root root 4096 Apr 21 12:23 venv
使用这个命令可以看到很多信息,输出结果解释:
以第一个为例:
1 2 3 4 5 6 7 8 drwxr-xr-x 20 root root 4096 Apr 21 12:51 anaconda3 d代表文件夹 -代表文件 rwxr-xr-x 这里三个为一组,分别表示拥有者,root,其他人权限,rwx分别代表读写执行-代表没有这个权限(s)代表网络接口程序 20 代表文件硬连接数,使用ln命令进行连接 root root 分别代表拥有者和拥有者所在组 4096表示大小 Apr 21 12:51 最近访问修改的时间 anaconda3 名字如果是一个符号链接,那么会有一个 “->” 箭头符号,后面根一个它指向的文件名
-h
人性化展示结合-l参数使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -h, --human-readable root@bl:~# ls -lh total 457M drwxr-xr-x 20 root root 4.0K Apr 21 12:51 anaconda3 -rw-r--r-- 1 root root 456M Jan 31 2017 Anaconda3-4.2.0-Linux-x86_64.sh -rwxr-xr-x 1 root root 55 Feb 29 21:53 bash.sh drwxr-xr-x 5 root root 4.0K Jun 29 23:09 C drwxr-xr-x 3 root root 76K Jul 1 11:22 crunch -rw-r--r-- 1 root root 146 Feb 17 20:35 Gemfile -rw-r--r-- 1 root root 100 Feb 17 20:35 Gemfile.lock -rw-r--r-- 1 root root 4 Feb 28 21:38 i.txt -rw------- 1 root root 1.9K Apr 21 12:53 mycert.pem -rw-r--r-- 1 root root 4 Feb 28 21:38 o.txt drwxr-xr-x 3 root root 4.0K Feb 17 21:01 vendor drwxr-xr-x 6 root root 4.0K Apr 21 12:23 venv
可以看出字节变成了更容易理解的存储单位。
–time
使用这个参数可以查看文件的atime/ctime
1 2 ls --time=atime -l ls --time=ctime -l
-r
1 2 -r, --reverse #将输出的反排 -R, --recursive #递归列出子目录
-Q
1 -Q, --quote-name #将输出名字用引号括起来
-1
这个是数字1,
lspci
其实这也属于ls命令范畴,列出pci设备
1 2 3 4 5 6 7 8 9 10 11 root@bl:~# lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device 00:04.0 Communication controller: Red Hat, Inc. Virtio console 00:05.0 SCSI storage controller: Red Hat, Inc. Virtio block device 00:06.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon
我也看不懂,有时候总是遇到驱动问题,就参考一下这个是否加载了硬件
lsusb
列出usb接口的设备
1 2 3 root@bl:~# lsusb Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd QEMU USB Tablet Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
捣鼓无线遇到问题的时候经常用到
lsmod
显示载入系统的模块
1 2 3 4 5 root@bl:~# lsmod Module Size Used by intel_rapl_msr 20480 0 intel_rapl_common 28672 1 intel_rapl_msr nfit 69632 0
看不懂学习不会受到什么影响
自定义命令识别
linux系统用的多的会发现有时候用 ll可以输出ls -l 有的系统确不行,其实这是因为自定义了系统命令识别
可以使用which 命令查看源命令目标文件是什么
1 2 root@bl:~# which ls /bin/ls
也可以使用alias查看全部的自定义命令
1 2 3 4 5 root@bl:~# alias ll alias ll=' ls -l' root@bl:~# alias alias lh='ls -lh' alias ll=' ls -l'
使用alias定义命令
1 2 3 4 5 root@bl:~# alias al="alias" root@bl:~# al alias al='alias' alias lh='ls -lh' alias ll=' ls -l'
成功将al指向了alias以后输入al就等于输入了alias
dir
dir命令和ls非常相似,参数基本可以共用。而且在windows也有这个命令,详细内容可看CMD基础 节约篇章不再重复描述。
stat
查看文件的操作时间
1 2 3 4 5 6 7 8 9 root@bl:~# stat C File: C Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fe01h/65025d Inode: 393236 Links: 5 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-06-29 09:18:13.777841952 +0800 Modify: 2020-06-29 23:09:21.494070326 +0800 Change: 2020-06-29 23:09:21.494070326 +0800 Birth: -
file是名字
size表示大小 blocks文件使用的数据块总数 IO blockIO块大小 directory表示这个是文件夹如果是文件显示regular file
device设备 Inode标志值 links 硬链接
access权限
access最近访问时间
modify文件内容的修改时间
change文件的状态时间
dpkg
用来查看命令有关的软件
top
使用top命令可以调出实时的进程,相当于任务管理器
1 2 3 4 Tasks: 78 total, 1 running, 77 sleeping, 0 stopped, 0 zombie % Cpu(s): 0.3 us, 0.2 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 3940.5 total, 2854.5 free, 109.2 used, 976.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 3589.3 avail Mem
根据英文基本上能够看懂参数的意思
free
列出内存的使用状况,一般加上参数-h使显示更人性化
1 2 3 4 root@bl:~# free -h total used free shared buff/cache available Mem: 3.8Gi 109Mi 2.8Gi 2.0Mi 976Mi 3.5Gi Swap: 0B 0B 0B
uname
显示系统的信息
不加参数单纯显示系统类型
-a
显示完整系统信息
1 2 root@bl:~# uname -a Linux bl 5.4.0-kali3-amd64 #1 SMP Debian 5.4.13-1kali1 (2020-01-20) x86_64 GNU/Linux
其实我这个系统是一个单纯的Debian我修改成了kali的镜像源显示出来的也是kali
-r
1 2 root@bl:~# uname -r 5.4.0-kali3-amd64
ps
显示进程
单纯使用ps可以显示目前正在运行的进程
1 2 3 4 5 root@bl:~# ps PID TTY TIME CMD 129377 pts/0 00:00:00 bash 129408 pts/0 00:00:00 top 129427 pts/0 00:00:00 ps
经常结合kill使用干掉进程
-ef
显示出进程的UID ,PID,PPID,C,STIME,TTY,TIME CMD
UID是用户ID,PID是进程ID,PPID是父进程ID
-aux
显示出进程的USER,PID ,%CPU, %MEM ,VSZ ,RSS,TTY, STAT START ,TIME COMMAND
kill
结束进程经常使用-9参数
kill -9 PID
1 2 3 4 5 6 7 8 9 10 root@bl:~# ps PID TTY TIME CMD 129377 pts/0 00:00:00 bash 129408 pts/0 00:00:00 top 129440 pts/0 00:00:00 ps root@bl:~# kill -9 129408 root@bl:~# ps PID TTY TIME CMD 129377 pts/0 00:00:00 bash 129441 pts/0 00:00:00 ps
updatedb
更新本地数据库,没什么太大的拓展性,有的系统没有这命令,我使用的parrot系统有这条命令
tail
查看文件后面的内容,默认查看十行
-n参数设置需要看的行数
1 2 3 4 root@bl:~# tail -n 3 a.txt 10 11 12
-f参数同步更新,如果文件后面被追加内容也同时显示
watch
每隔几秒运行程序,并查看结果
每隔两秒运行一下tail a.txt,显示结果打印出来。
grep
将指定的内容继续检索,应用及其广泛。
grep筛选的目标输出只会打印包含目标的行
1 2 root@bl:~# ifconfig | grep "172" inet 172.18.54.193 netmask 255.255.240.0 broadcast 172.18.63.255
-a 或者 -b
显示目标前后几行
1 2 3 4 root@bl:~# ifconfig | grep -a1 "127.0.0" lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host>
-v
规定不显示的内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 root@bl:~# ifconfig | grep -v "127.0.0" eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.18.54.193 netmask 255.255.240.0 broadcast 172.18.63.255 inet6 fe80::216:3eff:fe10:87c5 prefixlen 64 scopeid 0x20<link> ether 00:16:3e:10:87:c5 txqueuelen 1000 (Ethernet) RX packets 1641371 bytes 370730139 (353.5 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1691349 bytes 199917917 (190.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 48 bytes 3960 (3.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 48 bytes 3960 (3.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig命令返回值中只有含127.0.0的行没有打印出来。
-r
递归查询所有的文件及内容找到需要查询的字符
默认在当前目录下查询
1 root@bl:~# grep -r "find something"
还可以在父目录进查询
1 root@bl:~# grep -r "find something" ..
有两个子命令,egrep和fgrep
egrep正则表达式检索
1 2 root@bl:~# ifconfig | egrep "1.2" inet 172.18.54.193 netmask 255.255.240.0 broadcast 172.18.63.255
fgrep原文检索不能使用正则表达式
其实直接使用grep可以同时用正则和原文,它已经包含了egrep和fgrep
whereis
全部目录查照文件名
1 2 root@bl:~# whereis shadow shadow: /etc/shadow /usr/include/shadow.h /usr/share/man/man5/shadow.5.gz
awk
列筛选工具,主要作用是分隔字符串
-F参数指定分隔符,一般使用" "。如果想打印第一个需要使用’{print $1}'注意这里是单引号,$0表示全部
1 2 3 4 5 6 7 8 9 10 11 root@bl:~# ps | awk -F " " '{print $1}' PID 130623 130737 130738 root@bl:~# ps | awk -F " " '{print $0}' PID TTY TIME CMD 130623 pts/0 00:00:00 bash 130739 pts/0 00:00:00 ps 130740 pts/0 00:00:00 awk
'{print NF}'打印所有的域数
1 2 3 4 5 root@bl:~# ps | awk -F " " '{print NF}' 4 4 4 4
从命令来看,ps用空格分开的话一共有4段这些就是域数
cut
cut也是分隔字符串,不过他和awk是有区别的,cut在指定分隔符后输出内容不会包括分隔符。但是有些情况需要用到分隔符分隔又需要用到分隔符。
使用-d参数指定分隔符
使用-f选择需要选择的段
1 2 3 4 5 root@bl:~# ps |cut -d " " -f 2 131502 131526 131527
将空格作为分隔符,如果输出第一个字段全都是空格。
wc
统计字节行数等信息的。
-l
统计行数
1 2 root@bl:~# cat a.txt | wc -l 18
输出的内容有18行
-c
统计字节数
1 2 root@bl:~# cat a.txt | wc -c 45
这个文本有45个字节
-w
统计字数
1 2 root@bl:~# cat a.txt | wc -w 18
-L
打印最长行的长度
1 2 root@bl:~# cat a.txt | wc -L 2
单纯使用wc会返回三个信息
1 2 root@bl:~# ps | wc 5 20 148
分别代表行数,字数,字节数
sort
对内容进行排序,默认是正序排列
-r参数倒序排列
uniq
剔除重复的内容
paste
合并文件,但是不会生成新的文件,仅仅在屏幕上打印出来
1 2 3 4 5 6 root@bl:~# cat i.txt 1 a root@bl:~# cat o.txt 1 b root@bl:~# paste i.txt o.txt 1 a 1 b
join
将两个文件相同的进行合并,合并内容打印仅仅在屏幕上打印出来
1 2 3 4 5 6 root@bl:~# cat i.txt 1 a root@bl:~# cat o.txt 1 b root@bl:~# join i.txt o.txt 1 a b
系统配置命令
ifconfig
这个命令是用于显示网络信息,调试网络的时候非常重要,windows里是ipconfig,linux里无法使用ipconfig
单纯输入ifconfig显示信息如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 root@bl:~# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.18.54.193 netmask 255.255.240.0 broadcast 172.18.63.255 inet6 fe80::216:3eff:fe10:87c5 prefixlen 64 scopeid 0x20<link> ether 00:16:3e:10:87:c5 txqueuelen 1000 (Ethernet) RX packets 1661659 bytes 373296201 (356.0 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1708554 bytes 205831385 (196.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 48 bytes 3960 (3.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 48 bytes 3960 (3.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
很多人只是用来看一下ip信息,其实这一串输出信息里有很大的学问,协议方面的知识涉及的比较多
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 上面的输出信息整体可以分为两大块 eth0 和 lo 这是两个网路适配器,eth0是用来连网的,lo是自身环路 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 flags是标志符号 UP 表示网卡打开 broadcast 代表有广播地址 running 代表网卡插着线 multicast 代表可多播 mtu 代表最大传输单元 inet 172.18.54.193 netmask 255.255.240.0 broadcast 172.18.63.255 分别是ip地址 子网掩码 广播地址 inet6 fe80::216:3eff:fe10:87c5 prefixlen 64 scopeid 0x20<link> ipv6地址 地址的掩码长度 该网络接口的作用域仅该接口有效 ether 00:16:3e:10:87:c5 txqueuelen 1000 (Ethernet) mac地址 发送队列的大小,此处是1000MB RX packets 1661659 bytes 373296201 (356.0 MiB) 接收时,总的正确数据包数 RX errors 0 dropped 0 overruns 0 frame 0 接收时,总的错误数据包数 丢弃的数据包数 由于过速丢弃的数据 由于frame错误而丢弃的数据包数 TX packets 1708554 bytes 205831385 (196.2 MiB) 发送时,正确的数据包数 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 发送时,总的错误数据包数 丢弃的数据包数 由于过速丢弃的数据 由于carrier错误而丢弃的数据包数 冲突信息包的数目
mtu值
让本地MTU值与网络的MTU值一致,以致于不会出现数据包的大小超过网络传输的MTU值,而不得不进行拆包,然后组包,再进行转发。
探测mtu值
1 ping -s 1460 -M do baidu.com
强制发送1460(+28)字节的包给百度,慢慢累积,如果发送错误则查过了最大mtu
更改mtu
1 ifconfig eth0 mtu 1488 up
一般mtu值都不需要更改
打开/关闭网络适配
有时候会出现网络适配器没有打开的情况,需要用到ifconfig -a进行查看,然后选择网卡打开
1 2 3 ifconfig -a ifconfig eth0 up ifconfig eth0 down
如果使用macchanger更改mac地址必须要先关闭这个网卡
手动设置ip
修改mac地址
1 ifconfig eth0 hw ether mac
iwconfig
用来显示无线网卡的命令,有些系统没有这个命令
hciconfig
蓝牙适配器,用来显示蓝牙的命令,有些系统没有这个命令
dhclient
用来配置网络的命令,常用的就两个
-r释放ip信息
信息释放完后没有ip地址,无法上网。
-v显示详细获取信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ┌─[root@parrot]─[~] └──╼ #dhclient -v Internet Systems Consortium DHCP Client 4.4.1 Copyright 2004-2018 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/eth0/00:0c:29:c9:00:54 Sending on LPF/eth0/00:0c:29:c9:00:54 Sending on Socket/fallback DHCPREQUEST for 192.168.248.143 on eth0 to 255.255.255.255 port 67 DHCPACK of 192.168.248.143 from 192.168.248.254 RTNETLINK answers: File exists bound to 192.168.248.143 -- renewal in 784 seconds.
这种类型的返回信息表示已经成功获得ip地址。
route
路由配置
-n查看网关(gateway)
1 2 3 4 5 6 ┌─[root@parrot]─[~] └──╼ #route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.248.2 0.0.0.0 UG 0 0 0 eth0 192.168.248.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Gateway下面的是网关地址
添加默认网关
1 2 3 4 5 6 7 8 9 ┌─[root@parrot]─[~] └──╼ #route add default gw 192.168.248.1 ┌─[root@parrot]─[~] └──╼ #route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.248.1 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.248.2 0.0.0.0 UG 100 0 0 eth0 192.168.248.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
添加了一个192.168.248.1的网关,其实是没有这个网关的,等于没有用
删除网关
1 2 3 4 5 6 7 8 ┌─[root@parrot]─[~] └──╼ #route del default gw 192.168.248.1 ┌─[root@parrot]─[~] └──╼ #route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.248.2 0.0.0.0 UG 100 0 0 eth0 192.168.248.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
如果删除192.168.248.2这个网关则无法上网
添加路由
1 2 3 4 5 6 7 8 9 ┌─[root@parrot]─[~] └──╼ #route add -net 192.168.247.0/24 gw 192.168.248.2 eth0 ┌─[root@parrot]─[~] └──╼ #route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.248.2 0.0.0.0 UG 0 0 0 eth0 192.168.247.0 192.168.248.2 255.255.255.0 UG 0 0 0 eth0 192.168.248.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
添加了一条192.168.247.0指向网关的路由。将子网指向网关
netstat
网络状态,windows系统也经常使用到这个命令
经常用的参数组合-pantu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ┌─[root@parrot]─[~] └──╼ #netstat -pantu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:5433 0.0.0.0:* LISTEN 1001/postgres tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 10048/sshd: root@pt tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 9779/sshd: root@pts tcp 0 0 127.0.0.1:5985 0.0.0.0:* LISTEN 1284/python3 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1284/python3 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2953/sshd: /usr/sbi tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1002/postgres tcp 0 0 192.168.248.143:22 192.168.248.1:50349 ESTABLISHED 9779/sshd: root@pts tcp 4437 0 192.168.248.144:54366 35.190.48.50:443 CLOSE_WAIT 1284/python3 tcp 3007 0 192.168.248.144:54508 35.190.48.50:443 CLOSE_WAIT 1284/python3 tcp 0 0 192.168.248.144:22 192.168.248.1:50415 ESTABLISHED 10048/sshd: root@pt tcp6 0 0 ::1:5433 :::* LISTEN 1001/postgres tcp6 0 0 ::1:6010 :::* LISTEN 10048/sshd: root@pt tcp6 0 0 ::1:6011 :::* LISTEN 9779/sshd: root@pts tcp6 0 0 ::1:5432 :::* LISTEN 1002/postgres tcp6 0 0 ::1:5432 ::1:43940 ESTABLISHED 1838/postgres: 11/m tcp6 0 0 ::1:43940 ::1:5432 ESTABLISHED 1284/python3 udp 0 0 0.0.0.0:4500 0.0.0.0:* 764/charon udp 0 0 0.0.0.0:500 0.0.0.0:* 764/charon udp 0 0 192.168.248.144:68 192.168.248.254:67 ESTABLISHED 652/NetworkManager udp 0 0 0.0.0.0:68 0.0.0.0:* 9801/dhclient udp 0 0 0.0.0.0:68 0.0.0.0:* 9739/dhclient udp6 0 0 :::4500 :::* 764/charon udp6 0 0 :::500 :::* 764/charon udp6 0 0 ::1:44191 ::1:44191 ESTABLISHED 1002/postgres udp6 0 0 ::1:44526 ::1:44526 ESTABLISHED 1001/postgres
输出了协议,Recv-Q,Send-Q,本机IP端口,目标IP端口,状态,PID,程序名称
查看网关
1 2 3 4 5 6 7 8 ┌─[root@parrot]─[~] └──╼ #netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.248.2 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.248.2 0.0.0.0 UG 0 0 0 eth0 192.168.247.0 192.168.248.2 255.255.255.0 UG 0 0 0 eth0 192.168.248.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
使用-r就可以显示网关了,加上n是为了更加快速。
dig
dig收集dns信息的一个工具,很多linux系统自带,简单介绍一下,在信息收集章节会认真讲解
语法:dig 域名/IP [参数] [@dns服务器]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 root@bl:~# dig biadu.com ; <<>> DiG 9.11.14-3-Debian <<>> biadu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16108 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: b6003694f39d03eac98477205f02a11bfcceb0cfbca23494 (good) ;; QUESTION SECTION: ;biadu.com. IN A ;; ANSWER SECTION: biadu.com. 357 IN A 47.254.33.193 ;; Query time: 391 msec ;; SERVER: 100.100.2.136#53(100.100.2.136) ;; WHEN: Mon Jul 06 11:57:15 CST 2020 ;; MSG SIZE rcvd: 82
dig 域名不加参数则使用自己指向的DNS服务器。输出信息在信息收集介绍
使用指定服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 root@bl:~# dig biadu.com @8.8.8.8 ; <<>> DiG 9.11.14-3-Debian <<>> biadu.com @8.8.8.8 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55096 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;biadu.com. IN A ;; ANSWER SECTION: biadu.com. 331 IN A 47.254.33.193 ;; Query time: 30 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Mon Jul 06 11:57:25 CST 2020 ;; MSG SIZE rcvd: 54
使用不同的DNS服务器获得的内容也不一样。
文件操作命令
touch
创建文件,如果是单纯创建文件则不需要参数
1 2 3 root@bl:~# touch 1 root@bl:~# dir 1 ...
每个文件都有指定的信息
access最近访问时间
modify文件内容的修改时间
change文件的状态时间
这些信息其实可也通过touch进行修改
1 2 3 4 5 6 7 8 9 root@bl:~# stat 1 File: 1 Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fe01h/65025d Inode: 405054 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-07-06 12:03:32.659502366 +0800 Modify: 2020-07-06 12:03:32.659502366 +0800 Change: 2020-07-06 12:03:32.659502366 +0800 Birth: -
这个是刚刚创建的一个文件,使用touch修改时间
touch -t yymmddhhss 文件名
1 root@bl:~# touch -t 1912151230 1
将时间修改为了2019.12.15-12:30
1 2 3 4 5 6 7 8 root@bl:~# stat 1 File: 1 Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fe01h/65025d Inode: 405054 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2019-12-15 12:30:00.000000000 +0800 Modify: 2019-12-15 12:30:00.000000000 +0800 Change: 2020-07-06 12:09:11.384923291 +0800
只修改了文件内容的修改时间,和访问时间,状态时间没有修改。
cp
拷贝文件或目录
1 root@bl:~# cp /etc/shadow .
拷贝/etc/shadow到当前目录下,使用方法简单,拷贝时还能更改名字
要想拷贝目录需要加传参数-r
1 root@bl:~# cp -r C/2/ ./0
将目录C/2拷贝到当前目录并改名为0
mv
移动文件或目录
使用方法和cp是一样的,主要时用来改名的
移动目录时不需要加参数
vim
vim是对文件进行编辑的一个编辑器,使用虽然复杂,但他是一个必学的技能。有些linux系统是终端,没有图形界面,编辑文件最常用到的就是vim或vi,他俩大同小异vim是vi的加强,学了vim就足够了。