linux 命令:su 详解
su 的功能是使用替代用户和组ID运行命令。
用法
su [options] [-] [user [argument...]]
在未指定用户的情况下调用时,su 默认以 root 身份运行交互式 shell。当用户被指定时,可以提供额外的参数,在这种情况下它们被传递给 shell。为了向后兼容,su 默认不改变当前目录,只设置环境变量 HOME 和 SHELL(如果目标用户不是 root,则加上 USER 和 LOGNAME)。建议始终使用 --login 选项(而不是其快捷方式 -)以避免混合环境引起的副作用。
选项
-c,--command=command
将 command 传给shell。
-f,--fast
仅在 csh 和 tcsh 生效,shell 不读取启动文件。
-g,--group=group
指定主要的组,此选项仅对 root 用户可用。
-G,--supp-group=group
指定一个补充组。此选项仅对 root 用户可用。如果选项 --group 未指定,则第一 个指定的补充组也用作主要组。
-,-l,--login
将 shell 作为登录 shell 启动,其环境类似于真实登录:
① 清除除 TERM 和 --whitelist-environment 指定的变量之外的所有环境变量
② 初始化环境变量 HOME、SHELL、USER、LOGNAME 和 PATH
③ 切换到目标用户的家目录
④ 将 shell 的 argv[0] 设置为“-”以使 shell 成为登录 shell
-m,-p,--preserve-environment
保留整个环境,即不设置 HOME、SHELL、USER 或 LOGNAME。如果指定了选 项 --login,则忽略此选项。
-P,--pty
为会话创建伪终端。独立终端提供更好的安全性,因为用户不与原始会话共享终 端。这允许避免 TIOCSTI ioctl 终端注入和针对终端文件描述符的另一种安全攻 击。所有会话也可以移动到后台(例如,“su --pty -username -c application &")。 如果启用了伪终端,那么 su 命令将作为会话之间的代理(复制 stdin 和 stdout)。此功能主要用于交互式会话。如果标准输入不是终端,而是例如管道 (echo "date" | su --pty),那么伪终端的 ECHO 标志将被禁用以避免混乱 的输出。
-s,--shell=shell
运行指定的 shell 而不是默认的。根据以下规则依次选择要运行的 shell:
① 使用 --shell 指定的 shell
② 使用环境变量 SHELL 指定的 shell,如果使用了 --preserve-environment 选项
③ 目标用户的 passwd 信息中的 shell
④ /bin/sh
如果目标用户有一个受限的 shell(即没有在 /etc/shells 中列出),除非调用用户 是 root,否则 --shell 选项和 SHELL 环境变量将被忽略。
--session-command=command
类似 -c 但是不创建新的会话(不建议使用)。
-w,--whitelist-environment=list
清除 --login 的环境时,不要重置逗号分隔列表中指定的环境变量。环境变量 HOME、SHELL、USER、LOGNAME 和 PATH 的白名单将被忽略。
-V,--version
展示版本信息后退出。
-h,--help
展示帮助信息后退出。
信号
在接收到 SIGINT、SIGQUIT 或 SIGTERM 后,su 终止其子进程,然后用接收到的信 号终止自身。子进程被 SIGTERM 终止,在尝试失败并延迟 2 秒后子进程被 SIGKILL 杀死。
配置文件
su 读取 /etc/default/su 和 /etc/login.defs 作为配置文件。下边是和 su 有关的配置参 数:
FAIL_DELAY(数字)
延迟的秒数,以避免认证失败。这个参数值必须是非负整数。
ENV_PATH(字符串)
给一个常规用户定义环境变量 PATH,默认值是 /usr/local/bin:/bin:/usr/bin。
ENV_ROOTPATH(字符串)
ENV_SUPATH(字符串)
给 root 用户定义环境变量 PATH,ENV_SUPATH 优先。默认值是 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin。
ALWAYS_SET_PATH(布尔值)
如果设置成 yes 且没有指定 --login 和 --preserve-environment,su 初始化 PATH。
在 /bin 和 /sbin 合并到 /usr 的系统上,环境变量 PATH 可能不同,该变量还受 --login 命令行选项和 PAM 系统设置(例如 pam_env)的影响。
退出状态
su 通常返回它执行的命令的退出状态。如果命令被信号杀死,则 su 返回信号的编号加 上 128 的值。
su 自身产生的退出状态:
1 执行请求的命令之前的一般错误
126 请求的命令无法执行
127 请求的命令找不到
相关文件
/etc/pam.d/su 默认 PAM 配置文件
/etc/pam.d/su-l 指定 --login 时的 PAM 配置文件
/etc/default/su 命令指定的 logindef 配置文件
/etc/login.defs 全局 logindef 配置文件
linux 命令:su 详解相关推荐
- Linux命令-ls详解
Linux命令-ls详解(适合小白用户参考) 1.ls 不加任何参数,表示查询当前目录下的文件/文件夹 小提示:上面的白色文字表示普通文件,蓝色文字表示目录 2.ls 后面 ...
- 面试官都在问 | Linux命令mpstat详解
面试官都在问 | Linux命令mpstat详解 1. mpstat的基本用法 mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询 ...
- linux 命令 curl 详解
一.curl 介绍 curl是一个命令行访问URL的计算机逻辑语言的工具,发出网络请求,然后得到数据并提取出,显示在标准输出stdout上面; 可以用它来构造http request报文,curl(C ...
- linux命令 正则表达式,详解Linux命令中的正则表达式
详解Linux命令中的正则表达式 Mark Do 2017年9月19日 暂无评论 阅读 981 次 命令中的正则表达式 如果要在命令输出或文本中筛选内容时使用模糊查找,就需要使用正则表达式.正则表达式 ...
- LINUX命令大全详解备忘录
文件目录操作命令 ls命令 cd命令 pwd命令 mkdir命令 rm 命令 rmdir 命令 mv命令 cp 命令 touch 命令 cat 命令 nl命令 more命令 less 命令 head ...
- Linux命令大全详解,让我们轻松入门学习Linux!
1.最基本常用命令 序号 命令 对应英文 作用 01 ls list 查看当前文件夹下的内容 02 pwd print wrok directory 查看当前所在文件夹 03 cd [目录名] cha ...
- linux命令历史详解
概念:顾名思义,我们在linux终端输过的命令,系统都会将他们加载到内存中,以便我们快速调用命令.另外,Bash拥有自动记录命令历史的功能,用户所执行的命令会在注销时自动记录到自己的家目录下的.bas ...
- linux命令——ll详解
一.ll命令 ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名. Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便. 如果要使用此命令,可以作如下修改: ...
- Linux命令lsscsi详解
@ 一.什么是scsi 二.常见硬盘接口 1. IDE接口的硬盘 2. SCSI接口硬盘 3. SATA接口类型 三. lsscsi命令 1. lsscsi 命令安装 2. lsscsi命令英文手册 ...
- linux命令ps详解
原文地址:http://apps.hi.baidu.com/share/detail/32573968 名称:ps 使用权限:所有使用者 使用方式:ps [options] [--help] 说明:显 ...
最新文章
- java继承中构造方法_java之继承中构造方法总结(文字版)
- 概率dp——处理分母为0的情况hdu3853
- ROS探索总结(五)——创建简单的机器人模型smartcar
- 数字游戏(水博客ing / csp-J T1 / luogu 5660)
- 现代软件工程讲义 个人项目和结对项目练习 四则运算
- Kubernetes三周年,这仅仅是伟大征途的开始
- 高职高考全国计算机证书查询,2017年广东3+证书(高职高考)录取结果查询入口:附广东3+证书(高...
- 放弃深度学习?我承认是因为线性代数
- 138. Copy List with Random Pointer
- 深度 | 从各种注意力机制窥探深度学习在NLP中的神威
- 1.数独游戏(生成题目解唯一)
- 计算机审计中级题库,中级审计师用什么题库练习呢
- 华为测试岗实习生面试回顾
- 淘客基地教你如何推广淘客小程序
- python统计文章中高频词汇并生成词云
- 2020 数据科学平台领域最具商业合作价值企业盘点
- 高德地图JS-API开发—测距
- deepin 蓝牙适配器 安装
- 大数据项目(BP神经网络)
- CorelDRAW2022最新版本号V24.0.0.301订阅版
热门文章
- 职场:大学生情侣搭档求职难
- pr-流程、界面、操作流程1
- 史上最全最新前端面试题(不定期更新,有问题欢迎评论区对线)
- [main] 32-bit servers don't have journaling enabled by default. Please use --journal if you want dur
- 2018 天梯赛及蓝桥杯比赛感想
- 计算机无法连接网络错误651,网络连接错误651是什么原因
- linux-ubuntu常用命令(深圳文鹏)
- 【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构
- 家长叫我别天天我在房间没事多看看新闻,我说我马上写个爬虫爬新闻看!!!
- 抢手机型ROOT测评 ROOT大师成功率达99%