目录
6、如何将已经登录在系统里的用户提出系统?并且防止它再次登录
6.1.1、load average: 0.01, 0.05, 0.05 ,
1、快照
快照:对某个时间点的linux系统做一个备份,方便以后恢复
在VMware中进行如下操作
这里会有状态显示
2、chown
chown,更改文件的拥有者。默认情况下,所有的linux命令都是属于root用户的。
chown -R 用户名 / ,指定"/"文件以及所有子目录文件的拥有者改变为指定用户或组,用户可以是用户名或者用户UID;组可以是组名或者组UID。
2.1、在根目录下使用chown -R和rm -rf的区别
rm -rf /,会直接把根目录删除;shown -R +用户名 /,会导致整个linux系统的权限出现都属于一个用虎的情况,很多服务会出现异常。
2.2、权限问题
默认情况下,linux里的很多目录和文件,普通用户是操作不了的
其他的操作也处处受到限制
用户新建文件或者文件夹,都是需要使用用户的身份的。权限和进程是捆绑的,进程里由用户的uid和gid。
当"root"使用"mkdir"命令的时候,我们内核(os kernel)会把存放在"/bin/mkdir"的这个命令的程序代码加载到内存中来。要操作这个进程就要到磁盘中建立一个"/tmp/root",将内存中的数据写到里边去。这个进程的信息在内核中是有记录的,当调用这个命令的时候,内核就会检查这个用户的信息,看它是否足够权限来运行这个命令。进程携带的uid和文件允许的uid是否一致。
另当备份文件的时候,没有备份权限这一说法。比如,有一把枪,谁能够使用,不是由这把枪来决定,而是由这个人是否持有持枪证来决定的。
有三种文件权限,读(r)、写(w)、执行(x);文件的权限分给三种人使用,user、group、other。这个文件把这些东西捆绑起来。
drwxr-xr-x. 7 root root 118 2月 12 15:05 linux
2.2.1、文件的权限信息存放在哪里?
文件的权限信息是存放在磁盘里的,操作系统(内核)可以读取出来。磁盘里的一块空间用来存放文件的属性,这个空间叫做inode(文件的索引节点);磁盘里的一块空间用来存放文件的真实数据,这个空间叫做block(块)
文件=目录项+inode(文件的属性)+block、目录项=文件名+inode号。文件的信息,如:这个文件归谁所使用,谁创建的等,放在inode里边,然后文件里边的内容,如:代码之类的东西,放在block里边。一个inode至少有128字节或者256字节,一个块至少有4k。
[root@fttsaxf ~]# ll -i
总用量 5492
34784183 drwxr-xr-x. 2 root root 6 3月 2 22:57 abc
33574991 -rw-------. 1 root root 1241 11月 20 17:34 anaconda-ks.cfg
# 这个前边的数字就是inode号
3、/etc/skel/文件
新建用户账号时,复制到用户宿主目录中
当用户登录系统的时候,就需要开启一个bash子进程,这个进程就会加载执行家目录下的.bash开头的脚本
当我们新建用户的时候,默认会新建用户的家目录,那么用户的家目录是否会有内容?
[root@fttsaxf skel]# ls -a
. .. .bash_logout .bash_profile .bashrc
# 家目录里的默认的文件都是从/etc/skel目录下拷贝过来的
[root@fttsaxf skel]# cd /home/fdd
[root@fttsaxf fdd]# ls -a
. .. .bash_logout .bash_profile .bashrc
[root@fttsaxf fdd]# ls -a /etc/skel
. .. .bash_logout .bash_profile .bashrc
# 这三个文件都是脚本文件,用来初始化用户的环境变量和函数以及别名的
# useradd新建用户的时候,会将"/etc/skel"目录下的所有的文件拷贝到用户的家目录下边
而且要是在"/etc/skel"里边新建一些内容,我们再次新建一个用户,这些新建的内容也会被复制到新建用户的家目录里边。
当我们手动修改用户的家目录,然后新建用户的家目录的时候,我们不会看到在这个家目录中有"/etc/skel"里的这个文件。所以只有用useradd才能在新建用户的时候,把"/etc/skel"里边的内容拷贝到新建的家目录里。
3.1、linux登录进来的时候,它的过程是怎样的?
pstree,用来查看linux里的进程树 -p,输出进程的时候,显示pid号
3.1.1、bash的启动脚本初始化(需要记下来⭐⭐⭐)
图片解释:登录shell就是使用账号密码登录的方式;非登录shell就是直接使用bash命令产生的bash进程
3.2、.bash_profile
功能:去执行.bashrc,输出PATH变量为全局变量
# .bash_profile
# Get the aliases and functions
# 判断家目录下是否有.bashrc文件,如果有,就执行这个文件
# . ~/.bashrc 就是执行脚本的意思,在当前进程里执行
# bash + 文件 产生一个子进程去执行
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
# 输出某个变量为全局变量,变成环境变量,子进程里也可以使用
export PATH
3.3、.bashrc
每次进入新的Bash环境时执行,去执行/etc/bashrc这个文件
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
3.3.1、 /etc/bashrc
定义了很多函数、环境变量、别名等
3.4、.bash_logout
用户每次退出登录的时候执行
3.5、shell启动配置文件总结
Shell启动配置文件的区别
3.6、centos7和8的开机启动流程
3.6.1、开机启动流程的意义
- 掌握让某个软件开机自动运行
- 开机不能正常启动,是什么原因,或者哪个环节出现了问题
- 防止黑客植入木马,去查询黑客会把木马放在哪些地方
3.6.2、开机自检(Power On Self Test)
主板上有BIOS程序(基本输入输出系统);BIOS的行为,包括对CPU、系统主板、基本内容、扩展内容、系统ROM、BIOS等器件的测试。如发现错误,给操作者提示或者警告。简化或加快该过程,可使系统能够快速启动。
图中的CMOS芯片里存放的是BIOS程序的参数
3.6.4、硬盘
不同盘片上的相同磁道组成一个柱面;磁盘里有个位置0磁盘0柱面1扇区(MBR主引导记录);一个盘片可以划分出很多磁道,磁道上划分了63个扇区,一个扇区是512字节。
3.6.3、boot启动顺序
可以通过BIOS改变启动顺序
3.6.4、 vmlinuz和initramfs⭐⭐⭐
initramfs给内核程序提供一个初始化的内存文件系统的镜像文件,是一个临时的根文件系统的镜像文件。vmlinuz是内核程序文件。init 初始化、ram内存里的储存、fs文件系统。systemd是initramfs里的第一个需要启动的程序,然后这个程序去启动其他的程序。
关系梳理
3.6.5.、运行级别runlevel
[root@nginx-kafaka03 ~]# runlevel # 查看当前的运行级别
N 3 # N代表最开始进入的模式,如果是N表示没有进行模式切换
# 3 5 代表开机先进入运行级别3,后来切换到运行级别5
centos7中,/etc/inittab这个文件中记录了编号代表的意义和现在target(类似于runlevels)的使用方式。
[root@nginx-kafaka03 ~]# cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default # 查看默认的运行级别
#
# To set a default target, run:
# systemctl set-default TARGET.target # 设置开机进入图形界面
3.7、小练习
一、每次用户登录的时候都运行sc.bash和sc.py
二、
vim /etc/bashrc 推荐把路径放在这里
PATH=$PATH:/usr/local/zabbix/sbin:/usr/local/nginx/sbin
4、useradd命令在后台到底做了哪些工作?
追加"/etc/passwd"、"/etc/shadow"和"/etc/group"文件,创建一个与用户名同名的家目录和一个邮箱,并且把"/etc/skel/.*"里边的文件全部拷贝到这个家目录里边。
4.1、手工新建一个用户
第一步:修改/etc/passwd文件,在末尾追加
第二步:修改/etc/shadow文件,在末尾追加
我们只需要将前边的用户复制一下,粘贴然后改个名字就可以。这个文件要使用"wq!"强制保存。
第三步:修改/etc/group文件,在末尾追加
第四步:新建家目录,并且修改这个家目录的权限
[root@fttsaxf fdd]# mkdir /home/wangchen
[root@fttsaxf ~]# ll /home
drwxr-xr-x. 3 wangchen shanxi 95 3月 4 13:57 wangchen
drwx------. 2 ysdf ysdf 62 2月 5 21:03 ysdf
drwx------. 2 chenlin wenli 62 2月 27 16:23 yueyang
# 我们可以看到我们手工建立的这个用户的家目录的权限和用useradd建立的家目录的权限不同,所以需要改变。修改文件的权限,只允许属主可以读写执行,其他人和组都没有任何权限。
[root@fttsaxf home]# chmod 700 wangchen
[root@fttsaxf home]# ll|grep wangchen
drwx------. 3 wangchen shanxi 95 3月 4 13:57 wangchen
"""
3种权限中:读(r)是对应的数字是4,写(w)对应的数字是2,执行(x)对应的数字是1.
"""
[root@fttsaxf home]# chmod 421 wangchen
[root@fttsaxf home]# ll|grep wangchen
dr---w---x. 3 wangchen shanxi 95 3月 4 13:57 wangchen
第五步:复制/etc/skel目录下的环境变量配置文件到家目录下
# 把.bash开头的文件复制过去,其他的不要
[root@fttsaxf fdd]# cp /etc/skel/.bash* /home/wangchen
第六步:创建邮箱文件
[root@fttsaxf fdd]# touch /var/spool/mail/wangchen
第七步:验证这个用户是否可以登录
[root@fttsaxf fdd]# su - wangchen
[wangchen@fttsaxf ~]$
但是我们会发现一个问题,我们在这个用户的家目录下使用mkdir命令会发现权限不够
[wangchen@fttsaxf ~]$ mkdir hhh
mkdir: 无法创建目录"hhh": 权限不够
为什么会导致这个问题呢?是因为这个用户的家目录是"root用户"所创建的,所以这个文件的拥有者和组都是root的。
[wangchen@fttsaxf ~]$ ll /home|grep wangchen
drwxr-xr-x. 2 root root 62 3月 4 08:45 wangchen
第八步:修改文件的拥有者,使用chown命令
chown:修改拥有者 --》change owner。将文件的属组或者属主修改为别的用户或者组
# 使用root用户去修改/home/wangchen文件夹的所有者为wangchen,组为shanxi
# -R 递归修改目录里的所有文件和文件夹的所有者
[root@fttsaxf ~]# chown -R wangchen:shanxi /home/wangchen
[root@fttsaxf ~]# ll -d /home/wangchen # 加一个"-d",就是查看这个文件夹本身
drwxr-xr-x. 2 wangchen shanxi 62 3月 4 13:46 /home/wangchen
[root@fttsaxf ~]# cd /var/spool/mail # 修改邮箱的属主为wangchen,组为mail
# 要在mail文件夹里边用这个命令
[root@fttsaxf mail]# chown wangchen:mail wangchen
第九步:再次在这个用户下的家目录下使用命令看是否能够执行
[root@fttsaxf ~]# su - wangchen
上一次登录:五 3月 4 13:48:43 CST 2022pts/0 上
[wangchen@fttsaxf ~]$ mkdir wang
[wangchen@fttsaxf ~]$ ll
总用量 0
drwxr-xr-x. 2 wangchen shanxi 6 3月 4 13:55 wang
思考一下,"userdel -r"这个命令在后台做了哪些工作?
5、从别的机器里复制文件到另一个机器里(scp)
要求这两个机器的系统版本要一样
scp,这个命令可以远程复制文件或者文件夹,2台电脑之间复制,依赖于ssh服务,所以只能够在linux之间复制。只要输入密码就可以进行这个操作了。
把别人的文件复制到自己这里
把自己的文件复制给别人
5.1、!scp
执行最近一条以scp开头的命令
仅仅使用"!"这个符号的时候 ,要注意使用单引号消除它的特殊作用
5.2、单引号和双引号的区别
单引号里的特殊字符没有其他的特殊作用,而双引号部分特殊字符还是有特殊的作用
6、如何将已经登录在系统里的用户提出系统?并且防止它再次登录
踢出可疑的root登录用户,马上修改密码;禁用某个用户;登录;可以限制ip地址登录(iptables、hosts.deny、hosts.allow、ssh内部的限制);启用密钥认证。如果有黑客入侵,一定要查明原因。可以查看最近有哪些用户登录过,使用过那些命令。要是这样也找不到,就只能够重新安装系统(这是最安全的操作)。
6.1、查看哪些用户在登录系统
[root@fttsaxf ~]# w
19:33:49 up 9 min, 2 users, load average: 0.01, 0.05, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 19:24 9:01 0.02s 0.02s -bash
root pts/0 192.168.29.1 19:25 5.00s 0.02s 0.01s w
"""
USER,当前登录的用户
TTY,终端类型和编号
FROM,从哪里登录过来的,ip地址表示远程登录的那台主机的ip
LOGIN@,登录进入系统的时间
WHAT,正在运行那个程序
load average: 0.01, 0.05, 0.05 ,当前的linux系统,最近1,5,15分钟的CPU平均负载
"""
6.1.1、load average: 0.01, 0.05, 0.05 ,
当前的linux系统,最近1,5,15分钟的CPU平均负载
就是在就绪队列里的进程数量。只要就绪队列里每时每刻都有一个进程,cpu其实就是在满负荷运行了,没有闲的时候。
当就绪队列每时每刻只有有0~5算是可以承受的负担,超过5后就表示你的cpu特别繁忙(这是一个核的情况)若一个cpu有8个核,则最大承担值为40
时间片:1秒=1000ms,1ms=1000微妙,1微妙=1000纳秒。将一秒钟划分为更小的时间片段,例如:一个片段大概10ms,那么1秒钟有100个片段
6.2、查看哪些用户登录过系统
last,查看最近有哪些用户登录过
lastlog,根据/etc/passwd文件里的用户,一个一个的分析哪些登录过,哪些没有登录过。/var/log/lastlog
[root@fttsaxf ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 192.168.29.1 日 3月 6 19:25:04 +0800 2022
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
[root@fttsaxf ~]# last|head -5
root pts/0 192.168.29.1 Sun Mar 6 19:25 still logged in
root tty1 Sun Mar 6 19:24 still logged in
reboot system boot 3.10.0-1160.el7. Sun Mar 6 19:23 - 19:35 (00:11)
root pts/0 192.168.29.1 Sun Mar 6 14:22 - crash (05:01)
root tty1 Sun Mar 6 14:21 - 14:53 (00:31)
6.3、如何知道黑客在你的电脑里新建了可以用户?
用"diff"命令对比,备份的passwd文件和"/etc/passwd"文件。看是否有可疑用户
6.4、破解root用户的密码
Centos7:CentOS7破解root密码 - 记忆流年 - 博客园
Centos8:CentOS8版本的root密码破解_xyb的博客-CSDN博客_centos8 root密码
紧急模式,登录的过程中很多服务没有启动,而且还绕过了密码验证。这只是把密码修改了,不会对系统里的文件有影响
这个本质上就是修改,/etc/passwd文件。我们也可以直接修改这个文件,但是要在selinux是"diabled"的前提下,可以不用去创建/.autorelabel文件;如果selinux是enforcing状态,需要创建/.autorelabel文件
[root@fttsaxf menu]# vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing # 这里是开着的
6.5、删除/etc/passwd文件字段的x
/etc/passwd文件里的x密码占位符的作用:如果有x就表示去检查/etc/shadow文件密码;如果没有x,就直接登录,不需要密码验证;但是这种方式只能是本地登录,远程登录不行。
注意:在centos7里,/etc/passwd里的"x"密码占位符如果没有,可以在本地直接登录;但是在centos8里/etc/passwd里的"x"密码占位符如果没有,不可以在本地直接登录,仍然需要去/etc/shadow里检查密码
7、营救模式(rescue) ⭐⭐⭐
自己的linux系统启动不了,需要其他的方式来启动系统
# 这个是前提,删除passwd文件和shadow文件。可以测试,结果是centos7登录不了;centos8进不去
[root@fttsaxf ~]# rm -rf /etc/passwd /etc/shadow
# 这个命令执行完毕之后就进行关机。
第一步:开机设置从光盘启动。注意,这些下面这些操作都是基于有备份的情况下,如,"/etc/passwd-"和"/etc/shadow-"这两个备份文件。其他的情况下边也有详细讲解
进入固件
进入boot选项,选择removable device 可移动设备(u盘,移动硬盘);另外的hard drive(硬盘)、cdrom(光驱)、network(从网络启动,这个是必须要有服务器的前提,一般没有)
按"Shift +"把"CD-ROM Drive"挪到最上边去
这样一启动的话就直接进光盘的系统了。然后按"F10"
"Yes",就能够重启
第二步:troubleshooting(故障处理)
敲击"Enter"
选择"Rescue",然后"Enter"
=================="在有备份文件的情况下,进行下边的操作"======================
"chroot /mnt/sysimage",让光盘里的系统按照原来硬盘里的文件系统去挂载分区,加载原来系统的内容。简单来说就是,告诉营救者不要在"/mnt/sysimage",去找原来硬盘里的东西。
通过光盘里的系统,进入到了原来的系统。
然后输入"exit"(退出切换到原来的系统bash),"rebot"(重启)
第四步:调整"Hard Drive"的位置
然后就能成功进入系统了。
========================没有备份的情况下=====================
默认情况下,营救模式网卡是禁用的,所以需要输入"ifup ens33"来打开网卡
scp,去复制文件到别的地方,也可以从别的地方复制文件过来。可以使用"scp"这个命令