Linux中的su命令(切换用户)

2023-10-22

The su(替代或切换用户的缩写)实用程序允许您使用其他用户(默认为 root 用户)的权限运行命令。

Using su是在当前登录会话中切换到管理帐户的最简单方法。当不允许 root 用户通过以下方式登录系统时,这尤其方便ssh或使用 GUI 显示管理器。

在本教程中,我们将解释如何使用su命令。

如何使用su命令#

的一般语法为su命令如下:

su [OPTIONS] [USER [ARGUMENT...]]

当不带任何选项调用时,默认行为su是以 root 身份运行交互式 shell:

su

系统将提示您输入 root 密码,如果通过身份验证,运行该命令的用户将暂时成为 root。

会话外壳(SHELL)和家(HOME) 环境变量从替代用户的设置/etc/密码条目,并且当前目录未更改。

要确认用户已更改,请使用whoami命令:

whoami

该命令将打印运行当前 shell 会话的用户的名称:

root

调用时最常用的选项su is - (-l, --login)。这使得该 shell 成为一个环境与真实登录非常相似的登录 shell,并更改了当前目录 :

su -

如果您想运行另一个 shell 而不是中定义的 shellpasswd文件,使用-s, --shell选项。例如,切换到 root 并运行zshshell,你可以输入:

su -s /usr/bin/zsh

为了保护整个环境(HOME, SHELL, USER, and LOGNAME) 的调用用户,使用以下命令调用该命令-p, --preserve-environment option.

su -p

当。。。的时候-使用选项,-p被忽略。

如果您想以替代用户身份运行命令而不启动交互式 shell,请使用-c, --command选项。例如,要调用ps作为 root 命令,您可以输入:

su -c ps

要切换到另一个用户帐户,请将用户名作为参数传递给su。例如切换到用户tyrion你可以输入:

su tyrion

须藤 vs 苏#

在某些 Linux 发行版(例如 Ubuntu)上,根用户帐户出于安全原因默认禁用。这意味着没有为root设置密码,并且您不能使用su切换到根目录。

更改为 root 的一种选择是在前面添加su命令与sudo并输入当前登录的用户密码:

sudo su -

The sudo命令允许您以其他用户身份运行程序,默认情况下为 root 用户。

如果用户被授予sudo评估,将su命令以 root 身份调用。跑步sudo su -然后输入用户密码与运行效果相同su -并输入 root 密码。

当与-i选项,sudo使用 root 用户环境运行交互式登录 shell:

sudo -i

sudo -i和跑步基本一样su -.

使用的优点sudo over su优点是 root 密码不需要在多个管理用户帐户之间共享。

With sudo您还可以允许用户仅以 root 权限运行特定程序。

结论#

su是一个命令行实用程序,允许您暂时成为另一个用户并使用替代用户执行命令。

