RHCSA
前言
RHCSA
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 | 不显示行号 |
|