Linux 高级操作


Linux 高级操作

0x01 开机自动执行某个命令

把需要执行的命令写入到:**/etc/rc.local** 中

0x02 grub 加密

目的:给 grub 加密,不让别人通过 grub 进入单用户模式

RHEL 6、CentOS 6

使用 grub-md5-crypt 命令生成密码

[[email protected] ~]# grub-md5-crypt
Password:
Retype password:
$1$ruj8a1$T0lsmfoMmORJ.se7AKvUl1

hiddenmenu 下一行添加:
password --md5 $1$ruj8a1$T0lsmfoMmORJ.se7AKvUl1
image.png

设置完成!

RHEL 7、CentOS 7

使用 grub2-mkpasswd-pbkdf2 命令生成密码

[[email protected] ~]# grub2-mkpasswd-pbkdf2
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.5E91E83A27E2C7963D35EF37D2084A4EA57D192014837AB880073C6A342776D4E5E2DEB8F4F7CA394E04E5226F964256F47F09B57E29135C77B26AB4C4CA17CA.C418BD2BA01F84FEEB682567ABB7F259E3188133FF634A04CE444DECB8579C088AC97ED2A2CFB8F45D5AD42A671FB8FB14361758A32A9C5116D419ABB00351D5

/etc/grub.d/00_header 文件最后追加以下内容:

cat << EOF
set superusers='truda'
password_pbkdf2 truda grub.pbkdf2.sha512.10000.5E91E83A27E2C7963D35EF37D2084A4EA57D192014837AB880073C6A342776D4E5E2DEB8F4F7CA394E04E5226F964256F47F09B57E29135C77B26AB4C4CA17CA.C418BD2BA01F84FEEB682567ABB7F259E3188133FF634A04CE444DECB8579C088AC97ED2A2CFB8F45D5AD42A671FB8FB14361758A32A9C5116D419ABB00351D5
EOF

0x03 手动引导 Linux

GRUB 简介

GNU GRUB(GRand Unified Bootloader 简称“GRUB”)是一个来自 GNU 项目的多操作系统启动程序。GRUB 是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB 可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

以下操作环境:Red Hat Enterprise Linux Server release 7.3
参考:
如何在 Linux 上拯救无法启动的 GRUB 2
在 Ubuntu 上拯救一个无法启动的 GRUB

故障重现

查看系统信息并重现故障:

[[email protected] ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:    RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 7.3 (Maipo)
Release:    7.3
Codename:    Maipo
[[email protected] ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 50G 22G 29G 43% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 88K 1.9G 1% /dev/shm
tmpfs 1.9G 9.0M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 174M 841M 18% /boot
/dev/sr0 3.6G 3.6G 0 100% /media/cdrom
/dev/mapper/rhel-home 46G 33M 46G 1% /home
tmpfs 378M 8.0K 378M 1% /run/user/0
[[email protected] grub2]# grub2-install -V
grub2-install (GRUB) 2.02~beta2
#用grub2-install --version也可以查看grub版本信息
[[email protected] ~]# ls /boot/grub2/
device.map fonts grub.cfg grubenv i386-pc locale themes
[[email protected] ~]# rm -rf /boot/grub2/grub.cfg
[[email protected] ~]# reboot

故障重现
image.png

手动引导系统

image.png

重装 grub

[[email protected] ~]# ls /boot/grub2/
device.map fonts grubenv i386-pc locale themes
[[email protected] ~]# grub2-mkconfig > /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-f0bcb62b11a44643824cde1c7f3833e4
Found initrd image: /boot/initramfs-0-rescue-f0bcb62b11a44643824cde1c7f3833e4.img
done
[[email protected] ~]# ls /boot/grub2/
device.map fonts grub.cfg grubenv i386-pc locale themes
[[email protected] ~]# reboot

重启验证修复结果

image.png
重启后能再次成功进入系统,说明修复成功!

0x04 文件恢复工具

Linux 误删文件恢复工具

  • ext4 文件系统: extundelete
  • ext3 文件系统:ext3grep

可视化文件恢复工具

0x05 去除配置文件注释行

备份文件

mv test.conf test.conf.bak

去除注释和空白行

cat test.conf.bak | grep -v -e '^#' -e '^ *#' | sed '/^$/d'

0x06 Linux history 操作

隐藏终端 history 记录

执行以下命令后将不再记录历史命令,对当前用户有效,重启失效

echo "No History For This"

让 history 显示时间轴

export HISTTIMEFORMAT='%F %T '

清空 history

history -c
cat /dev/null > ~/.bash_history

设置永久不记录

编辑 /etc/profile,将 HISTSIZE=1000 改成 01

0x07 终端命令技巧

交互式输入

[[email protected] shell]# cat > test.txt << EOF
> 123
> 456
> EOF
[[email protected] shell]# cat test.txt
123
456

使用 !! 重用上次的命令

ls /
!!

使用 !n 重用第 n 条命令

使用 history 查看命令编号

[[email protected] /]# history
    1  cat ~/.bash_history
    2  cat ~/.bash_profile
    3  cat ~/.bash_logout
    4  clear
    5  ls
    6  pwd
[[email protected] /]# !5
ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

使用 !$ 重用上次命令中的参数

mkdir Test/
cd !$

使用 $? 获取上一个命令的执行结果

$? 结果为 0 表示 ✅

systemctl status httpd
echo $?

重新运行最后一个终端命令

使用 sudo 运行最后一个命令

sudo !!

切换文件路径的快捷方式

命令 说明
cd ../ 上移一个目录
cd ~ 移动到用户的主目录
cd / 移动到根目录
cd - 移动到用户的主目录
cd 移动到用户的主目录

将终端会话记录为文件

有时您可能希望将所有终端输出存储在一个文件中,稍后您可以参考该文件,而“script”命令可以让您做到这一点。它会在您的终端会话中创建所有内容的日志文件中。终端数据以原始形式存储在日志文件中,有关计时的信息存储在另一个(可选)结构化日志文件中。
要开始录制,您只需在终端中输入以下命令:

$ script

要停止录制,输入:

$ exit

退出后,您应该在script启动的目录中找到一个名为“typescript”的文件,并将其打印到终端,您可以看到您在终端上输入的所有内容,包括它们的输出!

0x08 重命名/移动带后缀的文件

如果你想通过给它们添加后缀来快速重命名某些文件,可以使用以下语法:

$ ls
result.txt
$ cp ./result.txt{,.bak}
$ ls
result.txt result.txt.bak

结合一些正则表达式,这会非常方便,尤其是在重命名大量文件时。

0x09 Bash 常用快捷键

快捷键 作 用
Ctrl+A 把光标移动到命令行开头。如果我们输入的命令过长,则在想要把光标移动到命令行开头时使用
Ctrl+E 把光标移动到命令行结尾
Ctrl+C 强制中止当前的命令
Ctrl+L 淸屏,相当于 clear 命令
Ctrl+U 刪除或剪切光标之前的命令。假设输入了一行很长的命令,无须使用退格键一个一个字符地刪除, 使用这个快捷键会更加方便
Ctrl+K 删除或剪切光标之后的内容
Qrl+Y 粘贴 Ctrl+U 或 Ctrl+K 剪切的内容
Ctrl+R 在历史命令中搜索,按下 Ctrl+R 组合键之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索
Ctrl+D 退出当前终端
Ctrl+Z 暂停,并放入后台。这个快捷键涉及工作管理的内容,我们会在后续中详细介绍
Ctrl+S 暂停屏幕输出
Ctrl+Q 恢复屏幕输出

文章作者: Truda
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Truda !
评论
  目录