Linux基础补充(sudo提权、bash缓存、alias别名、history命令历史、which、whereis、locate、vim)

x33g5p2x  于2021-09-10 转载在 Linux  
字(3.5k)|赞(0)|评价(0)|浏览(446)

su/sudo用户身份切换

su

su [-lm] [-c 命令] [username]
选项解释
-单纯使用- ,代表使用login-shell的变量文件读取方式来登录系统;若用户名没有写,则代表切换为root用户
-l与-类似,但后面需要加欲切换的用户站好,也是login-shell的方式
-m与-p一样,表示使用目前的环境变量设置,而不读取新用户的配置文件
-c仅进行一次命令,所以-c后面可以加上命令

使用su切换成root的身份为non-login shell,这种方式下很多原本的变量不会改变

login-shell:取得bash时需要完整的登录流程。
login-shell读取配置文件的顺序是:/etc/profile ~/.bash_profile ~/.bashrc /etc/bashrc
*
non-login shell:取得bash接口的方法不需要重复登录。
non-login shell会读取的配置文件为:~/.bashrc /etc/bashrc
*
/.bash_logout文件记录了当注销bash后系统再帮我做完什么操作后才离开
默认情况下,注销时bash只是帮助清掉屏幕的信息

sudo

提权命令,普通用户没有权限使用的命令可以通过sudo向root提权使用

提权的条件是root 用户提供权限给普通用户

先进入root用户下发权限(编辑sudo的配置文件)

nano /etc/sudoers

vim /etc/sudoers

在这里插入图片描述

参数代表含义:

1、用户账号:系统哪个账号可以使用sudo这个命令。默认为root用户

2、登陆的来源主机名:这个账号由哪台主机连接到本地Linux主机。默认值root可来自任何一台网络主机

3、可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人

4、可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令

ALL是关键字、代表任何身份、主机或命令

现在对redhat授权

使redhat作为root用户获取/usr/sbin/useradd,/usr/sbin/userdel权限

在这里插入图片描述

Ctrl + O保存

Ctrl + X退出

使用命令

sudo useradd user022

id user022

在这里插入图片描述

在这里插入图片描述

普通用户向root用户提权时需要验证密码

在配置文件中添加NOTPASSWD:可以跳过密码验证

在这里插入图片描述

在这里插入图片描述

  • sudo :是一种以限制配置文件中的命令为基础,在有限时间内给用户使用,并且记录到日志中的命令

sudo命令的配置在/etc/sudoers中,sudo是系统管理员用来允许某些用户以root身份运行部分、全部系统命令的程序

查看当前是哪个用户登录的shell:whoami

  • sudo的执行流程如下(默认只有root用户能使用):

1、当用户执行sudo时,便会让用户输入自己的密码来确认(root执行sudo时不需要输入密码)

2、若欲切换的身份与执行者身份相同,也不需要输入密码

3、若密码输入成功,系统会去/etc/sudoers文件中查找该用户是否有执行sudo的权限

4、若用户具有执行sudo的权限,便开始sudo后续接的命令

bash

用户接口shell:壳,命令解释器,负责解析用户输入的命令

shell是离用户最近的程序,也是计算机和用户进行交互的程序

图形界面:KDE

命令行 :bash shell

系统启动后,shell程序只有一个,但是shell进程却可以有很多,linux允许一个用户登录多次

在每个登录进程看来,当前主机只存在当前进程,以进程号识别进程,进程是程序的副本,进程是程序执行的实例

进程是有生命周期的

shell自己是外部程序,但是shell有自己的内置命令

使用man命令可查看内置命令(下方图片都是shell的内置命令)

在这里插入图片描述

在这里插入图片描述

系统为了让用户在命令行快速方便地执行命令,用一种机制来实现环境变量

变量声明:NAME=haha

变量声明地过程就是申请内存使用的过程

环境变量:定义当前用户工作环境属性的变量PATH

显示系统环境变量:echo $PATH

在这里插入图片描述

现在执行命令可在任意目录下就是因为环境变量

hash 实现缓存管理

在hash表中保存了执行过的所有路径

在这里插入图片描述

通过哈希表找到缓存直接执行

通过缓存表执行的命令他的命中次数加1

在这里插入图片描述

命令解释
-p添加哈希表
-t查看指定命令的哈希表
-d删除指定命令的哈希表
-r清空所有的哈希表

当一个命令被移动后

可以通过添加哈希表使命令生效

在这里插入图片描述

通过缓存定义了,ls命令在/root下进行匹配

