00. 目录
01. 命令概述
su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。
普通用户切换到root用户,可以使用su – 或su root,但是必须输入root密码才能完成切换。root用户切换到普通用户,可以使用su username,不需要输入任何密码即可完成切换。
02. 命令格式
su [选项] [-] [USER [参数]...]
- 1
03. 常用选项
修改有效用户标识和组标识为USER的.
-, -l, --login
使得shell为可登录的shell
-c, --commmand=COMMAND
传递单个COMMAND给-c的shell.
-f, --fast
传递-f给shell(针对csh或tcsh)
-m, --preserve-environment
不重置环境变量
-p 与-m同
-s, --shell=SHELL
如果/etc/shells允许,运行SHELL.
--help 显示帮助并退出
--version
输出版本信息并退出
单一的-意味着-l.如果没有给定USER,则假定为root.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
04. 参考示例
4.1 切换到root,不切换环境
[deng@itcast ~]$ su
密码:
[root@itcast deng]#
- 1
- 2
- 3
只是切换了root身份,但Shell环境仍然是普通用户的Shell
4.2 切换到root,同时切换环境
[deng@itcast ~]$ su - root
密码:
上一次登录:六 8月 3 15:46:25 CST 2019pts/2 上
[root@itcast ~]#
- 1
- 2
- 3
- 4
用户和Shell环境一起切换成root身份
4.3 切换到指定用户
[deng@itcast ~]$ su itcast
密码:
[itcast@itcast deng]$
- 1
- 2
- 3
环境变量仍然是deng用户的。
4.4 切换到指定用户,并且改变用户环境变量
[deng@itcast ~]$ su - itcast
密码:
上一次登录:六 8月 3 15:49:14 CST 2019pts/2 上
[itcast@itcast ~]$
- 1
- 2
- 3
- 4
4.5 切换用户执行命令,执行后返回原用户
[itcast@itcast ~]$ su -c ls root
密码:
password test 公共 模板 视频 图片 文档 下载 音乐 桌面
- 1
- 2
- 3
4.6 不切换成 root,但是执行lastb命令
[itcast@itcast ~]$ su - root -c lastb
密码:
root pts/2 Sat Aug 3 15:52 - 15:52 (00:00)
root pts/1 Fri Aug 2 21:00 - 21:00 (00:00)
root pts/1 Thu Aug 1 21:27 - 21:27 (00:00)
btmp begins Thu Aug 1 21:27:11 2019
[itcast@itcast ~]$
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
4.7 变更帐号为 root 并传入 -f 参数给新执行的 shell
[itcast@itcast ~]$ su -f root
密码:
[root@itcast itcast]#
- 1
- 2
- 3
05. 附录
本文中所涉及的源码,以OpenHarmony LiteOS-M
内核为例,均可以在开源站点https://gitee.com/openharmony/kernel_liteos_m 获取。鸿蒙轻内核异常钩子模块代码主要在components\exchook
目录下。异常钩子函数的注册、解注册、异常钩子类型定义在utils\los_debug.h|.c
。
1、异常钩子函数节点结构体和异常钩子函数节点数组
在文件components\exchook\los_exchook.c
定义异常钩子的一些宏、函数节点结构体和一些全局变量函数节点数组。⑴处定义的宏设置当前系统支持的钩子函数的个数。⑵处定义的钩子函数节点结构体,每个节点除了异常钩子函数定义还有一个指向下一个节点的指针。⑶处定义的全局变量数组g_excNodes
,注册的每一个异常钩子函数都使用一个节点来维护。⑷处定义异常钩子函数节点指针数组,数组的每个元素指针指向对应类型的异常钩子节点单向链表,而最后一个元素g_excHeads[EXC_TYPE_END]
指向空闲的钩子函数节点链表。
#ifndef LOSCFG_BASE_EXC_HOOK_LIMIT
⑴ #define LOSCFG_BASE_EXC_HOOK_LIMIT 16
#endif
⑵ struct Node {
ExcHookFn excHookFn;
struct Node *next;
};
⑶ STATIC struct Node g_excNodes[LOSCFG_BASE_EXC_HOOK_LIMIT];
⑷ STATIC struct Node *g_excHeads[EXC_TYPE_END + 1]; /* EXC_TYPE_END is used for the free list. */
class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
评论记录:
回复评论: