首页 > 系统相关 >Linux扩展-cnblog

Linux扩展-cnblog

时间:2023-03-06 15:00:01浏览次数:35  
标签:公钥 登录 -- 扩展 用户 主机名 修改 Linux cnblog

linux其他命令(了解)

主机名的修改

目标

  1. 修改服务器主机名

  2. 网络服务的开启和关闭

主机名配置

​ 需求:默认主机名是localhost,我们希望改为有含义的主机名。如:heima,itcast等主机名。类似于Windows中修改主机名: 1553589164649

语法格式

修改主机名 说明
hostname 显示当前主机名
hostname 新主机名 修改主机名,重启以后又还原
hostnamectl set-hostname 新主机名 永久修改,重启以后也是起作用的

操作演示:

  1. 查看当前的主机名
  2. 设置新的主机名为itheima,再查看当前的主机名
  3. 设置新的主机名为itheima,重启以后仍然有效

执行结果 1553589230441

小结

命令 说明
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 域名解析服务器

访问流程如下:

  1. 访问DNS,查询这个域名对应的IP地址
  2. 访问真实的服务器IP地址
  3. 如果直接输入IP地址访问,访问速度更快。

1553591057989

Windows下本机的hosts文件是 c:\windows\System32\drivers\etc\hosts,这是一个文本文件。

修改Linux域名映射文件

在Linux中,/etc/hosts文件用于在主机名与IP地址之间进行映射。所以你想访问一个什么样的主机名,就需要把这个主机名和它对应的IP地址配置在/etc/hosts文件中。

操作步骤

  1. 首先ping newboy看能否访问这个地址
  2. 修改hosts文件命令:vim /etc/hosts
  3. 将本机局域网的ip地址与newboy这个名字进行映射。一个ip地址后面可以映射多个域名地址。
  4. 再次使用ping newboy,发现可以访问这个名字。实现域名与ip地址的映射。

执行结果

1553591104227

小结

  1. 域名映射修改哪个文件

    /etc/host文件

  2. 什么是DNS,它有什么用?

    域名解析服务器,将域名映射成对应的IP地址。

虚拟机快照(重点)

目标

  1. 什么是快照
  2. 快照的操作

介绍

虚拟机“快照”(snapshot)是虚拟机磁盘文件在某个时间点及时的副本备份(数据备份)。系统崩溃或系统异常,你可以使用恢复到快照指定时间点系统状态。

​ 虚拟机快照(备份) : 用在安装软件的时候

​ A(有备份) -> B(安装JDK,备份) -> C(安装mysql) -> ...

工具栏 (VMWare)

1563793774832

定义快照

1563793797124

1563793823429

使用快照

当系统环境崩溃或系统异常时,我们希望当前系统恢复到以前某个时间点正常状态,可以使用快照进行恢复

1563793859264

小结

快照的作用是什么?

备份系统当前状态,以后可以快速的恢复到当前状态

克隆虚拟机

概念

就是复制已有的虚拟机系统创建出一个一模一样的虚拟机系统。

作用

克隆可以快速复制创建出多台linux系统,便于后面我们学习负载均衡多台linux系统进行测试。

实现步骤

  1. 关闭现有itheima虚拟机

    1553590763233

  2. 点击虚拟机itheima,出现如下效果

    1553590771853

  3. 如图操作

    1553590831620

  4. 点击下一步

    1553590847667

  5. 点击下一步

    1553590856740

  6. 如图操作下一步

    1553590862646

  7. 如下图操作

    1553590870726

    1553590875407

    1553590882897

  8. 效果

    1553590891609

  9. 启动itheima2虚拟机

  10. 执行命令:vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改其中配置的固定ip,避免与itheima虚拟机ip冲突

1553590899337

  1. 可选:修改主机名

  2. 重启网络服务

    systemctl restart network

    1553590917847

小结

  1. 克隆虚拟机后要做什么事情?

    1. 修改IP地址
    2. 修改主机名字
    

防火墙配置 (在安装软件中会使用即可)

目标

  1. 防火墙的管理命令
  2. 开放端口允许外部连接
  3. 移除端口不允许外部连接

介绍

防火墙类似于一个关卡检查人员,当你访问其他人的电脑,或者其他人访问你的电脑,都要进行拦截并进行处理,有的阻止,有的放行,有的转发。

默认情况下防火墙在开机以后就自动启动了。

语法格式

防火墙的服务管理

命令 作用
systemctl start firewalld 开启防火墙
systemctl stop firewalld 关闭防火墙
systemctl enable firewalld 开启自启动防火墙
systemctl disable firewalld 关闭开机自启动防火墙
systemctl status firewalld 显示防火墙状态