没有缓存,只能通过./ls执行

通过缓存方式也可定义别名

在这里插入图片描述

在这里插入图片描述

删除指定缓存列表:hash -d chakan

清空所有缓存列表:hash -r

alias 添加指定命令别名

alias 目标命令名称(别名) = ‘需要执行的命令串本身’

设置临时别名信息设置永久生效别名信息

/etc/bashrc 对所有用户全部生效的别名信息

在这里插入图片描述

查看系统中的所有别名alias

在这里插入图片描述

比如说查看网卡信息,cat /etc/sysconfig/network-scripts/ifcfg-ens160 设置别名为net

在这里插入图片描述

alias别名是临时生效的

重启后,alias失效

永久生效设置方法

直接写到配置文件

/etc/bashrc 对所用用户生效

vim /etc/bashrc

在这里插入图片描述

此时需要重新进入bash才能生效

在这里插入图片描述

或者通过echo 追加到/etc/bashrc中

注意需要使用转义符

unalias 别名 删除指定的命令别名

临时取消

对于当前终端生效

重新bash后失效

在这里插入图片描述

history 命令历史管理

history 命令历史管理

命令历史文件为~/.bash_history

命令历史大小由环境变量HISTSIZE指定,默认1000

变量配置文件为/etc/profile

命令选项解释
-c清空整个命令历史
-d删除指定命令历史
-w将缓冲区中的命令历史保存到命令历史文件

history -c 清除缓存区历史后

但是查看~/.bash_history文件发现并没有清空

可以通过history -c 清除缓存区后 接着跟上history -w将缓冲区历史保存到历史文件中

达到清除命令历史文件的作用

关于history的使用技巧

命令解释
!n执行命令历史中第n条命令
!-n执行命令历史中倒数第n个命令
!!执行上一条命令
!KEY执行最近一次以指定KEY开头的命令
!$引用上一个命令中最后一个参数

bash提供相关参数或直接补齐功能

which 查找命令路径下的可执行文件信息

查找某个命令的完整路径

也就是说它是用来查找可执行文件的

which命令的原理是在当前登录用户的PATH环境变量记录路径中进行查找

只显示二进制文件路径

在这里插入图片描述

locate

locate进行查找时,都会以此数据库的内容为准

数据库文件/var/lib/mlocate/mlocate.db

数据库的创建默认是每天执行一次,不同的发行版不一样

手动更新数据库:直接输入updatedb命令

该命令会去读取/etc/updatedb.conf这个配置文件的设置

然后再去硬盘里面进行查找文件名的操作

最后就更新整个数据库文件

whereis

用来快速查找任何文件,是一个文件搜索命令

他和另一个文件搜索命令locate功能一样

whereis 和 locate的区别

whereis 严格来讲是从环境变量的路径中查找目标

locate则是从updatedb命令生成的数据库中查找目标

whereis在于快,但是范围有限

locate全盘文件检索,但是要定时运行updatedb更新数据库,保证内容的实时性

whereis 和 which的区别

例:whereis passwd

找到的结果就比which命令找到的内容多

因为which命令只会列出二进制文件路径

whereis命令会把所有带有passwd字样的文件路径都列举出来

文本编辑器vim

Linux系统有图形界面,可以使用vim命令

若没有图形化界面,只能使用vi

命令模式

按Esc键可回到命令模式

命令解释
dw按单词删除
u撤销当前操作
dd删除当前行
yy复制光标所在行
2yy复制光标所在行和光标下一行
p粘贴到光标下一行
cc剪切(行数cc 剪切当前行开始的第几行)
x删除光标所在位置的内容
w按单词进行移动光标
gg跳转到文档首部行首
dgg删除光标至文档首部
G跳转到文档尾部行首
$跳转行尾
^跳转到行首
j往下(后)按行移动光标
h往左按字符移动光标
k往上(前)按行移动光标
I往右按字符移动光标
H跳转到当前屏幕输出的最上面一行
L跳转到当前屏幕输出的最下面一行

插入模式

命令解释
I在光标所在行行首插入
i光标前插入内容
a在光标后插入
A在光标所在行末尾插入
s删除光标所在位置字符并插入
S删除光标所在行并插入
o在光标所在行下一行插入i在光标前插入
O在光标所在行上一行插入

末行模式

命令解释
:wq保存退出
:q退出(未修改文件内容)
:wq!强制保存退出
:q!强制退出,不保存
:set nu显示行号
:set nonu不显示行号

相关文章