Web 狗的要懂的 Linux 基础知识
Linux 知识众多,发行版又广,为了避免每次着急时查资料的尴尬情况出现,特此将我平时可能用到的命令都记录下来,以方便后面使用。
更新源
Ubuntu
# 备份更新源
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 22.04 中科大源
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse" >> /etc/apt/sources.list
# 20.04 中科大源
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
# 20.04 清华源
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list
# 19.04 清华源
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ disco-proposed main restricted universe multiverse" >> /etc/apt/sources.list
# 18.04 阿里源
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
# 18.04 清华源
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
# 16.04 清华源
echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse" >> /etc/apt/sources.list
# 14.04 阿里源
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
Kali
# 备份更新源
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 中科大源
echo "deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib" >> /etc/apt/sources.list
# 浙大源
echo "deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free" >> /etc/apt/sources.list
echo "deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free" >> /etc/apt/sources.list
# 东软大学
echo "deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib" >> /etc/apt/sources.list
Debian
# 备份更新源
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# Debian 11 bullseye 中科大源
echo "deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free " >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free " >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free " >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free " >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free " >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free " >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free " >> /etc/apt/sources.list
echo "deb-src https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free " >> /etc/apt/sources.list
# Debian 10 buster 网易源
echo "deb http://mirrors.163.com/debian/ buster main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ buster-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ buster-backports main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian-security buster/updates main contrib non-free" >> /etc/apt/sources.list
# Debian 9 stretch 网易源
echo "deb http://mirrors.163.com/debian/ stretch main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ stretch-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ stretch-backports main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian-security stretch/updates main contrib non-free" >> /etc/apt/sources.list
# Debian 8 jessie 网易源
echo "deb http://mirrors.163.com/debian/ jessie main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian/ jessie-backports main contrib non-free" >> /etc/apt/sources.list
echo "deb http://mirrors.163.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
CentOS
# 备份更新源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
# 阿里云的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 刷新源
yum update
# 生成缓存
yum makecache
这里我用的是 CentOS7 的更新源,其他源参考如下:
# CentOS 5 国内源替换
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
# CentOS 6 国内源替换
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
proxychains
安装
Ubuntu/Debian
apt install proxychains
CentOS
# 下载到指定目录
cd /usr/local/src
git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
# 安装GCC
yum install gcc
# 手动编译
./configure
make && make install
make install-config
配置
Kali/Ubuntu/Debian
vim /etc/proxychains.conf
CentOS
vim /usr/local/etc/proxychains.conf
测试
proxychains curl https://www.google.com
zsh
Ubuntu/Kali/Debian 安装
# 安装zsh
apt install zsh
# 更改默认shell为zsh
chsh -s /bin/zsh
# 安装oh-my-zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
# 下载命令补全插件
git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
# zshrc配置文件中修改如下内容
plugins=(git zsh-autosuggestions)
# 重新加载zsh配置
zsh
CentOS 安装
# 安装zsh
yum install zsh
除了安装使用 yum 以外,其他配置方法和上面其他发行版系统一样,这里就不再赘述了。
zsh插件
CentOS7 安装 zsh 一些插件和 macOS 下安装相差不多,这里就简单提一下吧:
autojump
快捷目录跳转插件
yum install autojump autojump-zsh -y
在 ~/.zshrc
中配置
plugins=(其他的插件 autojump)
输入zsh
命令生效配置后即可正常使用j
命令,下面是简单的演示效果:
# root @ centos in ~/test/23333 [18:45:14]
$ pwd
/root/test/23333
# root @ centos in ~/test/23333 [18:45:16]
$ cd ~
# root @ centos in ~ [18:45:17] 直接 j 2 就跳转到历史目录了
$ j 2
/root/test/23333
# root @ centos in ~/test/23333 [18:45:20]
$ pwd
/root/test/23333
zsh-syntax-highlighting
命令输入正确会绿色高亮显示,可以有效地检测命令语法是否正确
cd ~/.oh-my-zsh/custom/plugins
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
在 ~/.zshrc
中配置
plugins=(其他的插件 zsh-syntax-highlighting)
输入zsh
命令生效配置
autosuggestions
终端下自动提示接下来可能要输入的命令,这个实际使用效率还是比较高的
cd ~/.oh-my-zsh/custom/plugins
git clone https://github.com/zsh-users/zsh-autosuggestions.git
在 ~/.zshrc
中配置
plugins=(其他的插件 zsh-autosuggestions)
输入zsh
命令生效配置
SSH
安装SSH
Ubuntu
# 直接安装报错
apt install openssh-server
居然报错了,内容如下:
下列软件包有未满足的依赖关系:
openssh-server : 依赖: openssh-client (= 1:7.6p1-4)
依赖: openssh-sftp-server 但是它将不会被安装
推荐: ssh-import-id 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
手动解决依赖,这里是因为 openssh-server 是依赖于 openssh-clien 的,那我们手动安装下指定的版本的openssh-client
# 手动解决依赖
apt install openssh-client=1:7.6p1-4
# 重新安装openssh-server
apt install openssh-server
CentOS
# 安装SSH
yum install openssh-server
Kali/Debian
apt install openssh-server
SSH 自启
# 开机自动启动ssh命令
sudo systemctl enable ssh
# 关闭ssh开机自动启动命令
sudo systemctl disable ssh
允许 root 远程登陆
Ubuntu
# 允许root远程登陆
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# SSH开机自启
systemctl enable ssh
# 开启SSH
/etc/init.d/ssh start
CentOS/Debian/Kali
# 允许root远程登陆
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
# SSH开机自启
systemctl enable sshd
# 开启SSH
systemctl start sshd
ssh 连接非 22 端口
ssh -p 端口 x.x.x.x
ssh 使用公私钥登陆
# 生成公私钥
ssh-keygen
# 到ssh公私钥放的文件夹
cd /root/.ssh/
# 将公钥的内容拷贝到authorized_keys文件中
cat id_rsa.pub >> authorized_keys
# 关闭密码登陆
echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
# 重启ssh
/etc/init.d/ssh restart
效果如下:
将服务器的 rsa 私钥下载下来,然后拷贝到自己的机器上。此时必须使用私钥匙登陆才可以成功:
# 将拷贝下来的私钥设置600权限
chmod 600 ~/Downloads/test_rsa
# 使用私钥登陆
ssh -i ~/Downloads/test_rsa root@10.211.55.9
一台电脑保存多 SSH KEY
假设有这样一个场景
服务器IP | 私钥位置 |
---|---|
1.1.1.1 | ~/.ssh/id_rsa_a |
2.2.2.2 | ~/.ssh/id_rsa_b |
想要自己的电脑保存这两台服务器的私钥的话,可以这样配置:
在 ~/.ssh
目录下创建 config
文件:
vim ~/.ssh/config
输入以下信息:
Host 1.1.1.1
IdentityFile ~/.ssh/id_rsa_a
Host 2.2.2.2
IdentityFile ~/.ssh/id_rsa_b
然后设置私钥的权限:
chmod 600 ~/.ssh/id_rsa_a
chmod 600 ~/.ssh/id_rsa_b
SSH 取消公私钥登陆
# 清空.ssh文件夹
rm -rf /root/.ssh/*
# 允许密码登陆
echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
# 重启SSH服务
/etc/init.d/ssh restart
# CentOS 服务器这样重启
systemctl restart sshd
SCP 拷贝文件
scp 本地文件 用户名@服务器地址:要拷贝的路径
SCP 拷贝非 22 端口文件
scp -P端口 本地文件 用户名@服务器地址:要拷贝的路径
FTP
连接 FTP
最基本的连接方式:
ftp ip
FTP 连接非默认端口:
ftp ip port
或者:
➜ ~ ftp
ftp> open ip port
一个完整的登录示例:
➜ ~ ftp 116.xx.xx.xx 21
Connected to 116.xx.xx.xx.
220 Welcome to www.net.cn FTP service.
Name (116.xx.xx.xx:sqlsec): hyuxxxxxxxxxx
331 Please specify the password.
Password:
230 Login successful.
ftp>
基本操作
目录相关
pwd # 显示远程计算机上的当前目录
ls/dir # 列出当前远程目录的内容,可以使用该命令在Linux下的任何合法的ls选项
cd # 移动到cd 后的目录
cdup/cd .. # 返回上一级目录
lcd # 列出当前本地目录路径
mkdir # 在远程系统中创建目录
rname # 重命名一个文件或目录
redir # 删除远程目录
delete # 删除远程文件
mdelete # 删除多个远程文件
文件上传下载
binary # 用于二进制文件传送(图像文件等)
ascii # 用于文本文件传送
get/mget # 在当前远程目录下复制(一个/多个)文件到本地文件系统当前目录
put/mput # 从当前目录把文件复制到当前远程目录
退出
! # 临时退出ftp模式,返回本地Linux Shell模式,键入exit返回
close # 关闭当前连接
bye/quit # 关闭连接并退出ftp命令模式
JDK
OracleJDK
因为 JDK 官网需要登录验证才可以下载的原因,不能直接通过 wget 来下载 tar.gz 安装包了,得自己手动 copy 一下。
# 解压到/usr/lib/目录下
sudo tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib/
# 编辑/etc/profile 配置文件
sudo vim /etc/profile
末尾添加如下内容:
JAVA_HOME=/usr/lib/jdk1.8.0_221
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
# 重新载入配置文件
source /etc/profile
# 系统注册此 JDK 300 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高
sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk1.8.0_221/bin/java 300
# 验证是否安装成功
java -version
OpenJDK
# 搜索软件列表里的 JDK
apt search openjdk
# 安装 JDK
apt install openjdk-11-jdk
# 验证是否安装成功
java -version
版本切换
安装了多个版本的 JDK,你可以通过以下命令在这些版本之间切换:
sudo update-alternatives --config java
Python
Centos 7
Centos7 自带 Python2 版本和 PIP2,所以我们只要直接安装 Python3即可:
# 搜索可用的Python3版本
yum search python3
# 安装Python3.6版本
yum install python36
# 查看Python版本
python3 -V
Python 3.6.8
# 查看pip版本
pip3 -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
# 升级pip版本
pip install --upgrade pip
pip3 install --upgrade pip
# 安装ipython
pip install ipython
pip3 install ipython
安装pyenv
pyenv 是 Python多版本管理神器,安装起来也很简单:
# 安装基础依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
# 下载pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# 配置pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
zsh
基础入门使用可以参考我的这篇文章macOS pyenv入门使用记录
Ubuntu
pip3安装
sudo apt update
sudo apt install python3-pip
搜索替换
grep 搜索文件内容
# 搜索/home/sqlsec/Desktop/BBS/中的所有 ph p后缀中的 password 关键词
grep -r "password" --include="*.php" /home/sqlsec/Desktop/BBS/
# 可以添加多个后缀
grep -r "关键词" --include="*.后缀1" --include="*.后缀2" 目标路径
# 搜索/home/sqlsec/Desktop/BBS/中的所有php后缀中的password关键词
# 不搜索js后缀
grep -r "password" --include="*.php" --exclude="*.js" /home/sqlsec/Desktop/BBS/
find 查找文件名
# 查找当前目录下所有 .php 的文件
find . -name "*.php"
# 查找所有文件中的 log 文件
find / -name "*.log"
# 目前目录及其子目录下所有最近 20 天内更新过的文件列出
find . -ctime -20
# 查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
find / -type f -size 0 -exec ls -l {} \
查找内容并替换
# 将 file_name文件中的 old 全部替换为 new
sed -i 's/old/new/g' file_name
# 修改 MySQL 的默认端口为 3307
sed -i 's/3306/3307/g' my.cnf
# 批量替换文件夹内容
sed -i "s/old/new/g" `grep "old" -rl floder_path`
用户
修改用户密码
# 修改当前用户密码
passwd
# 修改指定用户密码
passwd 用户名
# 修改root密码
sudo passwd
adduser 新建用户
adduser test
useradd 新建用户
# 创建test用户并自动生成主目录且指定shell为bash
useradd -d /home/test -m test -s /bin/bash
# 设置test用户密码
passwd test
删除用户
# 只删除用户
sudo userdel 用户名
# 连同用户主目录一块删除
sudo userdel -r 用户名
MySQL
Ubuntu
# 安装MySQL客户端
apt install mysql-client
# 安装MySQL服务端
apt install mysql-server
# 启动MySQL
/etc/init.d/mysql start
# 初始化MySQL
sudo mysql_secure_installation
Debian/Kali
# 安装MySQL客户端
apt install mariadb-client
# 安装MySQL服务端
apt install mariadb-server
# 启动MySQL
/etc/init.d/mysql start
# 初始化MySQL
sudo mysql_secure_installation
CentOS
# 安装客户端和服务端 默认root密码为空
yum install mariadb-server
# 启动 mariadb
sudo systemctl start mariadb
# 设置开机自启
sudo systemctl enable mariadb
# 查看mariadb状态
sudo systemctl status mariadb
# 初始化MySQL
sudo mysql_secure_installation
允许 root 远程登陆
# 允许root外部访问连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '这里是root密码' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
查看此时的用户状态:
mysql> select user, host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
+------+-----------+
关闭 root 远程登录
# 删除 host 为 % 的用户
DELETE FROM mysql.user WHERE User= "root" and Host="%";
# 刷新权限
FLUSH PRIVILEGES;
查看此时的用户状态:
mysql> select user, host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1 |
| root | localhost |
+------+-----------+
修改密码
# 修改 root 密码的 SQL语句
use mysql;
set password for 'root'@'localhost' = password('你设置的密码');
# 刷新权限 并退出
flush privileges;
quit;
或者直接命令行下修改:
mysqladmin -uroot -poldpassword password newpassword
连接非 3306 默认端口
mysql -h目标IP地址 -u用户名 -p密码 -P端口
mysql -h10.211.55.9 -uroot -ppassword -P 33060
导出 SQL 文件
# 导出所有数据库
mysqldump -uroot -proot --all-databases >/tmp/all.sql
# 导出 db1、db2 两个数据库的所有数据
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
# 导出 db1 中的 a1、a2 表
mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql
# 导出 db1 表 a1 中 id=1 的数据
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql
# 只导出表结构不导出数据
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql
导入 SQL 文件
mysql -uroot -proot < databases.sql
创建用户
CREATE USER 'test'@'%' IDENTIFIED BY 'test用户的密码';
GRANT ALL PRIVILEGES ON `test`.* TO 'test'@'%';
进程
查看进程
ps -a
ps -au
ps -aux
ps -ef
杀掉进程
kill -9 pid号
杀掉端口进程
# 手工查找 3306 的 PID
netstat -nlp | grep :3306
# 读取 3306 进程的 PID 号
netstat -nlp | grep :3306 | awk '{print $7}' | awk -F"/" '{ print $1 }'
# 杀掉 PID
kill -9 PID
也可以使用下面 1 条命令解决:
kill [']netstat -nlp | grep :3306 | awk '{print $7}' | awk -F"/" '{ print $1 }'[']
Docker
安装
CentOS 7
以下所有操作都是以 root 用户执行
# 更新到最新 yum 包
yum update -y
# 安装Docker以及Docker-compose
yum install -y yum-utils device-mapper-persistent-data lvm2 \
&& yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo \
&& yum install -y docker-ce docker-ce-cli containerd.io \
&& systemctl start docker \
&& yum -y install epel-release \
&& yum -y install python-pip \
&& pip install --upgrade pip \
&& pip install docker-compose
# 查看Docker版本
$ docker version
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.5
API version: 1.40 (minimum version 1.12)
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:24:18 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
# 查看 Docker-compose 版本
$ docker-compose version
docker-compose version 1.25.4, build unknown
docker-py version: 4.1.0
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.0.2k-fips 26 Jan 201
Ubuntu
使用官方自动安装脚本,美滋滋:
sudo apt instal curl
# 自动安装脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 将当前用户添加到 docker 用户组里
sudo usermod -aG docker `whoami`
# 重启生效
reboot
# 检验版本输出是否正常
$ docker version
Client: Docker Engine - Community
Version: 19.03.12
API version: 1.40
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:45:44 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.12
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 48a66213fe
Built: Mon Jun 22 15:44:15 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
Docker 安装完成后那么开始准备安装 Docker Compose 了,首先去官网查看最新的稳定版为多少:
https://github.com/docker/compose/releases
然后手动下载最新版本 赋予执行权限即可:
# 下载我写这篇文章的最新版本 1.27.2
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 查看 Docker-compose 版本
$ docker-compose version
docker-compose version 1.27.2, build 18f557f9
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
国内 Docker 加速还是很有必要配置一下的,编辑一下配置文件:
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
}
内容如下,修改完后重启一下 Docker 服务:
# 配置完成重启 Docker 服务 让配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
入门使用
压缩与解压
压缩
# tar
tar zcvf FileName.tar DirName
# tar.bz2
tar jcvf x.tar xxxx
# gz
gzip FileName
# Z
compress FileName
# tar.Z
tar Zcvf FileName.tar.Z DirName
# zip
zip -r FileName.zip DirName
# war 将 shell.jsp 压缩为 shell.war
jar cvf shell.war shell.jsp
解压
# tar
tar zxvf FileName.tar
# tar.bz2
bzip2 -d FileName.bz2
bunzip2 FileName.bz2
# gz
gzip -d FileName.gz
gunzip FileName.gz
# Z
uncompress FileName.Z
# tar.Z
tar Zxvf FileName.tar.Z
# zip
unzip FileName.zip
常见案例
CentOS 7 升级 OpenSSH
CentOS 自带的 SSH 版本为 OpenSSH 7.4 可以升级到 8 点几的版本。
下载 SSH 包
OpenSSH 软件包:https://ftp.riken.jp/pub/OpenBSD/OpenSSH/portable/
Bash
wget https://ftp.riken.jp/pub/OpenBSD/OpenSSH/portable/openssh-8.3p1.tar.gz
编译安装
解压到 /usr/local/src/
目录下
tar -zxvf openssh-8.3p1.tar.gz -C /usr/local/src
然后进入到 OpenSSH 解压后的目录下 编译安装:
# 进入到目录
cd /usr/local/src/openssh-8.3p1
# 编译安装
./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/ssl --without-openssl-header-check
make && make install
修改配置
# 添加 SSH 配置
echo "PermitRootLogin yes" >> /usr/local/openssh/etc/sshd_config
echo "PubkeyAuthentication yes" >> /usr/local/openssh/etc/sshd_config
echo "PasswordAuthentication yes" >> /usr/local/openssh/etc/sshd_config
# 拷贝配置文件
cp /usr/local/src/openssh-8.3p1/contrib/redhat/sshd.init /etc/init.d/sshd
# SSH 服务
chkconfig --add sshd
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
# 提示覆盖 覆盖掉
cp /usr/local/openssh/sbin/* /usr/sbin/sshd -f
# 这一步提示覆盖 都覆盖掉
cp /usr/local/openssh/bin/* /usr/bin/
重启验证
# 重启服务器
reboot
# 注意是大写V
ssh -V
支持一下
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信
|
支付宝
|
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光