操作演示

  1. 确认当前是管理员的账户,查看防火墙当前的状态
  2. 关闭防火墙,再查看防火墙的状态
  3. 再次开启防火墙,查看防火墙的状态

执行结果

1553591585545

命令firewall-cmd

外网或内网需要连接到当前系统内的程序进行操作,需要linux系统开放程序端口,否则无法访问。

firewall-cmd 向防火墙中添加或删除指定端口号
--zone=public 将端口号添加到防火墙中哪个区域
public: 公共区域,默认值。可以让互联网上所有的机器访问这个端口号
internal: 内部区域,让局域网中,内部中机器来访问这个端口号
是public的一个子集
--add-port=端口/tcp 添加指定的端口号,使用TCP协议
--remove-port=端口/tcp 删除指定的端口号,使用TCP协议
--permanent 永久的添加,主机重启了也是起作用的
--list-all 显示所有已经添加的端口号
--reload 重启加载端口的规则,让新的端口号起作用

步骤

  1. 永久开放443端口,添加到公开区域,允许外部连接
  2. 重新加载防火墙的规则
  3. 显示所有打开的端口号
  4. 从公共区域中,永久移除443端口,不允许外部连接
  5. 重新加载防火墙规则
  6. 显示打开的端口号

效果

1563798960456

1563799088361

小结

说说下面代码的作用

firewall-cmd --zone=public --add-port=8080/tcp --permanent
永久的向公共区域添加8080的端口号

firewall-cmd --reload
重新加载新的规则

firewall-cmd --list-all
显示所有添加到端口号

SSH免密登录

目标

  1. 输入密码登录另一台服务器
  2. 免密登录的原理
  3. 使用免密登录另一台服务器

为什么要登录

公司中的运维人员,有的时候需要操作多台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这台机器

1553591730548

操作演示:

  1. 先查看itcast这台机器的ip地址,假设是192.168.56.101
  2. 在客户端itheima这台机器中输入:ssh 192.168.56.101 连接itcast服务端机器。
  3. 输入root用户在itcast服务端 192.168.56.101这台机器上的密码:root。登录成功,后期操作的就是itcast这台机器了。
  4. 如果输入exit,则退出itcast 192.168.56.101这台机器,回到itheima客户端这台机器。
  5. 这时在itheima这台机器下会生成一个隐藏的.ssh目录,下面有一个known_hosts文件,用于保存itcast这台机器的数字签名。

执行效果

1553591776267

免密登录方式配置

如果网络中Linux服务器比较多,需要记住每台服务器的密码也是比较痛苦的事。你无需知道另一台机器上的帐号和口令,也可以登录到远程主机。我们说的SSH免密登录,就说的是这种方式。

公钥与私钥

  1. 公钥和私钥是成对出现的,公钥可以用来加密(解密),而私钥可以用来解密(加密)。
    公钥和私钥是全球唯一配对的。
  2. 公钥是公开的,所有人都可以取得,私钥是私有的,只有自己知道。

问:王五怎样知道某一瓶毒药是张三的还是李四的?

1553591842283

免密登录的原理

1553591884807

操作指令

命令 说明
ssh-keygen 在客户端生成一对公钥和私钥
ssh-copy-id 服务器地址 将公钥发送给服务器

客户端免密登录服务器

需求:itheima这台机器免密登录itcast这台机器

1553591929818

生成公钥和私钥:

  1. 在客户端itheima生成公钥和私钥
  2. 客户端itheima将公钥发送给itcast服务器端保存
  3. 以后客户端itheima就可以免密登录itcast服务端

免密登录操作

  1. 在itheima客户端这台机器上输入:ssh-keygen,如有提示,按回车,生成itheima客户端这台机器的公钥和私钥。生成的公钥和私钥在root/.ssh目录下。id_rsa是私钥,id_rsa.pub是公钥。
  2. 在itheima客户端这台机器上输入:ssh-copy-id 192.168.56.101, itcast的ip地址,按回车,将刚刚生成的itheima这台机器的公钥复制到itcast服务器这台机器的用户目录下,保存在root/.ssh/authorized_keys文件中。这个文件的内容与生成的公钥id_rsa.pub是一样的。
  3. 输入itcast这台服务器的登录密码,这时免密配置成功。
  4. 在itheima客户端这台机器上输入:ssh 192.168.56.101,再也不用密码了。

免密登录执行结果

1553591975598

1553591995049

小结

命令 功能
ssh 服务器地址 登录的另一台主机
ssh-keygen 生成公钥和私钥
ssh-copy-id 服务器地址 将公钥复制到服务器

