我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux的su和sudo命令有什么区别

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux的su和sudo命令有什么区别

今天小编给大家分享一下Linux的su和sudo命令有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

Linux的su和sudo命令有什么区别

Linux su 命令

su 命令的主要作用是让你可以在已登录的会话中切换到另外一个用户。换句话说,这个工具可以让你在不登出当前用户的情况下登录为另外一个用户。

su 命令经常被用于切换到超级用户或 root 用户(因为在命令行下工作,经常需要 root 权限),但是 – 正如前面所提到的 – su 命令也可以用于切换到任意非 root 用户。

如何使用 su 命令切换到 root 用户,如下:

Linux的su和sudo命令有什么区别

不带命令行参数的 su 命令

如上,su 命令要求输入的密码是 root 用户的密码。所以,一般 su 命令需要输入目标用户的密码。在输入正确的密码之后,su 命令会在终端的当前会话中打开一个子会话。

su –

还有一种方法可以切换到 root 用户:运行 su - 命令,如下:

Linux的su和sudo命令有什么区别

su – 命令

那么,su 命令与 su - 命令之间有什么区别呢?前者在切换到 root 用户之后仍然保持旧的(或者说原始用户的)环境,而后者则是创建一个新的环境(由 root 用户 ~/.bashrc 文件所设置的环境),相当于使用 root 用户正常登录(从登录屏幕登录)。

su 命令手册页很清楚地说明了这一点:

可选参数 - 可提供的环境为用户在直接登录时的环境。

因此,你会觉得使用 su - 登录更有意义。但是, su 命令也是有用的,那么大家可能会想知道它在什么时候用到。以下内容摘自 ArchLinux wiki 网站 – 关于 su 命令的好处和坏处:

  • 有的时候,对于系统管理员(root)来讲,使用其他普通用户的 Shell 账户而不是自己的 root Shell 账户更会好一些。尤其是在处理用户问题时,最有效的方法就是是:登录目标用户以便重现以及调试问题。

  • 然而,在多数情况下,当从普通用户切换到 root 用户进行操作时,如果还使用普通用户的环境变量的话,那是不可取甚至是危险的操作。因为是在无意间切换使用普通用户的环境,所以当使用 root 用户进行程序安装或系统更改时,会产生与正常使用 root 用户进行操作时不相符的结果。例如,以普通用户安装程序会给普通用户意外损坏系统或获取对某些数据的未授权访问的能力。

注意:如果你想在 su - 命令的 - 后面传递更多的参数,那么你必须使用 su -l 而不是 su -。以下是 --l 命令行选项的说明:

 -`, `-l`, `--login

提供相当于用户在直接登录时所期望的环境。

当使用 – 时,必须放在 su 命令的最后一个选项。其他选项(-l--login)无此限制。

su -c

还有一个值得一提的 su 命令行选项为:-c。该选项允许你提供在切换到目标用户之后要运行的命令。

su 命令手册页是这样说明:

 -c`, `--command COMMAND

使用 -c 选项指定由 Shell 调用的命令。

被执行的命令无法控制终端。所以,此选项不能用于执行需要控制 TTY 的交互式程序。

参考示例:

 su [target-user] -c [command-to-run]

示例中,command-to-run 将会被这样执行:

 [shell] -c [command-to-run]

示例中的 shell 类型将会被目标用户在 /etc/passwd 文件中定义的登录 shell 类型所替代。

sudo vs. su

现在,我们已经讨论了关于 su 命令的基础知识,是时候来探讨一下 sudosu 命令之间的区别了。

关于密码

两个命令的最大区别是:sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。

很明显,就安全而言,sudo 命令更好。例如,考虑到需要 root 访问权限的多用户使用的计算机。在这种情况下,使用 su 意味着需要与其他用户共享 root 用户密码,这显然不是一种好习惯。

此外,如果要撤销特定用户的超级用户/root 用户的访问权限,唯一的办法就是更改 root 密码,然后再告知所有其他用户新的 root 密码。

而使用 sudo 命令就不一样了,你可以很好的处理以上的两种情况。鉴于 sudo 命令要求输入的是其他用户自己的密码,所以,不需要共享 root 密码。同时,想要阻止特定用户访问 root 权限,只需要调整 sudoers 文件中的相应配置即可。

默认行为

两个命令之间的另外一个区别是其默认行为。sudo 命令只允许使用提升的权限运行单个命令,而 su 命令会启动一个新的 shell,同时允许使用 root 权限运行尽可能多的命令,直到明确退出登录。

因此,su 命令的默认行为是有风险的,因为用户很有可能会忘记他们正在以 root 用户身份进行工作,于是,无意中做出了一些不可恢复的更改(例如:对错误的目录运行 rm -rf 命令!)。关于为什么不鼓励以 root 用户身份进行工作的详细内容,请参考这里。

日志记录

尽管 sudo 命令是以目标用户(默认情况下是 root 用户)的身份执行命令,但是它们会使用 sudoer 所配置的用户名来记录是谁执行命令。而 su 命令是无法直接跟踪记录用户切换到 root 用户之后执行了什么操作。

灵活性

sudo 命令比 su 命令灵活很多,因为你甚至可以限制 sudo 用户可以访问哪些命令。换句话说,用户通过 sudo 命令只能访问他们工作需要的命令。而 su 命令让用户有权限做任何事情。