如果您有任何问题或反馈,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中的su命令(切换用户) 的相关文章

  • 如何检查 Java 程序的输入/输出流是否连接到终端?

    我希望 Java 程序根据其用途具有不同的默认设置 详细程度 可能支持彩色输出 在 C 语言中 有一个 isatty 函数 如果文件描述符连接到终端 则该函数将返回 1 否则返回 0 Java 中有类似的东西吗 我没有在 JavaDoc 中
  • 在 Ruby 脚本中运行命令行命令

    有没有办法通过 Ruby 运行命令行命令 我正在尝试创建一个小型 Rub y 程序 该程序可以通过 screen rcsz 等命令行程序拨出和接收 发送 如果我能将所有这些与 Ruby MySQL 后端等 结合起来 那就太好了 是的 有以下
  • 无法跟踪 sudo;报告有效 uid 不为零

    command bigxu bigxu ThinkPad T410 work lean sudo ls content shell pak leanote libgcrypt so 11 libnotify so 4 MACOSX reso
  • PYspark SparkContext 错误“调用 None.org.apache.spark.api.java.JavaSparkContext 时发生错误。”

    我知道这个问题之前已经发布过 但我尝试实施解决方案 但没有一个对我有用 我为 Jupyter Notebook 安装了 Spark 使用本教程 https medium com GalarnykMichael install spark o
  • 从 bash 在默认编辑器中打开文件

    如何使用 bash 打开使用默认 GUI 编辑器生成的脚本生成的文件 在 OS X 上有命令open 但据我所知 linux 上不存在 什么是好的跨平台替代方案 执行open somefile ext在 OS X 上 效果与我在 Finde
  • 如何更改Linux中每个用户的默认最大进程数

    我在更改 Linux 中用户的默认进程数时遇到了问题 我尝试过编辑 etc security limits conf文件并添加以下行 malintha hard nproc 10000 保存后我尝试在终端上执行以下命令 ulimit u 它
  • “rails server”命令在终端中不起作用

    我对 Rails 还很陌生 正在尝试设置一个非常简单的测试站点 我使用以下命令创建了新的 Rails 应用程序目录rails new命令 但无法设置服务器以在浏览器中查看页面 以下是我尝试时收到的消息rails server MacBook
  • 如何关闭 iTerm2 中的“滚动历史记录”

    我已经安装了新的 iTerm 2 它在顶部的黄色栏中询问我是否要启用鼠标功能 不幸的是 我已经不记得确切的句子了 一不小心我就同意了 现在 当我在 iTerm 中使用鼠标上的滚轮时 它不再向上滚动 而是触发命令历史记录 就像我按下了向上光标
  • pty 和管道之间的区别

    我一直在从本页的示例中阅读有关 ptys 的内容 http www roucha fr tech corner pty pdip html http www rkoucha fr tech corner pty pdip html 我有两个
  • 编写脚本以使用预定义密码创建多个用户

    所以我想制作一个从运行的 users txt 创建用户的脚本 useradd m s bin false users in the users txt 并填写passwords txt中的密码两次 以确认密码 这是脚本 bin bash A
  • stripe 登录 zsh:未找到命令:stripe

    我正在跟进条纹文档 https stripe com docs stripe cli install当我去stripe login在步骤 2 中 我收到以下错误 zsh 找不到命令 条带 我已经执行了步骤 1 安装 stripe CLI 为
  • VS Code 刷新集成终端环境变量,无需重新启动/注销

    如果您在 Windows 上添加 更改某些环境变量 例如 PATH 即使重新启动 VS Code 后 它也不会在 VS Code 集成终端中可用 但是 如果您从 Windows 命令提示符 Powershell 打开该终端 它将具有这些新的
  • 我安装了 nvm n,现在我不断收到“dyld:错误的外部重定位长度”

    我使用 sudo 安装了 nvm n 并决定通过在我的系统上下载多个版本的节点来测试它 当我尝试在节点版本之间切换时 我不断收到 权限被拒绝 的消息 所以我决定也使用 sudo 命令来切换版本 就在那时 一切都崩溃了 我不断得到 dyld
  • 如何在终端中显示图像?

    是否有任何类型的实用程序可以用来将图像转换为 ASCII 然后在我的终端中打印 我寻找过 但似乎没有找到 一个名为cacaview http linux die net man 1 cacaview允许您执行此操作 它是交互式的 允许您平移
  • android中无法绕过的Root检测方法

    我知道在 root 设备上运行拥有敏感信息的应用程序根本不安全 因此 开发人员通常在这种情况下进行 root 检测 如果发现设备已 root 则该应用程序将不会安装 一切都好 开发者在root检测中使用的主要技术是检查superuser a
  • aria2c - 有什么办法只保留失败下载的列表吗?

    我在用aria2c下载以文本文件形式组织的相当大的 url 列表 6000 基于此gist https gist github com jonbakerfish 0f7877c050b648169e0958ea2e2c6aca 我使用以下脚
  • 我可以在 chrome devtools 中执行 nodejs javascript 脚本吗?

    是否可以使用Chrome 开发工具执行终端命令node myfile js 所以chrome控制台会输出所有console log来自我的代码 我有一些terminal插件安装在我的 IDE 中 当我想在我的文件上运行此命令时 我使用一些键
  • 使用单个 shell 脚本运行 React 和 Flask

    我构建了一个使用 ReactJS 作为前端和 Flask 作为中间件的应用程序 我可以使用以下命令序列来执行它 npm start cd Equation Solver python m flask run 执行第一个命令后 我必须打开另一
  • Emacs 退出终端

    在 Emacs 中运行终端模式时使用M x term using C x C o我无法切换到另一个缓冲区来继续处理事情 我知道这是可能的M x shell但使用此命令时 shell 的某些方面不起作用 less more 手册页等 我想知道
  • 我忘记了分号“;”在 MySQL 终端查询中。我该如何退出?

    有时我忘记用分号 结束 SQL 查询 在我的 Mac 终端中 发生这种情况时 终端会设置一个 gt 一开始我无法退出此命令或运行任何其他 SQL 命令 我该如何退出 你不知道mysql终端有5种不同的报价模式 我建议你回顾一下它们 http