用户管理:创建用户、设置密码、切换用户

目标

  1. **创建用户**
    
  2. 设置用户密码

  3. 不同用户之间的切换

添加用户

语法格式

useradd [参数] 用户名 创建一个用户
-m 创建用户的同时在/home下创建它的主目录
-g <组名> 创建用户的时候指定用户所在的组
未指定组名:默认与用户名相同
说明 创建好的用户信息在/etc/passwd文件中

操作演示

  1. 进入/home目录,查看目录的内容
  2. 创建用户Jack,并且创建用户主目录
  3. 再次ll查看/home目录下存在Jack目录,默认用户Jack在一个叫Jack的组中。
  4. 创建用户Tom,把用户放在Jack这个组中,并且创建Tom主目录
  5. 通过ll查看/home目录下的信息
  6. 查看/etc/passwd文件,可以看到创建的用户信息

执行结果

1553674003887

/etc/passwd文件内容

1553674029790


设置密码

用户创建好以后没有密码,没有密码的用户是不能登录linux系统的。

演示: logout(退出登录) whoami(当前用户是谁)

语法格式

passwd [用户名]
无参 给自己修改密码
用户名 管理员可以修改其它用户的密码

操作演示

  1. 设置Jack的密码为abc123。如果提示无效的密码,忽略即可,再次输入同一个密码,修改成功。
  2. 在Linux控制台先logout登出。以Jack登录,注:用户名和密码大小写是敏感的
  • 普通用户命令行前面的提示符是$,管理员命令提示符是#,用户主目录显示为~

执行结果

1553674118909


切换用户

语法格式

su 用户账号 说明
作用 临时切换到指定的用户,如果是管理员切换到普通用户,不用输入密码
如果是普通用户切换到管理员必须输入管理员的密码

操作演示

  1. 当前用户是root,临时切换成Jack,不用输入密码
  2. cd进入用户主目录,pwd显示当前的目录,观察前面的提示符
  3. 从Jack用户切换回root,需要输入密码。
  4. cd进入用户主目录,pwd显示当前的目录
  5. 输入2次exit再回到root用户

执行结果

1553674186237

小结

  1. **添加用户的命令是什么 useradd**
    
  2. **设置密码的命令是什么 passwd**
    
  3. **切换用户的命令是什么 su**
    

用户管理:删除用户、修改登录名字

目标

  1. **删除用户**
    
  2. **修改用户登录的名字**
    

删除用户

语法格式

userdel [-r][用户帐号] 删除指定的用户,前提是用户不在线
-r 删除用户的同时,将用户的主目录也删除

操作演示

  1. 使用root删除用户Tom,同时删除Tom的主目录。如果Tom已经登录,则删除失败
  2. 在/home目录下已经找不到Tom主目录了

执行结果

1553674298200


修改登录名

语法格式

usermod -l 新登录名 原登录名
作用 修改用户的信息
-l <新登录名> login 将用户登录名改成新的登录名

操作演示

  1. 确认Jack这个用户不在线,如果在线需要将Jack登出
  2. 修改Jack的登录名为Rose
  3. 修改以后在Linux控制台,使用Rose重新登录

执行结果

1553674380096

小结

  1. 删除用户的名字 userdel

  2. **修改用户登录的名字 usermod**
    

组的管理:创建组、修改用户所在组、将用户从组中删除

目标

  1. 创建一个组

  2. **修改用户所在的组**
    
  3. 将用户从组中删除

添加组

语法格式

groupadd 组名
作用 创建一个组,组中没有成员。
说明 /etc/group文件,包含了所有创建组的信息

操作演示

  1. 添加一个新的组America
  2. 查看/etc/group文件,做为主组的用户不会显示出来。

执行结果

1553674497860

修改用户所在组

一个用户只能有一个主组,可以有多个从组(附属组)。

主组 : 家 (1个) A

从组 : 住处 (多个) B,C

Rose : A(主),B,C(从)

某个用户属于那个主组 : /home下 ll

某个用户属于哪些从组: cat /etc/group

语法格式

usermod 参数 组名 用户名
-g<组名> 修改用户的主组
-G<组1,组2> 修改用户的从组

操作演示

  1. 进入/home目录,ll显示home目录的内容可以看到Rose是属于Jack这个组
  2. 将Rose这个用户的主组Jack修改为America组
  3. 使用ll显示/home目录,查看Rose用户所属组名变成了America
  4. 创建两个组:China和Japan
  5. 将Rose添加进China和Japan两个从组中,组名之间使用逗号隔开。
  6. 查看/etc/group文件,查看到Rose与组的关系。文件中主组看不到用户的列表。

执行结果

1553674569689 1553674576382