sudo su

大概是因为使用 su 命令或直接以 root 用户身份登录有风险,所以,一些 Linux 发行版(如 Ubuntu)默认禁用 root 用户帐户。鼓励用户在需要 root 权限时使用 sudo 命令。

然而,您还是可以成功执行 su 命令,而不用输入 root 用户的密码。运行以下命令:

 sudo su

由于你使用 sudo 运行命令,你只需要输入当前用户的密码。所以,一旦完成操作,su 命令将会以 root 用户身份运行,这意味着它不会再要求输入任何密码。

PS:如果你想在系统中启用 root 用户帐户(强烈反对,因为你可以使用 sudo 命令或 sudo su 命令),你必须手动设置 root 用户密码,可以使用以下命令:

 sudo passwd root

以上就是“Linux的su和sudo命令有什么区别”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux的su和sudo命令有什么区别

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux的su和sudo命令有什么区别

今天小编给大家分享一下Linux的su和sudo命令有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Linux su
2023-06-28

Linux中sudo、su和su -命令的区别小结

前言 在linux系统中,由于root的权限过大,一般情况都不使用它。只有在一些特殊情况下才采用登录root执行管理任务,一般情况下临时使用root权限多采用su和sudo命令。 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户b
2022-06-04

su、sudo、sudo su、sudo -i有什么区别

这篇文章主要介绍了su、sudo、sudo su、sudo -i有什么区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇su、sudo、sudo su、sudo -i有什么区别文章都会有所收获,下面我们一起来看
2023-06-27

linux中su与sudo命令的区别是什么

这篇文章将为大家详细讲解有关linux中su与sudo命令的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一. 使用 su 命令临时切换用户身份1、su 的适用条件和威力  su命
2023-06-13

Linux的su、sudo、sudo su、sudo -i命令怎么用

这篇文章主要介绍了Linux的su、sudo、sudo su、sudo -i命令怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux的su、sudo、sudo su、sudo -i命令怎么用文章都会有
2023-06-27

linux中su与su -命令区别有什么用

小编给大家分享一下linux中su与su -命令区别有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux下使用su切换用户,只是用户发生变化,当前的操
2023-06-28

面试必问Linux 命令su和sudo的区别解析

目录1. 准备工作2. su 命令介绍及主要用法2.1 - 参数2.2 切换到指定用户2.3 -c 参数3. sudo 命令介绍及主要用法3.1 主要用法3.2 sudo 工作原理3.3 思考4. 二者的差异对比之前一直对 su 和 sud
2022-07-26

linux中sudo和su有哪些区别

本篇内容介绍了“linux中sudo和su有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!区别:1、sudo是以root用户方式执行
2023-06-30

Linux系统中su和sudo命令的用法

这篇文章主要介绍“Linux系统中su和sudo命令的用法”,在日常操作中,相信很多人在Linux系统中su和sudo命令的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统中su和sudo命令
2023-06-12

linux中su与sudu命令的区别

这篇文章主要介绍“linux中su与sudu命令的区别”,在日常操作中,相信很多人在linux中su与sudu命令的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中su与sudu命令的区别”的疑
2023-06-05

Linux的su命令有什么用

这篇文章主要介绍“Linux的su命令有什么用”,在日常操作中,相信很多人在Linux的su命令有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux的su命令有什么用”的疑惑有所帮助!接下来,请跟
2023-06-28

Linux开发中sudo与su之间的区别是什么

Linux开发中sudo与su之间的区别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在Linux开发中我们一般都是以普通用户就行工作,有时会因为个别原因
2023-06-28

Linux的chattr命令和chgrp命令有什么区别

本篇内容主要讲解“Linux的chattr命令和chgrp命令有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux的chattr命令和chgrp命令有什么区别”吧!Linux ch
2023-06-16

linux中su命令有什么用

这篇文章将为大家详细讲解有关linux中su命令有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。原问:linux中,我以root登录,和以其他用户登录然后使用su命令切换至root用户,有什么不一样
2023-06-13

Linux使用su命令的误区是什么

今天小编给大家分享一下Linux使用su命令的误区是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。su指令很多朋友在使用
2023-06-28

linux中cat、more和less命令有什么区别

cat是concatenate的缩写,它用于将文件内容输出到标准输出设备或者将多个文件合并成一个文件。它不支持滚动浏览和搜索文件内容。more命令用于逐页浏览文件内容,只能向前滚动,不支持向后滚动。可以使用空格键向下翻页,按q键退出浏览。
2023-10-24

Linux中install命令和cp命令的区别是什么

这篇文章给大家介绍Linux中install命令和cp命令的区别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。它们之间的区别主要如下:1、最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件,而ins
2023-06-12

Linux的systemctl、service与chkconfig命令有什么区别

本篇内容介绍了“Linux的systemctl、service与chkconfig命令有什么区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
2023-01-31

MySQL TRUNCATE 和 DELETE 命令有什么区别?

众所周知,TRUNCATE 将删除所有行,而不从数据库中删除表的结构。可以借助 DELETE 命令完成相同的工作,从表中删除所有行。但这两个命令之间的 PRIMARY KEY AUTO_INCRMENT 重新初始化存在显着差异。假设一列定义
2023-10-22

编程热搜

目录