Linux命令
文章目录
1.用户管理
切换用户
su user1
新增用户
useradd
-d 目录指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
创建一个带有家目录,并且可以登录 bash 的用户
sudo useradd -m -s /bin/bash user1
增加密码
passwd 选项 用户名
e.g.passwd user1
删除用户
userdel 选项 用户名
常用的选项是-r,它的作用是把用户的主目录一起删除。
组管理
groupadd group1 #新增组
groupdel group1 #删除组
RHEL/centos6.X及之前忘记密码
1.grub找到当前系统引导项。如果有多个可用内核,则会有多个引导选项。按e,进入编辑状态。
2.选中带有kernel指令的一行,继续按e键,编辑该行,在行末尾价格空格,然后添加single。
3.按Enter键,返回到刚才的界面。按b键,系统开始引导。
4.单用户模式启动完毕,系统自动进入命令行状态下,输入passwd,改密码。
5.输入init 3,切换到多用户模式下。用root登陆系统即可。
单用户模式与Windows的安全模式类似,只启动最基本的系统,网络以及应用服务均不启动。
RHEL/centos7忘记密码
1.找到当前系统引导选项,开机e,进入编辑模式
2.以“Linux16”开头的行,在该行的最后面追加 “init=/bin/sh”
3.ctrl+X启动shell引导,最后进入单用户模式
4.后输入
mount -o remount,rw / #挂载根目录,读写
passwd
touch /.autorelabel #如果系统已开启了SELinux,还需要在根分区中创建autorelabel文件,否则系统无法正常启动。
也可查看SELinux是否开启 /usr/sbin/sestatus
exec /sbin/init #reboot已无效,全路径命令或exec /sbin/reboot
2.磁盘管理
disk usage:du;disk free:df。
du -sh * #统计一级目录文件或文件夹合起来的大小。或du -lh --max-depth=1。
du -h #显示的是递归的所有文件大小。
df -h #显示磁盘分区情况。及挂载点。
lsblk #列出块设备信息,为挂载的
挂载磁盘
fdisk -l #查看硬盘,发现新的硬盘/dev/sda
fdisk /dev/sda #“n”创建新分区,“p”创建主分区,按提示
fdisk -l #查看分区情况
mkfs.ext4 /dev/sda1 #格式化sda1分区
mkdir /data1 #根目录下创建挂载点
mount /dev/sda1 /data1 #挂载分区
df -h #验证是否挂载成功
dd if=/dev/zero of=/data1/test bs=1M count=10240 #测试挂载盘,后手动删除/data1/test
vim /etc/fstab #配置开启自动挂载,最后一行写入:/dev/sda1 /data1 ext4 defaults 0 0
reboot重启,df -h验证是否自动挂载
3.文件管理
创建
创建目录
mkdir
touch
复制
cp
移动
mv
删除
rm
查看
cat
more
less
head #查看头部
tail #查看尾部
编辑
压缩
过滤
grep
查找
local
which
whereis
4.进程管理
a.查看进程
ps aux | |
---|---|
b.服务管理
service 服务名 [start|stop|restart|reload|status]
systemd:systemctl是一个systemd工具
c.后台运行(守护进程)
早期使用&,将进程放到后台运行,然后再使用jobs、bg、fg。
推荐nohup和screen。
nohup #no hang up不挂起,用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
screen -S name #新建屏幕取名字,断开ssh后再连能恢复。
退出当前screen但不关闭 #crtl+A然后D
screen -list #显示所有后台
screen -r #恢复
screen -S name -X quit #删除
screen -wipe #清理remove的屏幕
tmux复用终端,可查
d.启动项
ls -l /etc/init.d/ #???
5.软件管理
系统平台 | 包类型 | 工具 | 自动解决依赖 |
---|---|---|---|
RedHat系列/Centos | RPM | rpm | yum |
Debian系列/Ubuntu | DPKG | dpkg | apt |
rpm包 | 预先编译打包,安装简单 | 软件版本偏低 |
---|---|---|
源码包 | 手动编译打包,安装繁琐 | 有源码,可二次开发 |
二进制包 | 解压即可使用, 安装简单 | 不能修改源码 |
a. rpm包之手动安装
rpm包 #bash-4.2.46-28.el7.x86_64.rpm
#软件名-版本号-发布次数.发布版本.硬件平台.后缀rpm
包中含有:安装释放的文件、软件包的元数据(版本,发布号,架构,描述,要求,更改日志等) 、安装前执行的脚本和安装后的脚本。
手动从官网等,下载rpm文件。
1手动安装
rpm -ivh # -i 安装、-v 详细信息、-h 安装进度
–test #测试是否能够安装成功
–force #强制重新安装,如果存在
–nodeps: #忽略依赖关系
2卸载
rpm -qa |grep sh #先查询, 然后卸载
rpm -e zsh
3查询
rpm -q #查看指定软件包是否安装
rpm -qa #查看系统中已安装的所有RPM软件包列表
rpm -qi #查看指定软件的详细信息
rpm -ql #查询指定软件包所安装的目录、文件列表
rpm -qc #查询指定软件包的配置文件
rpm -qd #查询指定软件包的帮助文档
rpm -qf #查询文件或目录属于哪个RPM软件
rpm -q --scripts #查询rpm包安装前和安装后执行的脚本
#查询未安装的软件包信息
rpm -qip //查询未安装的rpm包详细信息
rpm -qlp //查询未安装的软件包会产生哪些文件
b. rpm包之yum安装
yum是软件包管理器,自动下载rpm包,并可以自动处理依赖关系。
yum源:包含各种rpm软件包的repository(软件仓库),称之为yum源或者yum 仓库,这个源可以是本地的也可以是网络的。
yum源的配置:/etc/yum.repo.d/目录下
base源:很多软件集合的在线仓库,也称为base基础源。
epel源:也称为拓展源,拥有很多base源没有软件。
第三方源:比如nginx,zabbix,docker等第三方开源软件的官方仓库。
#yum更换源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #①备份两个源
cd /etc/yum.repos.d #②切换目录
wget http://A.repo #③下载
mv A.repo /etc/yum.repos.d/CentOS-Base.repo #④更名
yum clean all #⑤清理、产生新的缓存
yum makecache
#yum源
yum provides ifconfig #查找哪个包内含有ifconfig。
yum repolist #列出yum源可用的软件仓库
yum repolist all #列出全部yum源可用和禁用的仓库
#yum缓存
yum makecache #缓存yum源软件仓库, xml元数据文件
yum history #查看历史执行yum命令
#yum安装
yum install php -y #直接安装, 无需交互
yum localinstall /mnt/xx.rpm #安装本地的rpm包,自动下载依赖。
yum install http://a.com/xx.rpm #安装网络上rpm包。
#yum更新
yum check-update #对比已安装的软件和yum仓库中的软件, 有哪些需要升级
yum update A -y #更新A软件
#yum删除
yum erase A -y #删除该软件包,会删除依赖
yum remove A -y #
#制作本地源:有时内网,需要制作本地源。
c. 源代码安装
.tar、tar.gz、tar.bz2、tar.Z
1、首先解压缩源码压缩包
先读一下README之类的说明文件
2、./configure (检查编译环境)设置安装目录、安装模块等选项,生成makefile。
3、make (对源代码进行编译)将makefile生成可执行的二进制文件。
4、sudo make install (将生成的可执行文件安装到当前计算机中)复制二进制文件到系统,配置应用环境。
5、make clean (选择执行,主要是用来清除一些临时文件)
d. 二进制安装
下载的二进制包解压后放到合适的目录,然后将包含可执行的主程序文件的目录添加进PATH环境变量即可。
二进制文件,就是编译好的程序,相当于win的exe文件。一般在bin内。
6.防火墙
a. netflter/iptables功能
数据包过滤,即防火墙
数据包重定向,即转发
网络地址转换,即可NAT
如果数据包头符合这样的条件,就这样处理这个数据包。
规则存储在内核空间的数据包过滤表中,这些规则分别指定了源地址、目的地址,传输协议(TCP、UDP、ICMP)和服 务类型(HTTP、FTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,比如放行(ACCEPT)、拒绝(REJECT)、 丢弃(DROP)等
我们就需要在内核中设置“关口”,所以进出的数据报文都要通过这些关口,经检查,符合放行条件的准允放行,符合阻拦条件的则被阻止,于是就出现了input和output关口,然而在iptables中我们把关口叫做“链”。
规则在“链”中,有input链、output链、forward链。
b. iptables:“五表五链”
filter表:过滤器,进入当前机器的数据包过滤,及出去的也过滤,不符合条件的不发出去。
nat表:目的地址、目的端口、发出去时源地址、源端口改了,起到转发作用。
managle表:给数据包做标记,几乎用不到。
raw表:几乎用不到。
security表:太复杂,几乎用不到。
规则优先:security -->raw–>mangle–>nat–>filter
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口号 <-d 目标IP/目标子网> --dport 目标端口号 -j 动作
iptables | -t | 表类型 | -D | - |
---|---|---|---|---|
nat地址转 换filter包过滤 |
-A末尾插入 -I指定位置插入,默认第一行。 -D删除 -R替换 |
ACCEPT :接收数据包。DROP :丢弃数据包。 REDIRECT :重定向、映射、透明代理 SNAT :源地址转换。 DNAT :目标地址转换。 MASQUERADE :IP伪装(NAT),用于ADSL。 LOG :日志记录。 |
iptables -L # 查看iptables规则
iptables -L -vn # 查看iptables规则(详细信息)
iptables -F # 清除所有规则,不会处理默认的规则
iptables -X # 删除用户自定义的链
iptables -Z # 链的计数器清零(数据包计数器与数据包字节计数器)
iptables -nL --line-numbers # 查看规则号码
iptables -D INPUT 1 # 删除指定链上的指定序号
c. firewalld:
firewalld自身并不具备防火墙功能,而是和iptables一样需要通过内核的netfilter来实现。
首次安装firewall-offline-cmd --zone=public --add-port=2018/tcp,离线方式添加ssh的修改过的端口,然后再启动。
i. 查看状态
查看firewall服务状态#:systemctl status firewalld
查看firewall的状态:firewall-cmd --state
ii. 开启关闭重启
# 开启:service firewalld start
# 重启:service firewalld restart
# 关闭:service firewalld stop
iii. 开放端口、移除端口
查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8888/tcp
# 开放80端口
firewall-cmd --permanent --add-port=8888/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8888/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
7.网络管理
ip addr #查看本机是否分配IP。
cd /etc/sysconfig/network-scripts/ #网卡配置文件的目录。
vi ifcfg-eno16777736 #查看对应的网卡文件。ONBOOT=no ,修改为ONBOOT=yes,激活网卡。
查看网卡信息
IfconfigCentOS 7 之后,改用ip。
重启网卡
service network restart
或者
systemctl restart network
数据包
IP数据包(第三层网络层)里面包住: tcp数据包(第四层传输层)可靠、握手
udp数据包(第四层传输层)可一对多
查看端口占用情况:
netstat -tunlp
研究下netstat命令
ss命令:ss
lsof 命令:
-
linxu的FTP无法上传时:
FTP协议默认端口 放行端口:[21]
FTP主动模式数据端口 放行端口:[20]
FTP被动模式端口范围 放行端口:[39000-40000] -
rDNS PTR(DNS反向解析)
PTR:将ip地址解析为域名,与A记录相反。
Centos ipv6配置参考
先获取ipv6地址、掩码、ipv6网关
vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6ADDR="生成的IPv6地址/48" #注意,/48不丢失
IPV6_DEFAULTGW="IPV6网关"
service network restart #重启网络
ping6 -c4 ipv6.google.com #测试
#greencloudvps配置
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFAULTGW=2404:fbc0:0000:0000:0000:0000:0000:0001
IPV6ADDR_SECONDARIES="2404:fbc0:0:119f::2/64"
打开“/etc/sysconfig/network”
找到并设置
NETWORKING=yes
systemctl restart network #重启网络
ip -6 addr show eth0 #测试
Debian/Ubuntu ipv6配置参考
先获取ipv6地址、掩码、ipv6网关
vi /etc/network/interfaces
iface enp0s3 inet6 dhcp
或静态
iface enp0s3 inet6 static
address 获取的IPV6地址
netmask 64
gateway 获取的网关
service networking restart #重启可能断ssh
#greencloudvps配置
#打开ipv6
nano /etc/sysctl.conf
文件末尾添加
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.eth0.accept_ra = 0
net.ipv6.conf.all.autoconf = 0
#然后设置ipv6地址
/etc/network/interfaces
找到
iface eth0 inet static
up ip addr add 2404:fbc0:0:119f::2/64 dev eth0
up ip -6 route add 2404:fbc0::1 dev eth0
up ip -6 route add default via 2404:fbc0::1
systemctl restart networking.service #重启网络
ip -6 addr show eth0 #验证
8.系统管理
9.安全配置
efe71f32-7042-4a94-bf91-e36992dd5da0