一、系统命令
# 清屏 (Ctrl + L)
$ clear
# 退出登录
$ exit
# 历史命令
$ history
$ history | grep 'java -jar'
1. 系统信息
# 查看版本,当前操作系统发行版信息
$ cat /etc/redhat-release
`
CentOS Linux release 7.2.1511 (Core)
`
# 查看操作系统位数
$ getconf LONG_BIT
`
64
`
2. hostname 查看当前主机名
$ hostname
`
qs
`
# 查看 IP
$ hostname -i
`
192.168.137.2
`
$ hostname -I
`
192.168.31.43 192.168.122.1 172.17.0.1
`
# 查看 Ip
$ ifconfig
3. uname 查看系统版本信息
# 查看 当前操作 版本信息
$ cat /proc/version
`
Linux version 3.10.0-514.26.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Jul 4 15:04:05 UTC 2017
`
# 查看操作系统
$ cat /etc/redhat-release
`
CentOS Linux release 8.4.2105
`
uname
`
Linux
`
## 查看当前系统 内核版本
uname -r
`
3.10.0-514.26.2.el7.x86_64
`
## 查看当前系统 内核信息
uname -a
`
Linux qs 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
`
## Linux: 内核名称(类别)
## qs: 主机名
## 3.10.0-514.26.2.el7.x86_64: 内核版本号
## UTC: 内核版本
## 2017: 内核编译日期
## x86_64: 硬件名
## x86_64: 处理器类型
## x86_64: 硬件平台类型
## GNU/Linux: 操作系统名称
uname -an
`
Linux qs 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
`
3. 关机重启
## 1. 查看系统使用状态(确保没人在线)
## 显示当前 所有的登录用户
who
## 2. 网络状态(确认有哪些连接)
netsat -a
## 3. 后台进程执行状态
## 注:列 COMMAND 带`[.]`的是内核进程,不带`[.]`的是用户态进程
ps -aux
## 4. 数据同步
## 虽然关机命令会执行同步动作,但仍强烈建议先多次执行 sync 主动同步
sync;sync;sync;
1. shutdown 关机重启
shutdown [Options] 时间
---
## [Options]
## 1. -c: 取消前一个关机命令
## 2. -h: 关机
## 3. -r: 重启
---
## 立即关机(root 用户使用)
shutdown -h now
## 过 30 分钟后自动关机
shutdown -h 30
---
## 立即重启(root 用户使用)
shutdown -r now
## 过 30 分钟自动重启(root 用户使用)
shutdown -r 30
## 在时间为`17:30`时候重启
shutdown -r 17:30
## 在时间为`00:30`时候重启(root 用户使用)
shutdown -r 00:30
2. halt 关机重启
## 最简单的关机命令,实际调用的是`shutdown -h`
## `halt`执行时将杀死应用进程,执行`sync`系统调用文件系统写操作完成后就会停止内核
halt [Options]
---
## [Options]
## 1. -n: 防止`sync`系统调用,在用`fsck`修补根分区之后,以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块
## 2. -w: 并不是真正的重启或关机,只是写`wtmp〔/var/log/wtmp〕`纪录
## 3. -d: 不写`wtmp`纪录〔已包含在选项[-n]中〕
## 4. -f: 没有调用`shutdown`而强制关机或重启
## 5. -i: 关机〔或重启〕前关掉所有的网络接口
## 6. -p: 该选项为缺省选项。就是关机时调用 poweroff
---
## 关机
init 0
## 重启
init 6
---
## 系统运行级别
0 关机
1 单用户
2 不完全多用户,不含 NFS 服务
3 完全多用户
4 未分配
5 图形界面
6 重启
3. poweroff 关机
## 关机
poweroff
4. reboot 安全重启
## 重启(安全)
## `reboot`命令和`shutdown`命令差不多
reboot
reboot -f
## 使用`man reboot`时,会同时出现`halt、poweroff、reboot`的用法
man reboot
5. 退出登录
## 修改系统默认运行级别
cat /ect/inittab
`
id:3:initdefalult
`
## 查询系统运行级别
runlevel
## 退出登录
logout
2. 系统时间
## 当前系统时间
date
## 当前系统时间,带时区
date -R
## 当前系统时间-格式化
date +"%Y-%m-%d %H:%M:%S"
1. 设置时间
## 设置系统时间
sudo date -s "2014-01-01 10:10:10"
## 1. -s: 设置系统时间
## 格式: HH:MM:SS(24小时制)
## 格式: hh:mm:ss(12小时制) hh时mm分ss秒
## 格式: MMDDhhmm[[CC]YY][.ss] MM月DD日CC世纪YY年份后两位
sudo date -s "0412122323" # 2023年04月12日
# 同步服务器时间
sudo ntpdate -u ntp.api.bz
2. 设置时区
## 查看时区
date -R
## 方法1. 设置时区
sudo timedatectl set-timezone Asia/Shanghai
## 方法2. 设置时区
tzselect
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
## 查看时区
date -R
3. 防火墙
1. 安装
yum install firewalld
2. 启动关闭
- CentOS
## 查看防火墙状态
systemctl status firewalld
## 开启关闭防火墙服务
systemctl start firewalld.service
## 临时关闭
systemctl stop firewalld.service
systemctl stop firewalld
## 然后 reboot 永久关闭
systemctl disable firewalld
## 关闭防火墙
service iptables stop
## 永久关闭防火墙
chkconfig iptables off
## 开机自启动防火墙服务
systemctl enable firewalld.service
## 关闭开机自启动防火墙服务
systemctl disable firewalld.service
- Ubantu
## 安装防火墙
sudo sudo apt-get install ufw
## 查看防火墙版本
sudo ufw version
## 查看防火墙状态
sudo ufw status
`
Status: active # 活跃
Status: inactive # 不活跃
`
## 开启防火墙
sudo ufw enable
## 关闭防火墙
sudo ufw disable
## 重启防火墙
sudo ufw reload
## 注意:添加规则以后,需要使用该命令进行重启防火墙
## 设置默认允许外部访问本机
sudo ufw default allow
## 设置默认拒绝外部访问主机
## 拒接所有外来访问,本机能正常访问外部
sudo ufw default deny
## 允许外部访问 53 端口
sudo ufw allow 53
## 注意:开放成功以后,需要重启生效
## 查看 53 端口信息
sudo netstat -tunlp | grep 53
## 拒绝外部访问 53 端口
sudo ufw deny 53
## 允许 某个IP 访问本机所有端口
sudo ufw allow from 192.168.0.1
3. firewall-cmd 命令
## 查看防火墙状态,`running`运行,`not running`关闭
firewall-cmd --state
## 获取活动的区域
firewall-cmd --get-active-zones
## 获取所有支持的服务(每个服务以空格分隔)
firewall-cmd --get-service
## 获取所有永久支持的服务,就是重启后也支持的
firewall-cmd --get-service --permanent
## 在 0.3.0 之前的 FirewallD版本中,panic 选项是 –enable-panic 与 –disable-panic
## 查看应急模式的状态
firewall-cmd --query-panic
## 开启应急模式阻断所有网络连接
firewall-cmd --panic-on
## 关闭应急模式
firewall-cmd --panic-off
## 防火墙预定义的服务配置文件是xml文件,目录在`/etc/firewalld/services/`、`/usr/lib/firewalld/services/`
## 修改配置文件后,使用命令重新加载
firewall-cmd --reload
4. 修改服务
# 查看开启的服务,服务空格隔开(例如: dhcpv6-client https ss)
firewall-cmd --permanent --zone=public --list-services
firewall-cmd --permanent --list-services
# 启用某个服务
firewall-cmd --zone=public --add-service=https # 临时
firewall-cmd --permanent --zone=public --add-service=https # 永久
firewall-cmd --permanent --zone=public --add-service=ftp # 永久添加 ftp 服务
firewall-cmd --reload # 重启防火墙
5. 修改端口
# 查看开启的端口,端口空格隔开(例如: 8080-8081/tcp 8388/tcp 80/tcp)
firewall-cmd --permanent --zone=public --list-ports
# 查看开启的端口号
firewall-cmd --permanent --list-ports
# 查询8080端口是否开放
firewall-cmd --query-port=8080/tcp
# 开启某个端口
firewall-cmd --zone=public --add-port=8080-8081/tcp # 临时(8080-8081)
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp # 永久
firewall-cmd --permanent --zone=public --add-port=21/tcp # 永久添加tcp 21 端口
firewall-cmd --permanent --add-port =8080-8085/tcp # 添加8080-8085的端口区段,也可以是固定值,如3000
# 关闭上面设置的端口
firewall-cmd --permanent --remove-port=8080-8085/tcp # 需要注意的是,如果是加的区段值,删的时候也必须为区段值
firewall-cmd --reload # 使用命令加载设置
6. 修改规则
# 3. 添加规则: 设置某个ip,访问某个服务(ip:192.168.0.4/24,访问:http)
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
# 删除上面设置的规则
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
7. 端口转发
# 1. 先开启允许伪装IP
# 检查是否允许伪装IP
firewall-cmd --query-masquerade
# 允许防火墙伪装IP
firewall-cmd --add-masquerade
# 禁止防火墙伪装IP
firewall-cmd --remove-masquerade
# 2. 设置转发
# 转发tcp 22 端口至 3753
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=3753
# 转发 22 端口数据至另一个 ip 的相同端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100
# 转发 22 端口数据至另一 ip 的 2055 端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100
4. openssl
openssl version
二、用户和用户组
# 查看系统使用状态(确保没人在线)
# 显示当前 所有的登录用户
id <用户名>
## 查看当前用户环境变量
env
1. 用户
## 查看所有用户
cat /etc/passwd
## 显示所有可用的命令,别名和函数
compgen -u
1. 创建用户
## 新增用户
useradd 用户名
passwd 用户名
## 添加用户`test`
useradd test
## 为用户`test`设置密码
passwd test
---
## 创建用户`test`,并指定用户目录
useradd test -d /home/test
---
## 新建用户`qs`
## 添加到用户组`root`
## 但是不允许用户登录,仅仅可以`ftp`登录
## `ftp`登录后的默认目录是`/home/data`
useradd -g root -d /home/data -s /sbin/nologin qs
1. 用户文件 /etc/passwd
## 用户文件
cat /etc/passwd
---
# 每条记录用冒号分隔(包含7个字段)
'root:x:0:0:root:/root:/bin/bash'
## 账号名称(root): 在系统中是唯一的(字符长度 1~12 个字符)
## 用户密码(x): 此字段存放加密口令(保存在`/etc/shadow`文件中)
## 用户标识码(UserID): 系统内部用它来标示用户
## 组标识码(GroupID): 系统内部用它来标识用户组(保存在`/etc/group`文件中)
## 用户相关信息(root): 例如用户全名等
## 用户目录: 用户登录系统后所进入的目录(家目录)
## 用户环境: 用户工作的环境(用户使用的 shell 类型)
---
## 使用 awk 或 cut 命令,仅打印出 Linux 系统中所有用户的用户名列表
awk -F':' '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
2. 用户密码文件 /etc/shadow
## 密码文件
cat /etc/shadow
---
# 每条记录用冒号分隔,9个字段组成
'mysql:!:19112:0:99999:7:::'
## 用户名: 用户登录到系统时使用的名字,而且是惟一的
## 口令: 存放加密的口令
## 最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间
## 最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令
## 最小时间间隔: 再次修改口令之间的最小天数
## 警告时间: 从系统开始警告到口令正式失效的天数
## 不活动时间: 口令过期少天后,该账号被禁用
## 失效时间: 指示口令失效的绝对天数(从1970年1月1日开始计算)
## 标志: 未使用
3. sudo 权限文件 /etc/sudoers
# 增加 sudo 权限
vim /etc/sudoers
## 修改文件里面的
#root ALL=(ALL) ALL
#用户名 ALL=(ALL) ALL
2. 删除用户
# 删除用户`test`,不会删除用户目录
userdel test
# 删除用户`test`,以及用户目录
userdel –r test
3. 切换用户
## 切换用户`test`
su test
## 切换用户`test`,并切换`用户环境`【推荐使用】
su - test
# 退出
Ctrl+D
# 查看用户的`UID`和`GID`
id '用户名'
## /usr/local/suninfo/oma/oma/third/openssh/bin/ssh.exe
## 切换远程用户
ssh -l test -p 22 192.168.19.128
ssh -p 22 root@192.168.100.101
4. 修改密码
# 修改 root 密码
sudo passwd root
2. 用户组
# 当前登录用户所属所有组列表
groups
1. 创建用户组
## 创建用户组`public`
groupadd public
## 创建用户并指定组
useradd user1 –g public
1. 用户组文件
# 组信息文件
cat /etc/group
---
'root:x:0:'
## 组名: 用户所属组
## 组口令: 一般不用GID(组ID)
## 用户列表: 属于该组的所有用户
2. 用户组密码文件
cat /etc/gshadow
---
'mysql:!::'
2. 删除用户组
## 如果该组有用户成员,必须先删除用户才能删除组
groupdel public
3. last 最近登录信息列表
## 最近登录的 5 个账号
last -n 5