[linux]九、用户和组管理(User and group management)-part2

目录

1、快照

2、chown

2.1、在根目录下使用chown -R和rm -rf的区别

2.2、权限问题

 2.2.1、文件的权限信息存放在哪里?

3、/etc/skel/文件

3.1、linux登录进来的时候,它的过程是怎样的?

3.1.1、bash的启动脚本初始化(需要记下来⭐⭐⭐)

3.2、.bash_profile

3.3、.bashrc

3.3.1、 /etc/bashrc

3.4、.bash_logout

3.5、shell启动配置文件总结

3.5.1、centos7和8的开机启动流程

3.6、小练习

4、useradd命令在后台到底做了哪些工作?

4.1、手工新建一个用户

5、从别的机器里复制文件到另一个机器里(scp)

 5.1、!scp

5.2、单引号和双引号的区别

6、如何将已经登录在系统里的用户提出系统?并且防止它再次登录

6.1、查看哪些用户在登录系统

6.1.1、load average: 0.01, 0.05, 0.05 ,

6.2、查看哪些用户登录过系统

6.3、如何知道黑客在你的电脑里新建了可以用户?

6.4、破解root用户的密码

6.5、删除/etc/passwd文件字段的x

7、营救模式(rescue) ⭐⭐⭐


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、开机启动流程的意义

  1. 掌握让某个软件开机自动运行
  2. 开机不能正常启动,是什么原因,或者哪个环节出现了问题
  3. 防止黑客植入木马,去查询黑客会把木马放在哪些地方

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"这个命令

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FanMY_71

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值