sudo、su、visudo、chroot和gksu之间有什么区别?

sudosuvisudochrootgksu之间有什么区别?

4链接1链接2链接3 - Evandro Silva
关于sudo的详细内容请参考:http://askubuntu.com/questions/135428/what-are-the-benefits-of-sudo-over-su - david6
3个回答

sudo:

Sudo(超级用户执行)允许系统管理员授予某些用户(或用户组)以root身份运行一些(或全部)命令的权限,并记录所有命令和参数。Sudo是基于每个命令的操作。

它不是shell的替代品。

其特点包括:能够限制用户在每台主机上可以运行的命令,详细记录每个命令(提供清晰的审计跟踪,了解谁做了什么),可配置的sudo命令超时时间,以及能够在多台不同的机器上使用相同的配置文件(sudoers)。

source

visudo

visudo是一个命令行实用程序,可以安全地编辑/etc/sudoers文件。它默认使用vi编辑器的界面打开/etc/sudoers(尽管可以通过设置shell的EDITOR环境变量为其他文本编辑器来更改),防止多个同时编辑的冲突,执行合理性检查并检查语法错误。

source

SU

su命令,也被称为替代用户、超级用户或切换用户,允许计算机操作员更改与正在运行的虚拟控制台关联的当前用户账户。

默认情况下,没有任何其他命令行参数,这将提升当前用户到本地系统的超级用户。

当从命令行运行时,su会要求输入目标用户的密码,如果验证成功,则授予操作员访问该账户以及该账户被允许访问的文件和目录的权限。

此外,还可以切换到另一个非超级用户。

source

root

root是Linux或其他类Unix操作系统上默认具有对所有命令和文件访问权限的用户名或账户。它也被称为根账户、超级用户。

单词root在其他术语中还有几个相关的意义。

其中之一是根目录,它是系统中的顶级目录。也就是说,它是包括所有其他目录(包括其子目录)和文件所在的目录。根目录由斜杠(/)表示。
另一个是“/root”(读作斜杠根),这是root用户的主目录。
此外,它还可以指代具有完全权限的系统管理员root用户。 source chroot
chroot是一种操作,它改变了当前运行进程及其子进程的虚拟根目录。例如,如果你chroot /mnt/chroot-test,那么目录/mnt/chroot-test将成为你的虚拟根目录,你可以通过/来引用它。 source chroot的用途
以下是chroot的一些可能用途:
1. 隔离不安全和不稳定的应用程序 2. 在64位系统上运行32位应用程序 3. 在生产系统上安装新软件包之前进行测试 4. 在更现代的Ubuntu版本上运行旧版本的应用程序 5. 构建新软件包,允许对安装的依赖软件包进行精细控制 有关chroot的来源和更多信息

1几乎令人困惑的是,在Ubuntu系统上,visudo使用nano编辑器。我找到了一个简单的记忆方法来区分它们:'su'表示切换用户(切换到root用户,也可以用于切换到其他用户),'sudo'表示切换到root用户并执行操作,而chroot表示'change root'。虽然不完全准确,但足够记住了。 - Journeyman Geek
1@JourneymanGeek 一个更准确且同样简单的将su助记词扩展到sudo的方法是说sudo代表"Switched User DO"(即以切换用户的身份执行)或者"SuperUser DO"(即以超级用户的身份执行)。这样一来,sudoers就变得更加优雅地关联起来(即"Switched User DOERS"而不仅仅是"(Switch User and DO)ers")。之所以这些变体更准确,是因为sudo允许某人以替代用户的身份执行操作,但并不一定让他们在一般情况下成为该替代用户(取决于/etc/sudoers文件的内容)。 - Eliah Kagan
@maythux:这只是chroot的一个意思。(不要只看维基百科。)更常见的意思是在Unix/Linux中运行的安全(且受限制)的子系统,只允许使用一小组可执行文件(或服务)。 - david6

  • chroot 是一种进入文件夹并“伪装”该文件夹为/的方法,以便在其中运行的任何程序都可以正常执行。这样,您可以通过将非启动的Ubuntu安装挂载到/之外的其他位置,并使用/bin/bash(安装内部的那个)来获取终端提示符,从而在非启动的Ubuntu安装上运行可执行文件。

  • sudo - 允许特定帐户以root或其他用户身份验证运行程序。某些程序可能不需要密码,如sudoers文件中定义的那样。请求是否被允许取决于运行sudo的用户(和组)以及要运行的命令,如sudoers中所定义。

  • su - 也是一种提升权限的方式,但与sudo有所不同,它执行完整的交互式登录作为root(或其他用户),并提供一个bash提示符,除非使用参数指定其他方式。它使用目标用户的凭据进行身份验证。

  • visudo - 编辑sudoers文件。它使用一个特殊的可执行文件来检查文件的语法,以确保您不会因为损坏的sudoers文件而被锁定在sudo之外。如果您尝试保存无效的配置,它将阻止您,并将您返回到编辑器中进行修复。

  • gksudogksu与sudo相同,只是它是图形化的,并重新编写一些路径,以便图形程序不会在用户配置文件上引起权限问题,特别是~/.Xauthority


1确切来说,susudo允许以另一个用户的身份执行进程,不一定是root用户。su始终可以用于切换到任何其他用户(通过该用户的凭据进行验证)。而sudo可以特别配置以允许特定用户在特定用户环境中执行特定程序。然而,通常情况下,两者都用于获取root权限。 - Paul Hänsch

SU连接您作为root用户。
终端会在本次会话中保持为root用户。
使用sudo(超级用户执行)时,您可以以普通用户身份连接并以root用户执行操作。