随机推荐

  • 如何在 Bash 中将标准错误存储到变量

    在 Bash 中 您可以使用以下命令将命令的标准错误输出存储到变量中 2 gt 1 运营商和 命令替换语法 这里 2 gt 将错误消息重定向到 1 代表标准输出 在 bash shell 的情况下 它作为标准输出设备 For example
  • C 程序求三个数字中最大的

    在本文中 我们将探讨计算机编程中一个常见且简单的问题 找到三个给定数字中最大的数字 我们用来解决这个问题的语言是 C 一种通用的过程计算机编程语言 C 提供了有效映射到典型机器指令所需的结构 换句话说 它是一种流行的系统编程语言 尽管它也用
  • 如何使用 DNF 将 Fedora 23 升级到 Fedora 24

    软呢帽24最终版本已发布于2016 年 6 月 21 日 Fedora 工作站用户可能需要升级工作站才能使用最新版本 本教程将帮助您将 Fedora 23 升级到 Fedora 24 工作站使用命令行实用程序 DNF 这是升级 Fedora
  • RDBMS 与 NoSQL:为您的项目选择正确的数据库

    为项目选择正确的数据库可能是一个关键决策 会极大地影响项目的成功 最流行的两类数据库是关系数据库管理系统 RDBMS 和 NoSQL 数据库 每种都有其优点和缺点 选择最终取决于项目的具体要求 本文将对 RDBMS 和 NoSQL 数据库进
  • 如何在 Linux 上设置 LogMeIn (Hamachi) VPN

    Hamachi 用于使用或设置 VPN 并通过 VPN 网络连接系统 这提供了一种快速 更简单的方法来创建 VPN 网络和连接系统 您可以在 logmein com 上创建免费帐户并创建网络 您可以使用免费帐户在每个网络中添加最多 5 个系
  • Java 技巧:将字符串转换为日期

    在 Java 编程领域 日期和时间操作是一项基本技能 但是 日期通常作为字符串传递 这需要将这些字符串转换为 Date 对象以进行有效操作 在本综合指南中 我们将详细介绍在 Java 中将字符串转换为日期的过程 了解基础知识 表示日期的字符
  • UFW:通用防火墙规则和命令

    防火墙是一种安全系统 它根据预定义的安全规则监视和控制传入和传出的网络流量 它是任何安全网络的重要组成部分 无论是个人计算机还是大型企业网络 Uncomplicated Firewall UFW 是一个用户友好的命令行界面 用于管理 ipt
  • 编辑 crontab 文件的要点

    在系统管理领域 有一种强大的工具可以让您高效地安排任务 crontab 使用 crontab 您可以在指定的日期和时间执行脚本和命令 这使其成为基于 Unix 的系统中非常有用的实用程序 但是 要充分利用其潜力 您需要了解编辑 cronta
  • 如何在 Linux 中创建交换文件

    交换文件是 Linux 操作系统的重要组件 它通过提供额外的虚拟内存来帮助提高性能 它是在系统物理内存 RAM 填满时保留用作虚拟内存的磁盘空间 在 Linux 中创建交换文件有助于防止系统崩溃和不稳定 在本文中 我们将逐步讨论如何在 Li
  • 如何在 phpMyAdmin 中添加多个主机

    phpMyAdmin 默认配置仅允许连接到本地 MySQL 服务器 但是如果我们运行多个数据库服务器 那么如果我们可以从单个 phpMyAdmin 安装中选择需要连接的服务器 那就太好了 本操作指南将帮助您在 phpMyAdmin 中添加多
  • Bash 选择(制作菜单)

    在本教程中 我们将介绍以下基础知识select在 Bash 中构建 The select构造允许您生成菜单 Bash select构造 The select构造从项目列表生成菜单 它的语法几乎与for loop select ITEM in
  • 如何在 CentOS 7 上安装和配置 Redmine

    Redmine 是最流行的开源项目管理和问题跟踪软件工具之一 它是跨平台和跨数据库的 构建在 Ruby on Rails 框架之上 Redmine包括对多个项目 wiki 问题跟踪系统 论坛 日历 电子邮件通知等的支持 在本教程中 我们将介
  • 如何在 Ubuntu 18.04 上部署 Rocket.Chat

    Rocket Chat 是一个开源团队交流平台 是自托管的 Slack 替代品 它使用 Meteor 框架开发 提供各种功能 包括帮助台聊天 文件共享 视频会议 语音消息 API 等 对于想要托管自己的聊天系统的公司和社区来说 Rocket
  • .bashrc 与 .bash_profile

    如果您在命令行上花费大量时间 您很可能想要自定义您的 shell 环境 这可能意味着创建别名 将新目录添加到 PATH 或更改 shell 提示符的外观 您可能遇到过一些教程 其中他们说将您的配置放在 bashrc bash profile
  • 如何在 CentOS 7 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 类似于Node js 的 npm or Python 的点子 Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 它用于所有现代 PHP 框架和平台 例如 Laravel
  • 如何在 CentOS 8 上安装 Apache

    Apache HTTP 服务器是世界上使用最广泛的 Web 服务器 它是一个免费 开源 跨平台的HTTP服务器 具有强大的功能 并且可以通过多种模块进行扩展 在本文中 我们将解释如何在 CentOS 8 上安装和管理 Apache Web
  • 如何在 Debian 9 上安装 CouchDB

    CouchDB 是一个开源的容错且无模式的 NoSQL 数据库 由 Apache 软件基金会维护 CouchDB 服务器将其数据存储在命名数据库中 其中包含以下文档JSON结构 每个文档由许多字段和附件组成 字段可以包括文本 数字 列表 布
  • 如何在 CentOS 7 上安装 Visual Studio Code

    视觉工作室代码是微软开发的开源跨平台代码编辑器 它有一个内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 在 CentOS 计算机上安装 Visual Studio Code 最简单且推荐的方法是启用 VS
  • 如何在 Ubuntu 18.04 上安装 Mono

    Mono 是一个用于开发和运行基于 ECMA ISO 标准的跨平台应用程序的平台 它是 Microsoft NET 框架的免费开源实现 本教程介绍如何在 Ubuntu 18 04 上安装 Mono 先决条件 这些说明假定您以 root 身份
  • Linux中的su命令(切换用户)

    The su 替代或切换用户的缩写 实用程序允许您使用其他用户 默认为 root 用户 的权限运行命令 Using su是在当前登录会话中切换到管理帐户的最简单方法 当不允许 root 用户通过以下方式登录系统时 这尤其方便ssh或使用 G