目录
Linux的网络信息
一、修改主机名称
在Windows里面,主机名称可以在控制面板里修改,在Linux里,主机名可以用hostname命令去修改,但这种修改只是临时有效。想要修改主机名长久有效,需要到hostname文件中去修改
临时修改
hostname bdp
长久修改
vi /etc/hostname
二、DNS解析
域名解析服务 :可以将域名转换为IP地址
第一天学习的时候 要在 vi /etc/sysconfig/network-scripts/ifcfg-ens33 文件中修改IP
这里可以 可以配置hosts文件 来修改主机域名
vi /etc/hosts
将来我们需要把所有的虚拟机IP都配置hosts文件
三、网络相关命令
这里介绍几个常用的命令:ifconfig 、netstat 、ping 、telnet 、curl
ifconfig
查看当前网卡的配置信息
这个命令属于 net-tools中的一个命令,但是Centos7中minimal版并没有集成这个包
所以7的时候需要自己手动安装
如果没有ifconfig ,可以使用ip addr 临时代替
netstat
查看当前网络的状态信息
一个机器默认有65536个端口号[0,65535]
这是一个逻辑的概念,将来我们需要使用程序监听指定的端口,等待别人的访问
一个端口只能被一个程序所监听, 端口已经被占用
netstat -anp
netstat -r 核心路由表 == route
ping
查看与目标IP地址是否能够连通
telnet
查看与目标IP的指定端口是否能够连通
yum install telnet -y
telnet 192.168.31.44 22
curl
restful 我们所有的资源在网络上中都有唯一的定位
那么我们可以通过这个唯一定位标识指定的资源
四、主机间相互免密钥
在两个虚拟机之间要经常互相访问、传递文件。每次访问都需要经过防火墙或者密码验证。 Z在同一公司的内网环境下,这种验证很繁琐的。这里可以用公私钥的方法让不同的虚拟机之间相互免密钥。
每个虚拟机都会生成一对公钥、私钥。私钥自己保留,公钥发送出去。其他的虚拟机使用对应的虚拟机公钥对传输的文件进行加密,这样加密后的数据只有与其公钥对应的私钥才能解开。
服务器间免密钥
下面是实现流程:
1.生成密钥
通过命令在 ~/.ssh/ 目录下生成一对密钥对
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
密钥对:id_rsa id_rsa.pub known_hosts
2.拷贝公钥
要想免密登录谁,就把公钥拷贝给对方即可,这个公钥文件必须放在对方主机的
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.88.102
root:对方的用户名
192.168.88.102:对方的主机IP
3.忽略主机名校验和host校验
本次生效: ssh -o StrictHostKeyChecking=no root@node01 。
永久生效:修改 /etc/ssh/ssh_config 文件的配置
想要永久生效,需要在 Host * 节点下配置以下信息
# 严格的密钥检查 no
StrictHostKeyChecking no
# 如果不希望生成已知主机列表文件,可以将已知主机列表文件信息写入黑洞(不会再生成 known_hosts 文件)
#UserKnownHostsFile /dev/null
注意:SSH 对主机公钥的检查等级是根据 StrictHostKeyChecking 变量来配置的
StrictHostKeyChecking=no :最不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网建议使用。如果访问的计算机的公钥在本地不存在,会自动添加到文件中(默认是 known_hosts ),并且给出一个警告。
StrictHostKeyChecking=ask :默认的级别,就是出现刚才的提示。如果连接和公钥不匹配,给出提示,并拒绝登录。
StrictHostKeyChecking=yes :最安全的级别,如果连接和公钥不匹配,拒绝连接,不会提示详细信息。
用户组权限
还是拿Windows系统举例,Windows系统里除了管理员用户,还可以创建其他用户,这些用户的权限都没有管理员高。同样的,Linux里也可以创建权限低一些的用户。
一、用户
[root@node01 ~]# useradd [选项] [用户名]
可选项:
-D :改变新建用户的预设值
-c :添加备注文字
-d :新用户每次登陆时所使用的家目录
-e :用户终止日期,日期的格式为 YYYY-MM-DD
-f :用户过期几日后永久停权。当值为 0 时用户立即被停权,而值为 -1 时则关闭此功能,预设值为 -1
-g :指定用户对应的用户组
-G :定义此用户为多个不同附属组的成员
-m :用户目录不存在时则自动创建
-M :不建立用户家目录,优先于 /etc/login.defs 文件设定
-n :取消建立以用户名称为名的群组
-r :建立系统帐号
-u :指定用户 id
新增用户默认会创建同名的组和家目录
然后是设置密码:
[root@node01 ~]# passwd zhangsan
创建完后可以通过用户名查看用户:
[root@node01 ~]# id zhangsan
uid=1000(zhangsan) gid=1000(zhangsan) groups=1000(zhangsan)
查看用户名和密码:
[root@node01 ~]# cat /etc/shadow
也可以修改用户:
# 修改用户名(组名称和家目录是不会被修改的)
usermod -l newname oldname
# 锁定用户(禁止登录)
usermod -L zs
# 解锁用户
usermod -U zs
# 删除用户(默认会删除组和家目录)
userdel -r zs
# 添加用户并指定组
useradd -g zhangsan zhangsan
# 添加用户并指定附属组
useradd zhangsan -g zhangsan -G zs,zhangs
# 切换用户
su - lisi
复杂一点的,可以设置过期时间:
# 添加新用户 lisi,设置家目录为 /tmp/lisi ,用户过期时间为 2022/06/01 过期后两天停权
useradd -e '2022/06/01' -f 2 -d /tmp/lisi lisi
二、组
groupadd 命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中
对应的组创建、修改、查看、删除:
# 创建组
groupadd java
# 修改组
groupmod -n newgroup oldgroup
groupmod -n bigdata java
# 查看用户对应的组
groups
# 查看其他用户对应的组
groups zhangsan
# 修改用户的组
# -g 修改主组(只能修改一个)
usermod zhangsan -g bigdata
groups zhangsan
# -G 修改附属组(可以修改多个)
groupadd c
groupadd python
usermod zhangsan -G c,p
groups zhangsan
# 删除组
groupdel python
三、权限
权限在 ll 查询文件详细信息里的第一列就是
[root@node01 ~]# ll /
total 16
lrwxrwxrwx. 1 root root 7 May 1 21:18 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 May 1 21:22 boot
drwxr-xr-x 20 root root 3220 May 2 10:52 dev
drwxr-xr-x. 74 root root 8192 May 2 11:40 etc
drwxr-xr-x. 2 root root 6 Apr 11 2018 home
lrwxrwxrwx. 1 root root 7 May 1 21:18 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 1 21:18 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Apr 11 2018 media
drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
drwxr-xr-x. 2 root root 6 Apr 11 2018 opt
dr-xr-xr-x 109 root root 0 May 2 10:52 proc
dr-xr-x---. 2 root root 135 May 2 14:50 root
drwxr-xr-x 22 root root 620 May 2 10:52 run
lrwxrwxrwx. 1 root root 8 May 1 21:18 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
dr-xr-xr-x 13 root root 0 May 2 17:45 sys
drwxrwxrwt. 7 root root 132 May 2 11:47 tmp
drwxr-xr-x. 13 root root 155 May 1 21:18 usr
drwxr-xr-x. 19 root root 267 May 1 21:25 var
第 1 列:规定了不同的用户对文件所拥有的权限,第 1 列的第一个字符又表示了当前文件的类型:
- :普通文件
d :文件夹
l :软链接
第 2 列:引用计数,文件的引用计数代表该文件的硬链接个数,而目录的引用计数代表该目录有多少个一级子目录。
第 3 列:所有者,也就是这个文件属于哪个用户。默认所有者是文件的建立用户。
第 4 列:所属组,默认所属组是文件建立用户的有效组,一般情况下就是建立用户的所在组。
第 5 列:文件大小,默认单位是字节。
第 6 列:文件修改时间,文件状态修改或文件数据修改时间都会更改,注意这个时间不是文件的创建时间。
第 7 列:文件名或目录名,如果是软链接会显示软链接真正的地址
这里面第 1 列中的权限信息可以看下面这张图:
将 rwx 看做二进制数,有权限表示 1,没有表示 0。那么 rwx 就可以表示为:111,二进制 111 就是十进制 7
文件的类型:第 1 个字符。
文件所有者的权限:第 2~4 个字符,分别对应 rwx ,没有权限用 - 表示。
文件所属组用户的权限:第 5 ~ 7 个字符,分别对应 rwx ,没有权限用 - 表示。
其他用户的权限:第 8~10 个字符,分别对应 rwx ,没有权限用 - 表示。
修改权限
修改权限所属的信息,权限分别对应了用户、组、其他,那我们就可以直接修改文件所属信息来达到权限的控制
修改文件所属用户和组信息命令为: chown 用户:组 文件名
赋予权限
可以通过修改 /etc/sudoers 配置文件的方式来赋予普通用户这个权限
但是赋予权限后,需要在命令前加上 sudo。
管道和重定向
管道
管道 | 就是将前面命令的结果作为参数传递给后面的命令,例如:
ping -c 1 baidu.com | grep from | cut -d ' ' -f 4
# 指管道读取一次百度链接,获取链接中的 from 行内容,根据空格剪切第4段内容
重定向
Linux 中的重定向就是将原本要输出到屏幕中的数据信息,重新指向某个特定的文件中,或者定向到黑洞(/dev/null)中
输入重定向
如果想收集这些内容或者不希望它输出干扰到终端,可以使用重定向将其进行处理:
> :将输出内容追加到目标文件,如果文件不存在,就创建文件;如果文件存在,就将其清空。例如: echo > .bash_history ,将文件内容清空(文件大小变成 0 字节)。
>> :将输出内容追加到目标文件,如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到文件末尾,该文件中的原有内容不受影响。
输出重定向
输入重定向,即原本从键盘等设备上获得的输入信息,重定向由命令的输出作为输入
# 将指定文件作为命令的输入设备
命令 < 文件
# 将文件1作为命令的输入设备,该命令的执行结果输出到文件2中
命令 < 文件1 > 文件2
# 表示从标准输入设备(键盘)中读入,直到遇到分界符才停止(读入的数据不包括分界符)
命令 << 分界符
命令太多了,今天就总结了一些可能会=经常用到的做个笔记。