Linux使用手册
系统目录说明
| /boot | 系统启动相关的文件,如内核、initrd,以及 grub(BootLoader) |
|---|---|
| /etc | 配置文件 |
| /home | 用户的家目录,每一个用户的家目录通常默认为/home/USERNAME |
| /root | 管理员的家目录 |
| /lib | 库文件静态库:单在程序中的库,其他程序不能使用该库文件动态库:在内存中,任何用到该库的程序都可以使用/lib/modules:内核模块文件 |
| /media | 挂载点目录,移动设备(在 windows 中,插入一张光盘,系统会自动读取光盘,用户可以直接执行,但在 linux 中,插入光盘后需要在挂载点挂载这个设备之后才可以使用这个设备。) |
| /mnt | 挂载点目录,额外的临时文件系统 |
| /opt | 可选目录,第三方程序的安装目录 |
| /proc | 伪文件系统,内核映射文件 |
| /sys | 伪文件系统,跟硬件设备相关的属性映射文件 |
| /tmp | 临时文件,/var/tmp |
| /var | 可变化的文件,经常发生变化的文件 |
| /bin | 可执行文件,用户命令;其中用到的库文件可能在/lib,配置文件可能在/etc |
| /sbin | 可执行文件,管理命令;其中用到的库文件可能在/lib,配置文件可能在/etc |
| /usr | 大部分软件安装目录 |
注意,安装系统时必须选上 LVM(磁盘扩容技术)
Linux 常用命令
系统管理命令
| 命令 | 说明 |
|---|---|
| stat | 显示指定文件的相关信息,比 ls 命令显示内容更多 |
| who | 显示在线登录用户 |
| cat | 1. cat /etc/*-release 查看系统版本信息 2. cat /usr/test.txt 查看文本 3. cat /usr/test.txt | grep -n "aaa"查看指定内容在文本第几行 |
| lscpu | 查看 cpu 架构、型号、核心数量等;其中架构 x86_64 表示 amd64(x86-64)架构,armv7l 表示 ARMv7 架构,aarch64 表示 ARMv8 架构。 |
| hostname | 显示主机名称 |
| uname | 显示系统信息 |
| ifconfig 或者 ip addr | 显示网络接口信息 |
| ip | 显示网络信息(比 ifconfig 更加现代化的工具),用于配置网络设备 1. ip addr show 显示网络接口信息 2. ip addr add 192.168.1.10/24 dev eth0 配置网络接口,为名为 eth0 添加 IP 地址 192.168.1.10,子网掩码 255.255.255.0。 3. ip link set eth0 up/down 启用/禁用网络接口。 4. ip route show 显示路由表 |
| ping | 测试网络的连通性 |
| netstat -tunlp | 显示网络端口状态信息【-t: 显示 TCP 端口】【-u: 显示 UDP 端口】【-n: 以数字形式显示端口号,而不是尝试解析服务名称】【-l: 仅显示监听(listening)的端口】【-p:显示进程 id】 |
ps -p <PID> -o cmd | 根据进程 id 查找进程的位置,可结合 netstat 实现根据端口查找程序位置【-o:定义输出格式】【cmd: 显示进程命令行信息,对于查看特定进程正在运行的可执行文件或命令非常有用】 |
| clear | 清屏 |
kill -9 <PID> | 杀死一个进程【-9 强制删除】【-15 优雅地停止进程,允许进程完成当前任务并清理资源】 |
| free | 显示当前内存和交换空间的使用情况,默认以 KB 为单位 -h 适合人类看 -b 以 B 为单位、还可使用-k、-m、-g |
| du -sh * | 当前目录下的所有文件和文件夹的大小 |
| du -sh * | sort -h | 当前目录下的所有文件和文件夹的大小,从小到大排序 |
| du -sh * | sort -nr | 文件按从大到小排序 |
| df -h | 显示文件系统磁盘空间的使用情况 |
| top | 类似任务管理器,消耗资源越多的进程越靠前显示 |
| htop | 类似任务管理器,比 top 指令更适合人类观看 |
| ps | 显示瞬间的进程状态 |
| ps aux | 查看当前进程 | grep {name} 根据名称查找进程 |
| pstree -aup | 树状图的方式展现进程之间的派生关系 -p {pid} 根据父进程查看子进程 |
| sudo timedatectl set-timezone Asia/Shanghai | 设置时区 |
| timedatectl | 使时区设置生效 |
| date "+%Y-%m-%d %H:%M:%S" | 查看当前时间 |
操作文件
特别注意: 谨慎执行rm -fr * ,此命令很危险,相当于将系统文件全部删除!
| 命令 | 说明 | 语法 | 参数 | 参数说明 |
|---|---|---|---|---|
| ls | 显示文件和目录列表 | ls [-alrtAFR] [name...] | -l | 列出文件的详细信息 |
| -a | 列出当前目录所有文件,包含隐藏文件(Linux 中以.开头的文件都是隐藏文件) | |||
| -h | 文件大小显示对人类友好 | |||
| -S | 从大到小排序 | |||
| -Sr | 从小到大排序 | |||
| mkdir | 创建目录 | mkdir [-p] dirName | -p | 递归创建目录 |
| cd | 切换目录 | cd [dirName] | ||
| touch | 生成一个空文件 | |||
| echo | 生成一个带内容文件 | echo abcd > 1.txt echo 1234 >> 1.txt | > :覆盖之前内容; >>:在原有内容末尾追加 | |
| cat | 显示文本文件内容 | cat [-AbeEnstTuv] [--help] [--version] fileName | 1. cat /etc/os-release 查看系统版本信息 2. cat /usr/a.txt 查看文本 3. cat /usr/a.txt | grep -n "xx"查看指定内容在文本第几行 | |
| cp | 复制文件或目录 | cp [options] source dest | -r | 同时拷贝该目录下的所有文件 |
| -R | 拷贝所有文件,不含文件夹 | |||
| scp | 跨主机复制文件或目录 | scp [可选参数] file_source file_target | -r | 递归复制整个目录 本机复制到其他机器: scp -r /usr/local root@192.168.1.2:/usr 从其他机器复制到本机: scp -r root@test.com:/home /home |
| rm | 删除文件 | rm [options] name... | -f | 强制删除文件或目录 |
| -r | 同时删除该目录下的所有文件 | |||
| mv | 移动文件或目录 | mv [options] source dest | ||
| find | 查找当前目录及其子目录下所有文件 | -name | 文件名 | |
| grep | 在指定的文本文件中查找指定的字符串 | |||
| tree | 用于以树状图列出目录的内容 | |||
| pwd | 显示当前工作目录 | |||
| ln | 建立软连接 | ln -s <源文件或目录> <软连接路径> -s:表示创建软连接(不加 -s 则创建硬链接) | 相当于快捷方式 | |
| more | 分页显示文本文件内容 | |||
| head | 显示文件开头内容 | |||
| tail | 显示文件结尾内容 | -n | 结尾行数,查询日志文件常用 如:tail -n 200 -f xxx.log | |
| -f | 跟踪输出 | |||
| tee | 读取输入数据,将其内容输出成文件 | -a | 附加到既有文件的后面,而非覆盖它 | |
| -i | 忽略中断信号 | |||
| --help | 在线帮助 |
命令连接符
- ;
# 按顺序执行,每个命令的执行与前一个命令的成功与否无关。
command1 ; command2 ; command3- &&
# 按顺序执行,前一个命令成功执行(返回退出代码 0),才会执行下一个命令。
command1 && command2 && command3- ||
# 按顺序执行,前一个命令执行失败(返回非 0 的退出代码),才会执行下一个命令。
command1 || command2 || command3- &
# 命令在后台运行,允许您继续使用终端或控制台进行其他操作,而不必等待命令完成。
long_running_command &- \
# 一个很长的命令换行输入
very_long_command \
--option1 value1 \
--option2 value2文本编辑器
vim
- 指令模式:vim + 要操作的文件名 ; 例如:vim a.txt 若文件存在,则修改,不存在则新建并修改
- 在指令模式中输入
/用于查找内容,如/log.dir会定位到内容包含 log.dir 的位置
编辑模式:输入
a进行编辑模式- 快捷保存修改: 文本编辑完成,按住 shift, 双击 z 保存并退出
命令模式:在指令模式下,输入
:进行命令模式
:q 直接退出 vim
:wq 保存后退出 vim ,并可以新建文件
:q! 强制退出
:w file 将当前内容保存成某个文件
:set nu 或 :set number 在编辑文件显示行号
:set nonumber 在编辑文件不显示行号
:set paste 粘贴文本
:%s/旧字符串/新字符串/g 全局替换文本
关机、重启
关机:shutdown -h now 、halt
重启:shutdown -r now 、reboot
下载
- wget https://www.xxx.com
压缩、解压
- tar.gz
| 命令 | 语法 | 参数 | 参数说明 |
|---|---|---|---|
| tar | tar [-cxzjvf] 自定义的打包名称 欲打包目录路径 | ||
| -c | 建立一个归档文件的参数指令 | ||
| -x | 解开一个归档文件的参数指令 | ||
| -z | 是否需要用 gzip 压缩 | ||
| -j | 是否需要用 bzip2 压缩 | ||
| -v | 压缩的过程中显示文件 | ||
| -f | 使用档名,在 f 之后要立即接档名 | ||
| -tf | 查看归档文件里面的文件 |
压缩文件夹:tar -zcvf test.tar.gz test\
解压文件夹:tar -zxvf test.tar.gz
.zip
apt install unzip unzip xxx.zip // 解压 unzip xxx.zip -d /path/to/target // 解压并指定解压目录.gz
| 命令 | 语法 | 参数 | 参数说明 |
|---|---|---|---|
| gzip | gzip [选项] 压缩(解压缩)的文件名 | ||
| -d | 解压缩 | ||
| -l | 对每个压缩文件,显示压缩文件的大小,未压缩文件的大小,压缩比,未压缩文件的名字 | ||
| -v | 对每一个压缩和解压的文件,显示文件名和压缩比 | ||
| -num | 用指定的数字 num 调整压缩的速度,-1 或--fast 表示最快压缩方法(低压缩比),-9 或--best 表示最慢压缩方法(高压缩比)。系统缺省值为 6 |
文件权限管理
-rw-r--r-- 1 root root 44 Nov 2 12:56 hello.html| -rw-r--r-- | 1 | root | root | 44 | Nov 2 12:56 | hello.html |
|---|---|---|---|---|---|---|
| 文档类型及权限 | 连接数 | 文档所属用户 | 文档所属组 | 文档大小 | 文档最后被修改日期 | 文档名称 |
| - | rw- | r-- | r-- |
|---|---|---|---|
| 文档类型 | 文档所有者权限(user) | 文档所属用户组权限(group) | 其他用户权限(other) |
-:普通文件【文档类型】rw-:说明用户 root 有读写权限,没有运行权限r--:表示用户组 root 只有读权限,没有写和运行的权限r--:其他用户只有读权限,没有写权限和运行的权限
文档类型
d表示目录l表示软连接–表示普通文件c表示串行端口字符设备文件b表示可供存储的块设备文件- 余下的字符 3 个字符为一组。
r只读,w可写,x可执行,-表示无此权限
修改权限--文件夹和文件权限
# c 显示更改的部分,但不显示未改变的文件
# f 强制更改文件的权限,不显示错误信息
# v 显示详细的处理过程
# R 递归更改目录权限
chmod [-cfvR] [--help] [--version] [who] [+ | - | =] [mode] 文件名- chmod u=rwx,g+rw,o+r hello.html 【为 hello.html 文件所属用户添加可读可写可执行权限、所属组添加可读可写权限、其他用户添加可读权限】
- chmod +x hello.html 【为 hello.html 添加可读可执行权限】
- chmod 777 hello.html 【为 hello.html 添加所有权限】
- chmod -R u+rw g+rw o+rw test 【递归为 test 目录中,分别给用户、组、其他人添加读写权限,和 chmod -R a+rw test 等效】
- chmod -R a+rw test 【递归为 test 目录中所有人添加读、写权限】
数字设定法
数字设定法中数字表示的含义
- 0 表示没有任何权限
- 1 表示有可执行权限 =
x - 2 表示有可写权限 =
w - 4 表示有可读权限 =
r
用数字来表示权限如 chmod 755 file_name
| r w x | r – x | r - x |
|---|---|---|
| 4 2 1 | 4 - 1 | 4 - 1 |
| user | group | others |
若要 rwx 属性则 4+2+1=7
若要 rw- 属性则 4+2=6
若要 r-x 属性则 4+1=5
修改权限--用户名和用户组
chmod 是用来设置文件夹和文件权限的
而 chown 是用来设置用户组的,比如授权某用户组
chown [-cfhvR] [--help] [--version] user[:group] 文件名- chown -R root:root /tmp/tmp1 【递归把 tmp1 的用户名和用户组改成 root 和 root】
Linux 修改数据源
配置 Ubuntu 数据源
# 查看Ubuntu数据源
cat /etc/apt/sources.list实测国内最快的 Ubuntu 数据源是中科大,推荐使用,貌似阿里云会限速
- 阿里云 http://mirrors.aliyun.com/ubuntu/
- 中科大 http://mirrors.ustc.edu.cn/ubuntu/
- 网易 http://mirrors.163.com/ubuntu/
APT(Advanced Packaging Tool) 是 Debian/Ubuntu 类 Linux 系统中的软件包管理程序, 使用它可以找到想要的软件包, 而且安装、卸载、更新都很简便;也可以用来对 Ubuntu 进行升级; APT 的源文件为 /etc/apt/ 目录下的 sources.list 文件
提示
对于阿里云 ECS 用户,需要将配置文件sources.list中 https://mirrors.aliyun.com/ 替换成 http://mirrors.cloud.aliyuncs.com/ 进行使用 参考地址
sed -i 's/https:\/\/mirrors.aliyun.com/http:\/\/mirrors.cloud.aliyuncs.com/g' \
/etc/apt/sources.list- 设置数据源
一般情况下,将 /etc/apt/sources.list 或 /etc/apt/sources.list.d/ubuntu.sources 文件中 Ubuntu 默认的源地址 http://archive.ubuntu.com/ 替换为数据源地址(如http://mirrors.ustc.edu.cn/) 即可。
当然也可以直接编辑 APT 源文件(需要使用 sudo)。编辑/etc/apt/sources.list或/etc/apt/sources.list.d/ubuntu.sources文件并粘贴如下内容(注意不同版本会有差异,以下以 Ubuntu 22.04 为例):
# 数据源仓库
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
# 源码仓库
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse# 数据源仓库
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# 默认注释了源码仓库,如有需要可自行添加
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# 数据源仓库
deb http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse
# 源码仓库
deb-src http://mirrors.163.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ jammy-backports main restricted universe multiverse- 更新数据源,使配置生效
apt update常用 APT 命令
apt 和 apt-get 都是用于包管理的命令行工具,官方推荐使用 apt,因为它更简洁、提供更好的用户体验(如进度条、颜色高亮),apt 可以完全替代 apt-get 的日常使用。
安装软件包
# 安装软件包 apt install packagename # 删除软件包 apt remove packagename # 更新软件包列表 apt update # 升级所有软件包 apt upgrade其它 APT 命令
# 搜索 apt search package # 获取包信息 apt show package # 删除包及配置文件 apt remove package --purge # 清理无用的包 apt clean && apt autoclean # 检查是否有损坏的依赖 apt check # 列出已安装的软件包 apt list --installed # 查看可升级的软件包 apt list --upgradable
配置 CentOS 数据源
# 查看CentOS数据源
cat /etc/yum.repos.d/CentOS-Base.reporepo 是基础源。
epel 可理解为基础源的升级款,其中的软件高达 1 万多个,而基础源中貌似只有 5000 多。
centos 需要 repo 和 epel 来实现 yum 功能。
- 修改 repo 源
第一步:移动你的原镜像文件,以免出错后无法复原,可以恢复。
CentOS 中 yum 的源都在/etc/yum.repos.d/路径下。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup第二步:下载新的 CentOS-Base.repo 到/etc/yum.repos.d/
推荐使用阿里巴巴源
CentOS 6:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoCentOS 6:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS 7:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo# 运行 yum makecache 生成缓存
# 如需安装epel,可稍后执行
yum clean all
yum makecache- 修改 epel 源
epel 是作为桥的,centos 等企业 linux 不具有 repo,所以需要安装 epel,使得其具有 yum 功能
第一步
# 备份(如有配置其他epel源)
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
# 安装 epel 配置包
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
# # 修改 epel 源(CentOS7 为例)
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# 将 repo 配置中的地址替换为阿里云镜像站地址
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*第二步
# 修改 epel 源
Epel 6:
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-archive-6.repo
Epel 7:
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo# 运行 yum makecache 生成缓存
yum clean all
yum makecacheLinux 修改用户名和主机名
- 修改用户名
Centos 和 Ubuntu 修改用户名方法一致
# 切换到root用户
# 如果没使用过root,就可能需要更改root用户密码
sudo passwd root
# 切换为超级用户
su
# 以下3个文件的老用户名全部修改为新用户名
# 1.修改用户密码文件
vi /etc/passwd
# 2.修改用户信息文件
vi /etc/shadow
# 3.修改用户组文件
vi /etc/group
# 最后修改家目录
# 同时注意一定要修改其所属的用户和用户组,chown时加上个 -R,这个很关键,重启即可完成
mv /home/oldname /home/newname
chown -R newname:groupname /home/newname
sudo reboot now# 切换到root用户
# 如果没使用过root,就可能需要更改root用户密码
sudo passwd root
# 切换为超级用户
su
# 以下3个文件的老用户名全部修改为新用户名
# 1.修改用户密码文件
vi /etc/passwd
# 2.修改用户信息文件
vi /etc/shadow
# 3.修改用户组文件
vi /etc/group
# 最后修改家目录
# 同时注意一定要修改其所属的用户和用户组,chown时加上个 -R,这个很关键,重启即可完成
mv /home/oldname /home/newname
chown -R newname:groupname /home/newname
sudo reboot now- 修改主机名
# 修改如下两文件中旧的主机名,重启即可
sudo vi /etc/hosts
sudo vi /etc/hostname
sudo reboot now# 修改主机名
hostnamectl set-hostname new_name
# 更新 hosts文件;可以cat看下原来是啥样;
vi /etc/hosts
# 如下
# 127.0.0.1 new_name
# ::1 new_nameLinux 修改 ip、防火墙
ens33 没有 ip
# 使用如下两条命令即可
sudo dhclient ens33
sudo ifconfig ens33
# 没有 ifconfig 命令
sudo apt install net-tools# 启动ens33服务
ifconfig ens33 up
# 修改配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 将ONBOOT=no改为ONBOOT=yes;表示系统启动时,网络接口有效;
# 将BOOTPROTO="dhcp"改为BOOTPROTO=static;表示固定的IP地址;
# 重启网络服务
service network restart修改 ip
# 适用Ubuntu22版本
# 查询默认网关
route -n
# 修改配置 (.yaml文件可能不为00-installer-config.yaml,自行查看)
vim /etc/netplan/00-installer-config.yaml
#修改为
network:
ethernets:
# ip addr 默认 ens33
ens33:
dhcp4: false
# 指定MAC地址,注意每台服务器唯一,可避免同一局域网MAC冲突,格式是十六进制
macaddress: XX:XX:XX:XX:XX:XX
# IP 地址
addresses: [192.168.11.131/24]
routes:
- to: default
# 网关 对应宿主机的网关,关系到是否接通外网
via: 192.168.11.2
nameservers:
# DNS 地址
addresses: [8.8.8.8,114.114.114.114]
dhcp6: false
version: 2
# 重启服务使配置生效
netplan apply
systemctl restart systemd-networkd# 修改配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 将ONBOOT=no改为ONBOOT=yes;表示系统启动时,网络接口有效;
# 将BOOTPROTO="dhcp"改为BOOTPROTO=static;表示固定的IP地址;
# 同时在下方添加如下配置
IPADDR=192.168.0.110
GATEWAY=192.168.0.1
NETMASK=255.255.255.0
DNS1=192.168.0.1
DNS2=8.8.8.8
# 修改MAC地址,注意每台服务器唯一,可避免同一局域网MAC冲突
vim /etc/network/interfaces
# 找到要修改的网络接口部分,通常是以 iface 关键字开始的一行
# 添加或修改 hwaddress 参数,指定你想要的新MAC地址
# 网络接口名称以 eth0 为例
auto eth0
iface eth0 inet dhcp
hwaddress XX:XX:XX:XX:XX:XX
# 重启网络服务
service network restart修改防火墙
# ubuntu防火墙使用的是iptables,为简化iptables设置,使用ufw工具
# 安装
sudo apt install ufw
# 开启防火墙
sudo ufw enable
# 关闭防火墙
sudo ufw disable
# 启用默认策略(此策略默认拒绝一切请求)
sudo ufw default deny
# 开放访问权限给指定主机IP
sudo ufw allow from 192.168.0.112
# 查看防火墙状态
sudo ufw status
# 开放端口(可指定协议,不指定表示可以在任意协议下连接)
sudo ufw allow 80/tcp
sudo ufw allow 80
# tcp协议下拒绝192.168.1.66访问22端口
sudo ufw deny proto tcp from 192.168.1.66 to 192.168.1.242 port 22
# 批量开放端口
sudo ufw allow 8080-10000
# 重启防火墙
sudo ufw reload# 查看防火墙状态
systemctl status firewalld
# 关闭防火墙临时
systemctl stop firewalld
# 关闭防火墙永久
systemctl disable firewalld
# 开启防火墙
systemctl start firewalld
# 防火墙指定入站ip、开放端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.111"
port protocol="tcp" port="8080" accept"
# 防火墙移除指定入站ip、开放端口
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source
address="192.168.44.101" port port="8080" protocol="tcp" accept"
# 查看防火墙的所有开发规则
firewall-cmd --list-all
# 重启防火墙
systemctl restart firewalld允许 root 远程登陆
Ubuntu 和 CentOS 配置相同
vim /etc/ssh/sshd_config
# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password # 注释此行
#PermitRootLogin prohibit-password # 只允许ssh秘钥登录
PermitRootLogin yes # 允许密码或秘钥登录
StrictModes yes
重启服务
service ssh restart提示
注意:ssh 服务端的配置文件名为 sshd_config,若没有这个文件或者文件名称为 ssh_config(客户端配置),则需安装 ssh 服务端!
apt install openssh-serveryum install openssh-server使用 SSH 密钥对登录 Linux
本地生成密钥
# 若本机不存在 id_rsa 密钥对,使用以下命令生成 ssh-keygen -t rsa -b 4096 -C "986379932@qq.com"将公钥添加到服务器
# 修改权限 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys # 连接到服务器,并粘贴生成的公钥(id_rsa.pub) vim ~/.ssh/authorized_keys使用 SSH 密钥对登录
ssh -i ~/.ssh/id_rsa root@server_ip_or_domain
Linux 账户设置
概述:Linux 操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统 会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰
添加用户组 groupadd ABC(组名)
在用户组中添加用户 useradd -g ABC abc(用户名)
设置密码 passwd abc 回车
切换用户 su abc
提升用户权限 在/etc/sudoers 中设置用户 abc 的权限(由于此文件只读,要输入指令
chmod 777 /etc/sudoers 将它设置为可读可写;改回为只读,将 777 改为 440 即可),追加
abc ALL=(ALL) ALL 即可(这是最高权限)
删除用户 userdel abc
使用 root 用户
在实际生产操作中,我们基本上都是使用超级管理员账户操作 Linux 系统,也就是 Root 用户,Linux 系统默认是关闭 Root 账户的,我们需要为 Root 用户设置一个初始密码以方便我们使用
- 设置 Root 账户密码
sudo passwd root- 切换到 Root
su用户账户说明
- 普通用户
普通用户在系统上的任务是进行普通操作
- 超级管理员
管理员在系统上的任务是对普通用户和整个系统进行管理。对系统具有绝对的控制权,能够对系统进行一切操作。用 root 表示,root 用户在系统中拥有最高权限,默认下 Ubuntu 用户的 root 用户是不能登录的。
- 安装时创建的系统用户
此用户创建时被添加到 admin 组中,在 Ubuntu 中,admin 组中的用户默认是可以使用 sudo 命令来执行只有管理员才能执行的命令的。如果不使用 sudo 就是一个普通用户。
组账户说明
- 私有组
当创建一个用户时没有指定属于哪个组,Linux 就会建立一个与用户同名的私有组,此私有组只含有该用户。
- 标准组
当创建一个用户时可以选定一个标准组,如果一个用户同时属于多个组时,登录后所属的组为主组,其他的为附加组
账户系统文件说明
/etc/passwd
每一行代表一个账号,众多账号是系统正常运行所必须的,例如 bin,nobody 每行定义一个用户账户,此文件对所有用户可读。每行账户包含如下信息:
root:x:0:0:root:/root:/bin/bash- 用户名: 就是账号,用来对应 UID,root UID 是 0。
- 口令: 密码,早期 UNIX 系统密码存在此字段,由于此文件所有用户都可以读取,密码容易泄露,后来这个字段数据就存放到 /etc/shadow 中,这里只能看到 X。
- 用户标示号(UID): 系统内唯一,root 用户的 UID 为 0,普通用户从 1000 开始,1-999 是系统的标准账户,500-65536 是可登陆账号。
- 组标示号(GID): 与 /etc/group 相关用来规定组名和 GID 相对应。
- 注释: 注释账号
- 宿主目录(主文件夹): 用户登录系统后所进入的目录 root 在 /root/itcast
- 命令解释器(shell): 指定该用户使用的 shell ,默认的是 /bin/bash
/etc/shadow
为了增加系统的安全性,用户口令通常用 shadow passwords 保护。只有 root 可读。每行包含如下信息:
root:$6$Reu571.V$Ci/kd.OTzaSGU.TagZ5KjYx2MLzQv2IkZ24E1.yeTT3Pp4o/yniTjus/rRaJ92Z18MVy6suf1W5uxxurqssel.:17465:0:99999:7:::账号名称: 需要和 /etc/passwd 一致。
密码:
经过加密,虽然加密,但不表示不会被破解,该文件默认权限如下:
- -rw------- 1 root root 1560 Oct 26 17:20 passwd-
- 只有 root 能都读写
最近修改密码日期: 从 1970-1-1 起,到用户最后一次更改口令的天数
密码最小时间间隔: 从 1970-1-1 起,到用户可以更改口令的天数
密码最大时间间隔: 从 1970-1-1 起,必须更改的口令天数
密码到期警告时间: 在口令过期之前几天通知
密码到期后账号宽限时间
密码到期禁用账户时间: 在用户口令过期后到禁用账户的天数
保留
/etc/group
用户组的配置文件
root:x:0:- 用户组名称
- 用户组密码: 给用户组管理员使用,通常不用
- GID: 用户组的 ID
- 此用户支持的账号名称: 一个账号可以加入多个用户组,例如想要 itcast 加入 root 这个用户组,将该账号填入该字段即可 root❌0:root, icast 将用户进行分组是 Linux 对用户进行管理及控制访问权限的一种手段。一个中可以有多个用户,一个用户可以同时属于多个组。该文件对所有用户可读。
/etc/gshadow
该文件用户定义用户组口令,组管理员等信息只有 root 用户可读。
root:\*::- 用户组名
- 密码列
- 用户组管理员的账号
- 用户组所属账号
账户系统常用命令
增加用户
useradd 用户名
useradd -u (UID号)
useradd -p (口令)
useradd -g (分组)
useradd -s (SHELL)
useradd -d (用户目录)如:useradd lusifer
增加用户名为 lusifer 的账户
修改用户
usermod -u (新UID)
usermod -d (用户目录)
usermod -g (组名)
usermod -s (SHELL)
usermod -p (新口令)
usermod -l (新登录名)
usermod -L (锁定用户账号密码)
usermod -U (解锁用户账号)如:usermod -u 1024 -g group2 -G root lusifer
将 lusifer 用户 uid 修改为 1024,默认组改为系统中已经存在的 group2,并且加入到系统管理员组
删除用户
userdel 用户名 (删除用户账号)
userdel -r 删除账号时同时删除目录如:userdel -r lusifer
删除用户名为 lusifer 的账户并同时删除 lusifer 的用户目录
组账户维护
groupadd 组账户名 (创建新组)
groupadd -g 指定组GID
groupmod -g 更改组的GID
groupmod -n 更改组账户名
groupdel 组账户名 (删除指定组账户)口令维护
passwd 用户账户名 (设置用户口令)
passwd -l 用户账户名 (锁定用户账户)
passwd -u 用户账户名 (解锁用户账户)
passwd -d 用户账户名 (删除账户口令)
gpasswd -a 用户账户名 组账户名 (将指定用户添加到指定组)
gpasswd -d 用户账户名 组账户名 (将用户从指定组中删除)
gpasswd -A 用户账户名 组账户名 (将用户指定为组的管理员)用户和组状态
su 用户名(切换用户账户)
id 用户名(显示用户的UID,GID)
whoami (显示当前用户名称)
groups (显示用户所属组)Linux 磁盘扩容
LVM 简介
LVM (逻辑卷管理器,Logical Volume Manager)的基本概念
- 物理卷 Physical Volume (PV): 建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file);
- 卷组 Volume group (VG): 将一组物理卷收集为一个管理单元;可理解为和指定物理卷绑定关系,但还不能马上使用;
- 逻辑卷 Logical volume (LV): 虚拟分区;将逻辑卷添加至卷组中,即可完成扩容;
- 物理区域 Physical extent (PE): 逻辑卷的最小单位(通常为 4MB)
查看是否支持 LVM 扩容
# 系统中已安装 LVM 软件包,你将看到相关信息。如果未安装,将不会显示任何输出。
sudo dpkg -l | grep lvm2
# 未安装 LVM 软件包,你可以使用以下命令来安装它:
sudo apt update
sudo apt install lvm2新磁盘分区准备
以 VMware 为例,先关闭虚拟机,修改硬盘大小,从 20G 修改为 50G 并开机,查看磁盘分区状态
fdisk -l
# 输出如下
...
# /dev/sda为【总磁盘】,其容量50G;有些系统修改磁盘大小后会存在多个磁盘,选择对应磁盘进行分配,操作也与此相同;
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
...
# 如下为磁盘分区,其总大小为20G,可见有30G容量未分配
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 3719167 3715072 1.8G Linux filesystem
/dev/sda3 3719168 41940991 38221824 18.2G Linux filesystem创建新分区并分配大小
# 打开要分区的磁盘
fdisk /dev/sda
# 使用 n 命令创建一个新的分区
# 使用 d 命令删除分区
# 使用 w 命令保存更改并退出 fdisk
# 使用 q 命令取消修改直接退出
# 要输入的直接按回车即可,最后按w保存
# 因为已存在sda3,默认会新建一个名为/dev/sda4的磁盘设备;查看分区状态
fdisk -l
# 输出如下
...
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
...
# 现在磁盘总大小已经是50G了,但是分区的磁盘需挂载到LVM上才可使用
# 若系统未使用LVM,可尝试resize2fs /dev/sda4指令使之生效
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 3719167 3715072 1.8G Linux filesystem
/dev/sda3 3719168 41940991 38221824 18.2G Linux filesystem
/dev/sda4 41940992 104857566 62916575 30G Linux filesystemLVM 扩容准备
查看磁盘挂载状态,ubuntu--vg-ubuntu--lv 为 LVM 挂载点,其总大小为 18G,其他为系统占用资源
df -h
# 输出如下
Filesystem Size Used Avail Use% Mounted on
tmpfs 94M 1.3M 93M 2% /run
# 此处为我们磁盘的挂载点
/dev/mapper/ubuntu--vg-ubuntu--lv 18G 14.8G 3.2G 82% /
...显示当前的卷组
vgdisplay
# 输出如下
...
VG Name ubuntu-vg
...
## 当前的可用空间大小,待扩容完毕,这里显示的应该是最终的大小
VG Size <19.00 GiB
...显示当前的逻辑卷,注意查看当前的逻辑卷的 Path,扩容 LV 会用到
lvdisplay
# 输出如下
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
...
# open 1
LV Size <19.00 GiB
...开始扩容
格式化新建分区
mkfs -t ext4 /dev/sda4创建 PV(物理卷)
pvcreate /dev/sda4查看物理卷
pvscan
# 输出如下
# 可见当前卷组为ubuntu-vg,并且有30G的物理卷没有被分配
PV /dev/sda3 VG ubuntu-vg lvm2 [18.22 GiB / 0 free]
PV /dev/sda4 lvm2 [<30.00 GiB / 0 free]
Total: 2 [<48.22 GiB] / in use: 1 [<18.22 GiB] / in no VG: [<30 GiB]扩容 LV(逻辑卷)
# 方式一:按固定大小追加
lvextend -L +10G /dev/ubuntu-vg/ubuntu-lv
# 方式二:按百分比追加,100%为全部追加
lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv刷新分区
resize2fs /dev/ubuntu-vg/ubuntu-lv查看是否成功
lvdisplay
# 输出
...
LV Size 48.22 GiB
...pvscan
# 输出
PV /dev/sda3 VG ubuntu-vg lvm2 [18.22 GiB / 0 free]
PV /dev/sda4 VG ubuntu-vg lvm2 [<30.00 GiB / 0 free]
Total: 2 [<48.22 GiB] / in use: 2 [<48.22 GiB] / in no VG: 0 [0 ]
...df -h
# 输出如下
Filesystem Size Used Avail Use% Mounted on
tmpfs 94M 1.3M 93M 2% /run
# 此处为我们磁盘的挂载点
/dev/mapper/ubuntu--vg-ubuntu--lv 48G 14.8G 33.2G 30% /
...修改句柄
Linux 操作系统中文件句柄数的限制默认值为 1024,也就是说,一个进程最多可以接受 1024 个 socket 连接。

