1、编写脚本,接受二个位置参数,solin 和 /www ,判断系统是否有 solin ,如果没有则自动创建 solin 用户,并自动设置家目录为 /www

#!/bin/bash
if [ $# == 2 ];then
        if `id $1 &> /dev/null` ;then
                echo "用户已存在,用户信息如下:"
                echo `id $1`
        else
                useradd $1 -d $2
        fi
fi

2、使用 expect 实现自动登录系统

# 创建脚本文件
[root@localhost ~]# vim ssh.exp

# 脚本内容如下
#!/usr/bin/expect
spawn ssh root@10.10.10.101
expect {
 "yes/no" { send "yes\n";exp_continue }
 "password" { send "password\n" }
}
interact

# 安装 expect
[root@localhost ~]# yum install -y expect

# 授予执行权限
[root@localhost ~]# chmod +x ./ssh.exp

# 执行脚本(登录成功)
[root@localhost ~]# ./ssh.exp
spawn ssh 10.10.10.101
The authenticity of host '10.10.10.101 (10.10.10.101)' can't be established.
ECDSA key fingerprint is SHA256:j94kX7ROOIiX7BVmMULvS+Npo7pd7O1KtT4Bsux1qF4.
ECDSA key fingerprint is MD5:88:d1:85:ec:36:16:7f:b7:54:65:b0:5f:7b:d8:ce:c9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.10.10.101' (ECDSA) to the list of known hosts.
root@10.10.10.101's password: 
Last login: Thu Jun 18 09:32:30 2020
[root@cobbler ~]#

3、简述 linux 操作系统启动流程

3.1 CentOS 6

  • 按下电源通电,CPU 开始工作,运行 BIOS 程序,BIOS 掌握 CPU 控制权;
  • BIOS 程序执行上电自检,查找 MBR,MBR开始掌握CPU控制权;
  • MBR 结合其他引导代码(这些代码统称为 bootloader )引导系统内核启动;
  • 找到内核映像后,将内核映像装载到内存中并解压(如果被压缩),内核开始工作,掌握 CPU 控制权,启动一些重要进程,然后执行用户空间的第一个进程 init 进程,init 进程掌握 CPU 控制权;
  • init 进程开始运行就表示系统已经启动成功,然后做系统级别的初始化,结束后提供登录界面(getty 类进程);
  • getty 类进程启动成功后,打开一个终端,提示用户输入用户名,然后启动一个 login 进程让用户输入密码并验证密码,密码正确则验证权限,如果允许登录,则根据 /etc/passwd 中的配置启动 shell 进程,如 bash;
  • shell 进程启动后读取该 shell 对应的配置文件进行初始化;
  • 启动过程结束,可以在命令行执行用户操作。

3.2 CentOS 7

  • UEFI 或 BIOS 初始化,运行 POST 开机自检;
  • 选择启动设备;
  • 引导内核,做部分内核初始化工作,加载 initramfs ;
  • 启动 systemd 进程,systemd 进程此时工作在 initramfs 环境下;
  • systemd 执行 initrd.target 所有单元,包括挂载 /etc/fstab、从 ramdisk 的虚根文件系统切换到真正的根文件系统;
  • systemd 执行默认 target 配置,其配置文件为 /etc/systemd/system/default.target;
  • systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统;
  • systemd 启动 multi-user.target 下的本机与服务器服务;
  • systemd 执行 multi-user.target 下的 /etc/rc.d/rc.local;
  • systemd 执行 multi-user.target 下的 getty.target 让用户登录;
  • 启动 shell 进程并初始化,最终进入命令行。

4、破解 centos7 密码

  • 进入启动界面,选择内核行,按 e 键,编辑启动项;
  • centos7普通用户锁定解锁 centos7破解登录密码_配置文件

  • 在 linux16 这行的结尾添加 init=/bin/sh(此处 ro 改成 rw ,或添加 rw init=/bin/sh 下一步可不用重新挂载),按 Ctrl+x 启动;
  • centos7普通用户锁定解锁 centos7破解登录密码_命令行_02

  • 重新挂载 / (mount / -o rw,remount),用passwd修改密码。
  • centos7普通用户锁定解锁 centos7破解登录密码_命令行_03