将用户从组中删除

用户无法从主组中删除,只可以修改主组,可以从从组中删除用户。

语法格式

gpasswd -d 用户名 组名
-d<用户名> 将用户从从组中删除

操作演示

  1. 把Rose从America这个组中删除,删除失败。
  2. 把Rose从China这个组中删除
  3. 查看/etc/group文件,发现Rose已经从China组中删除

执行结果

1553674644560

1553674649432

小结

  1. 添加组 groupadd
  2. 修改用户所在组 usermod -g -G
  3. **将用户从组中删除 gpasswd -d **

组的管理:修改组名字,删除组,使用sudo权限

目标

  1. **修改组的名字**
    
  2. **删除组**
    
  3. **临时使用管理员命令**
    

修改组的名字

语法格式

groupmod -n 新组名 原组名
-n <新组名> 将一个组的名字修改成另一个名字

操作演示

  1. 在/home目录下ll查看修改前的信息
  2. 将Rose的主组名America改成USA
  3. 查看/home目录信息,发现Rose的组名已经改成USA

执行结果

1553674741115

删除组

删除的组的前提是:没有用户把它做为主组,如果要删除主组,则必须先删除这些用户后或将用户移动到其他主组中,才能删除主组。

语法格式

groupdel 组名
作用 删除一个组

操作演示

  1. 删除USA组,删除失败,因为还有Rose把它做为主组
  2. 删除Japan这个组
  3. 删除China这个组
  4. 查看/etc/group文件,发现没有这两个组的信息了

执行结果

1553674787514

设置sudo权限

普通用户临时操作管理员的命令,设置sudo权限

普通用户没有权限的演示

  1. 使用su切换用户到Rose,进入自己的用户目录
  2. 在主目录下创建一个文件rose.txt,可以创建成功。
  3. 添加一个用户Mary,发现创建失败。
  4. 退出Rose用户,返回到root 用户

执行结果

1553674824780

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的账户

执行结果1553674912481

1553674930825

小结

  1. 修改组的名字 groupmod
  2. 删除组 groupdel
  3. 执行管理员权限的命令 sudo

标签:公钥,登录,--,扩展,用户,主机名,修改,Linux,cnblog
From: https://www.cnblogs.com/-turing/p/17183878.html

相关文章

  • linux root fs生成
    1zcat../initramfs-4.18.0-240.el8.x86_64.img|cpio-idmv2rpm-ivh./KMOD_MEGARAID_SAS_07_714_04.rpm3depmode-broot4dracut--force5cat/lib/mo......
  • Java 合并多个碎片文件到一个文件,也可以直接使用linux cat命名
    Java合并多个碎片文件到一个文件,也可以直接使用linuxcat命名linuxcat命令cat*.zip.*>out.zipjava工具使用方式#编译javacCombineFile.java#执行javaComb......
  • centos7.9系统禁用selinux脚本
    临时关闭setenforcepermissive永久关闭配置文件路径/etc/sysconfig/selinux修改配置项SELINUX=enforcing为SELINUX=disabledsed-i's/SELINUX=enforcing/'SEL......
  • Linux
    下载:通过finalshell                ......
  • 你也能成为“黑客”高手——趣谈Linux Shell编程语言
    作者:京东零售杜兴文我们看过很多在电脑命令行敲一些命令并给观众展示很高科技的画面感的电影,比如《盗梦空间》《操作系统革命》《代码》等等,再想想电影黑客帝国中的画面......
  • linux 查看动态库里的函数
    nm-Dlibaudio_frame_api.so上面是linux的,下面是Android的(针对的是targe_os=android,targe_cpu=arm等动态库的)/home/jackey/code/webrtc-checkout/src/third_p......
  • linux下nginx安装rtmp模块
    0.背景1.安装1.1安装nginx所需的编译环境yuminstall-ywgetunzipgccgcc-c++perlpcre-develzlibzlib-developensslopenssl-develnet-tools1.2下载nginx......
  • linux命令之journalctl查看日志信息
    #以flow形式查看日志实时滚动$journalctl-f#查看内核日志$journalctl-k#查看指定服务日志实时滚动最新日志$journalctl-udocker.serivce#查看指......
  • Linux 查看重启开机时间
    Linux查看重启开机时间#最近启动时间who-b#systemboot2021-12-3107:07#最后重启日期last-xreboot|head-1#机器运行时长uptime-p......
  • Linux 打包压缩
    1.zip#压缩目录zip-rtese.zipdirname#压缩文件ziptest.ziptest1.txttest2.txttest3.txt#参数-r:递归压缩目录-m:文件压缩后删除原始文件-v:显示压缩......