linux其他命令(了解)
主机名的修改
目标
-
修改服务器主机名
-
网络服务的开启和关闭
主机名配置
需求:默认主机名是localhost,我们希望改为有含义的主机名。如:heima,itcast等主机名。类似于Windows中修改主机名:
语法格式
修改主机名 | 说明 |
---|---|
hostname | 显示当前主机名 |
hostname 新主机名 | 修改主机名,重启以后又还原 |
hostnamectl set-hostname 新主机名 | 永久修改,重启以后也是起作用的 |
操作演示:
- 查看当前的主机名
- 设置新的主机名为itheima,再查看当前的主机名
- 设置新的主机名为itheima,重启以后仍然有效
执行结果
小结
命令 | 说明 |
---|---|
hostname 新主机名 | 临时修改主机名 |
hostnamectl set-hostname 新主机名 | 永久修改主机名 |
域名映射
目标
在Linux中配置服务器的域名
为什么要配置域名
# dns: domain name service 域名解析服务器
0. 网络三要素: 域名就是ip
1. 访问过程
0). 访问的域名是 baidu.com 实际访问的是 112.80.248.76
1). 浏览器访问 baidu.com
2). 本地有个hosts文件: 存着域名和ip映射关系
3). 如果本地的hosts文件已经有某个ip和域名的映射关系
4). 那么我们的请求不需要再经过DNS服务器,效率更高
2. 在linux系统修改hosts文件
创建 当前某个想要访问ip和域名之间的映射关系
我们希望通过域名来访问互联网的主机,而不是输入又长又难记的IP地址。
掌握hosts 文件的ip 域名的映射关系配置, 这样配置之后, 我们以后直接访问某个域名, 在本地的hosts文件就可以直接找到这个域名的映射ip, 访问对应服务器,不需要经过DNS, 提高访问效率
域名访问网站的过程
DNS概念和作用:Domain Name Server 域名解析服务器
访问流程如下:
- 访问DNS,查询这个域名对应的IP地址
- 访问真实的服务器IP地址
- 如果直接输入IP地址访问,访问速度更快。
Windows下本机的hosts文件是 c:\windows\System32\drivers\etc\hosts,这是一个文本文件。
修改Linux域名映射文件
在Linux中,/etc/hosts文件用于在主机名与IP地址之间进行映射。所以你想访问一个什么样的主机名,就需要把这个主机名和它对应的IP地址配置在/etc/hosts文件中。
操作步骤
- 首先ping newboy看能否访问这个地址
- 修改hosts文件命令:vim /etc/hosts
- 将本机局域网的ip地址与newboy这个名字进行映射。一个ip地址后面可以映射多个域名地址。
- 再次使用ping newboy,发现可以访问这个名字。实现域名与ip地址的映射。
执行结果
小结
-
域名映射修改哪个文件
/etc/host文件
-
什么是DNS,它有什么用?
域名解析服务器,将域名映射成对应的IP地址。
虚拟机快照(重点)
目标
- 什么是快照
- 快照的操作
介绍
虚拟机“快照”(snapshot)是虚拟机磁盘文件在某个时间点及时的副本备份(数据备份)。系统崩溃或系统异常,你可以使用恢复到快照指定时间点系统状态。
虚拟机快照(备份) : 用在安装软件的时候
A(有备份) -> B(安装JDK,备份) -> C(安装mysql) -> ...
工具栏 (VMWare)
定义快照
使用快照
当系统环境崩溃或系统异常时,我们希望当前系统恢复到以前某个时间点正常状态,可以使用快照进行恢复
小结
快照的作用是什么?
备份系统当前状态,以后可以快速的恢复到当前状态
克隆虚拟机
概念
就是复制已有的虚拟机系统创建出一个一模一样的虚拟机系统。
作用
克隆可以快速复制创建出多台linux系统,便于后面我们学习负载均衡多台linux系统进行测试。
实现步骤
-
关闭现有itheima虚拟机
-
点击虚拟机itheima,出现如下效果
-
如图操作
-
点击下一步
-
点击下一步
-
如图操作下一步
-
如下图操作
-
效果
-
启动itheima2虚拟机
-
执行命令:vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改其中配置的固定ip,避免与itheima虚拟机ip冲突
-
可选:修改主机名
-
重启网络服务
systemctl restart network
小结
-
克隆虚拟机后要做什么事情?
1. 修改IP地址 2. 修改主机名字
防火墙配置 (在安装软件中会使用即可)
目标
- 防火墙的管理命令
- 开放端口允许外部连接
- 移除端口不允许外部连接
介绍
防火墙类似于一个关卡检查人员,当你访问其他人的电脑,或者其他人访问你的电脑,都要进行拦截并进行处理,有的阻止,有的放行,有的转发。
默认情况下防火墙在开机以后就自动启动了。
语法格式
防火墙的服务管理
命令 | 作用 |
---|---|
systemctl start firewalld | 开启防火墙 |
systemctl stop firewalld | 关闭防火墙 |
systemctl enable firewalld | 开启自启动防火墙 |
systemctl disable firewalld | 关闭开机自启动防火墙 |
systemctl status firewalld | 显示防火墙状态 |
操作演示
- 确认当前是管理员的账户,查看防火墙当前的状态
- 关闭防火墙,再查看防火墙的状态
- 再次开启防火墙,查看防火墙的状态
执行结果
命令firewall-cmd
外网或内网需要连接到当前系统内的程序进行操作,需要linux系统开放程序端口,否则无法访问。
firewall-cmd | 向防火墙中添加或删除指定端口号 |
---|---|
--zone=public | 将端口号添加到防火墙中哪个区域 public: 公共区域,默认值。可以让互联网上所有的机器访问这个端口号 internal: 内部区域,让局域网中,内部中机器来访问这个端口号 是public的一个子集 |
--add-port=端口/tcp | 添加指定的端口号,使用TCP协议 |
--remove-port=端口/tcp | 删除指定的端口号,使用TCP协议 |
--permanent | 永久的添加,主机重启了也是起作用的 |
--list-all | 显示所有已经添加的端口号 |
--reload | 重启加载端口的规则,让新的端口号起作用 |
步骤
- 永久开放443端口,添加到公开区域,允许外部连接
- 重新加载防火墙的规则
- 显示所有打开的端口号
- 从公共区域中,永久移除443端口,不允许外部连接
- 重新加载防火墙规则
- 显示打开的端口号
效果
小结
说说下面代码的作用
firewall-cmd --zone=public --add-port=8080/tcp --permanent
永久的向公共区域添加8080的端口号
firewall-cmd --reload
重新加载新的规则
firewall-cmd --list-all
显示所有添加到端口号
SSH免密登录
目标
- 输入密码登录另一台服务器
- 免密登录的原理
- 使用免密登录另一台服务器
为什么要登录
公司中的运维人员,有的时候需要操作多台linux计算机, 不同的Linux主机之间需要互相访问,就需要登录。在Linux中不同主机之间通信使用的是SSH协议
# 加密介绍
1. 凯撒密码
1). 明文 : 信息原文 I love you
2). 密文 : 明文经过加密算法(加密钥)计算得到的结果 L oryh brx
3). 加密算法 : 字母表移动
4). 密钥 : 3
破解:
1). 社会工程学 : 内奸
2). 频率分析法(统计学)
a. 抓获大量的信使(密文样本足够大)
b
b. 字母表: e i
2. 现在的加密算法
1). 加密算法公开
2). 密文也可以公开
3). 只要密钥不被获取
4). 别人无法破解
5). 破解: 暴力破解,穷举法
3. 加密算法
1). 对称加密
只有一个密钥, 加解密用同一把密钥 (凯撒密码)
2). 非对称加密
两把密钥(公钥, 私钥)
公钥: 可以对外公开
私钥: 自己保存
加密用一把, 解密用另一把
set password = password('root'); -- 修改密码
-- mysql自带函数
select password('root'); -- 加密算法
-- 明文: root
-- 密文: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
-- 一个明文产生一个密文(尽量保证)
-- 多个明文 产生 同一密文 (碰撞)
-- 别人知道算法,知道密文, 也推不出明文
-- md5
select md5('1234');
-- 登录 : (用户名: root ) (密码: 密文)
-- 登录流程:
-- 用户输入 密码 明文
-- md5加密成 密文
-- 校验的密文是否一致
# ssh免密登录
1. 登录流程的作用: 证明你是你
2. 一般证明:
1). 只有我知道我的账户名对应的密码
2). 用户输入 用户名 和 密码
(zhangsan , 1234)
3). 问题: 要输入用户名和密码
3. 免密登录
1). 第一次登录
1). 我是客户, 先在客户端生成一对密钥: 公钥, 私钥 (非对称加密算法: RSA)
2). 第一次登录服务器, 是需要输入用户名和密码 (正确登录,服务器知道你是张三)
3). 客户端保留私钥, 会把你的公钥发送给服务器, 服务器会保存公钥(这是张三的公钥)
2). 再次登录
1). 客户端告诉服务器说, 我是张三
2). 服务端会要求客户端证明自己是张三
3). 证明如下:
a. 服务端用张三的公钥加密一个随机字符串str -> cypher密文
b. 将这个密文发给客户端
c. 客户端用自己的私钥解这个密文,得到明文str, 发给服务端
d. 服务端拿到客户端的解密结果和自己保存的随机字符串比对
e. 如果一致,证明成功, 如果不一致,证明失败
3). 注意点:
1). 张三的私钥不能泄露的
2). 解密结果(随机字符串) 传输过程是危险
ssh
4. ssh协议
1). 安全壳协议Secure Shell Protocol,用于Linux主机之间相互通信的一种加密的协议
2). 默认端口22
SSH工作机制
SSH协议概念和作用: 安全壳协议Secure SHell Protocol,用于Linux主机之间相互通信的一种加密的协议。
SSH登录有两种验证机制:
1) 输入用户名和密码的方式 (A 访问 B, 输入B的账号密码)
2) 免密登录的方式,不需要输入用户名和密码就可以实现安全登录 (A -> B, 不需要输入账号密码)
基于口令的安全验证
只要你知道另一台机器上用户的帐号和口令,就可以登录到远程主机。
命令 | 功能 |
---|---|
ssh 服务器地址 | 从一台主机登录另一台主机,默认是输入用户名和密码登录 |
具体操作:
itheima这台机器有密登录à itcast这台机器
操作演示:
- 先查看itcast这台机器的ip地址,假设是192.168.56.101
- 在客户端itheima这台机器中输入:ssh 192.168.56.101 连接itcast服务端机器。
- 输入root用户在itcast服务端 192.168.56.101这台机器上的密码:root。登录成功,后期操作的就是itcast这台机器了。
- 如果输入exit,则退出itcast 192.168.56.101这台机器,回到itheima客户端这台机器。
- 这时在itheima这台机器下会生成一个隐藏的.ssh目录,下面有一个known_hosts文件,用于保存itcast这台机器的数字签名。
执行效果
免密登录方式配置
如果网络中Linux服务器比较多,需要记住每台服务器的密码也是比较痛苦的事。你无需知道另一台机器上的帐号和口令,也可以登录到远程主机。我们说的SSH免密登录,就说的是这种方式。
公钥与私钥
- 公钥和私钥是成对出现的,公钥可以用来加密(解密),而私钥可以用来解密(加密)。
公钥和私钥是全球唯一配对的。 - 公钥是公开的,所有人都可以取得,私钥是私有的,只有自己知道。
问:王五怎样知道某一瓶毒药是张三的还是李四的?
免密登录的原理
操作指令
命令 | 说明 |
---|---|
ssh-keygen | 在客户端生成一对公钥和私钥 |
ssh-copy-id 服务器地址 | 将公钥发送给服务器 |
客户端免密登录服务器
需求:itheima这台机器免密登录itcast这台机器
生成公钥和私钥:
- 在客户端itheima生成公钥和私钥
- 客户端itheima将公钥发送给itcast服务器端保存
- 以后客户端itheima就可以免密登录itcast服务端
免密登录操作
- 在itheima客户端这台机器上输入:ssh-keygen,如有提示,按回车,生成itheima客户端这台机器的公钥和私钥。生成的公钥和私钥在root/.ssh目录下。id_rsa是私钥,id_rsa.pub是公钥。
- 在itheima客户端这台机器上输入:ssh-copy-id 192.168.56.101, itcast的ip地址,按回车,将刚刚生成的itheima这台机器的公钥复制到itcast服务器这台机器的用户目录下,保存在root/.ssh/authorized_keys文件中。这个文件的内容与生成的公钥id_rsa.pub是一样的。
- 输入itcast这台服务器的登录密码,这时免密配置成功。
- 在itheima客户端这台机器上输入:ssh 192.168.56.101,再也不用密码了。
免密登录执行结果
小结
命令 | 功能 |
---|---|
ssh 服务器地址 | 登录的另一台主机 |
ssh-keygen | 生成公钥和私钥 |
ssh-copy-id 服务器地址 | 将公钥复制到服务器 |
用户管理:创建用户、设置密码、切换用户
目标
-
**创建用户**
-
设置用户密码
-
不同用户之间的切换
添加用户
语法格式
useradd [参数] 用户名 | 创建一个用户 |
---|---|
-m | 创建用户的同时在/home下创建它的主目录 |
-g <组名> | 创建用户的时候指定用户所在的组 未指定组名:默认与用户名相同 |
说明 | 创建好的用户信息在/etc/passwd文件中 |
操作演示
- 进入/home目录,查看目录的内容
- 创建用户Jack,并且创建用户主目录
- 再次ll查看/home目录下存在Jack目录,默认用户Jack在一个叫Jack的组中。
- 创建用户Tom,把用户放在Jack这个组中,并且创建Tom主目录
- 通过ll查看/home目录下的信息
- 查看/etc/passwd文件,可以看到创建的用户信息
执行结果
/etc/passwd文件内容
设置密码
用户创建好以后没有密码,没有密码的用户是不能登录linux系统的。
演示: logout(退出登录) whoami(当前用户是谁)
语法格式
passwd [用户名] | |
---|---|
无参 | 给自己修改密码 |
用户名 | 管理员可以修改其它用户的密码 |
操作演示
- 设置Jack的密码为abc123。如果提示无效的密码,忽略即可,再次输入同一个密码,修改成功。
- 在Linux控制台先logout登出。以Jack登录,注:用户名和密码大小写是敏感的
- 普通用户命令行前面的提示符是$,管理员命令提示符是#,用户主目录显示为~
执行结果
切换用户
语法格式
su 用户账号 | 说明 |
---|---|
作用 | 临时切换到指定的用户,如果是管理员切换到普通用户,不用输入密码 如果是普通用户切换到管理员必须输入管理员的密码 |
操作演示
- 当前用户是root,临时切换成Jack,不用输入密码
- cd进入用户主目录,pwd显示当前的目录,观察前面的提示符
- 从Jack用户切换回root,需要输入密码。
- cd进入用户主目录,pwd显示当前的目录
- 输入2次exit再回到root用户
执行结果
小结
-
**添加用户的命令是什么 useradd**
-
**设置密码的命令是什么 passwd**
-
**切换用户的命令是什么 su**
用户管理:删除用户、修改登录名字
目标
-
**删除用户**
-
**修改用户登录的名字**
删除用户
语法格式
userdel [-r][用户帐号] | 删除指定的用户,前提是用户不在线 |
---|---|
-r | 删除用户的同时,将用户的主目录也删除 |
操作演示
- 使用root删除用户Tom,同时删除Tom的主目录。如果Tom已经登录,则删除失败
- 在/home目录下已经找不到Tom主目录了
执行结果
修改登录名
语法格式
usermod -l 新登录名 原登录名 | |
---|---|
作用 | 修改用户的信息 |
-l <新登录名> | login 将用户登录名改成新的登录名 |
操作演示
- 确认Jack这个用户不在线,如果在线需要将Jack登出
- 修改Jack的登录名为Rose
- 修改以后在Linux控制台,使用Rose重新登录
执行结果
小结
-
删除用户的名字 userdel
-
**修改用户登录的名字 usermod**
组的管理:创建组、修改用户所在组、将用户从组中删除
目标
-
创建一个组
-
**修改用户所在的组**
-
将用户从组中删除
添加组
语法格式
groupadd 组名 | |
---|---|
作用 | 创建一个组,组中没有成员。 |
说明 | /etc/group文件,包含了所有创建组的信息 |
操作演示
- 添加一个新的组America
- 查看/etc/group文件,做为主组的用户不会显示出来。
执行结果
修改用户所在组
一个用户只能有一个主组,可以有多个从组(附属组)。
主组 : 家 (1个) A
从组 : 住处 (多个) B,C
Rose : A(主),B,C(从)
某个用户属于那个主组 : /home下 ll
某个用户属于哪些从组: cat /etc/group
语法格式
usermod 参数 组名 用户名 | |
---|---|
-g<组名> | 修改用户的主组 |
-G<组1,组2> | 修改用户的从组 |
操作演示
- 进入/home目录,ll显示home目录的内容可以看到Rose是属于Jack这个组
- 将Rose这个用户的主组Jack修改为America组
- 使用ll显示/home目录,查看Rose用户所属组名变成了America
- 创建两个组:China和Japan
- 将Rose添加进China和Japan两个从组中,组名之间使用逗号隔开。
- 查看/etc/group文件,查看到Rose与组的关系。文件中主组看不到用户的列表。
执行结果
将用户从组中删除
用户无法从主组中删除,只可以修改主组,可以从从组中删除用户。
语法格式
gpasswd -d 用户名 组名 | |
---|---|
-d<用户名> | 将用户从从组中删除 |
操作演示
- 把Rose从America这个组中删除,删除失败。
- 把Rose从China这个组中删除
- 查看/etc/group文件,发现Rose已经从China组中删除
执行结果
小结
- 添加组 groupadd
- 修改用户所在组 usermod -g -G
- **将用户从组中删除 gpasswd -d **
组的管理:修改组名字,删除组,使用sudo权限
目标
-
**修改组的名字**
-
**删除组**
-
**临时使用管理员命令**
修改组的名字
语法格式
groupmod -n 新组名 原组名 | |
---|---|
-n <新组名> | 将一个组的名字修改成另一个名字 |
操作演示
- 在/home目录下ll查看修改前的信息
- 将Rose的主组名America改成USA
- 查看/home目录信息,发现Rose的组名已经改成USA
执行结果
删除组
删除的组的前提是:没有用户把它做为主组,如果要删除主组,则必须先删除这些用户后或将用户移动到其他主组中,才能删除主组。
语法格式
groupdel 组名 | |
---|---|
作用 | 删除一个组 |
操作演示
- 删除USA组,删除失败,因为还有Rose把它做为主组
- 删除Japan这个组
- 删除China这个组
- 查看/etc/group文件,发现没有这两个组的信息了
执行结果
设置sudo权限
普通用户临时操作管理员的命令,设置sudo权限
普通用户没有权限的演示
- 使用su切换用户到Rose,进入自己的用户目录
- 在主目录下创建一个文件rose.txt,可以创建成功。
- 添加一个用户Mary,发现创建失败。
- 退出Rose用户,返回到root 用户
执行结果
sudo权限的说明
Rose是普通用户,可以使用基本的命令,如:创建文件等操作,但不能执行系统级别的指令。
语法格式
sudo 系统命令 | 普通用户执行管理员命令 |
---|---|
作用 | 使用命令的前提:必须先给用户权限 |
设置普通用户sudo权限的步骤
(要用root用户修改)
1) 编辑/etc/sudoers文件,在root ALL=(ALL) ALL下复制一行(92行),将用户名改成Rose,因为是只读的文件,所以要强制保存退出 :wq!
Rose ALL=(ALL) ALL
2) 切换回Rose用户,进入/home目录。ll查看目录下目前的状态。
3) 使用sudo命令添加一个用户Mary,这时需要输入Rose的密码才能操作成功。
sudo useradd -m Mary
4) 进入/home查看已经创建Mary用户和它的主目录
5) 退回Rose,回到管理员root的账户
执行结果
小结
- 修改组的名字 groupmod
- 删除组 groupdel
- 执行管理员权限的命令 sudo