sudo
,su
,visudo
,chroot
和gksu
之间有什么区别?sudo:
Sudo(超级用户执行)允许系统管理员授予某些用户(或用户组)以root身份运行一些(或全部)命令的权限,并记录所有命令和参数。Sudo是基于每个命令的操作。
它不是shell的替代品。
其特点包括:能够限制用户在每台主机上可以运行的命令,详细记录每个命令(提供清晰的审计跟踪,了解谁做了什么),可配置的sudo命令超时时间,以及能够在多台不同的机器上使用相同的配置文件(sudoers)。
visudo
visudo是一个命令行实用程序,可以安全地编辑/etc/sudoers
文件。它默认使用vi编辑器的界面打开/etc/sudoers
(尽管可以通过设置shell的EDITOR环境变量为其他文本编辑器来更改),防止多个同时编辑的冲突,执行合理性检查并检查语法错误。
SU
su命令,也被称为替代用户、超级用户或切换用户,允许计算机操作员更改与正在运行的虚拟控制台关联的当前用户账户。
默认情况下,没有任何其他命令行参数,这将提升当前用户到本地系统的超级用户。
当从命令行运行时,su会要求输入目标用户的密码,如果验证成功,则授予操作员访问该账户以及该账户被允许访问的文件和目录的权限。
此外,还可以切换到另一个非超级用户。
root
root是Linux或其他类Unix操作系统上默认具有对所有命令和文件访问权限的用户名或账户。它也被称为根账户、超级用户。
单词root在其他术语中还有几个相关的意义。
其中之一是根目录,它是系统中的顶级目录。也就是说,它是包括所有其他目录(包括其子目录)和文件所在的目录。根目录由斜杠(/)表示。su
助记词扩展到sudo
的方法是说sudo
代表"Switched User DO"(即以切换用户的身份执行)或者"SuperUser DO"(即以超级用户的身份执行)。这样一来,sudoers
就变得更加优雅地关联起来(即"Switched User DOERS"而不仅仅是"(Switch User and DO)ers")。之所以这些变体更准确,是因为sudo
允许某人以替代用户的身份执行操作,但并不一定让他们在一般情况下成为该替代用户(取决于/etc/sudoers
文件的内容)。 - Eliah Kaganchroot
是一种进入文件夹并“伪装”该文件夹为/
的方法,以便在其中运行的任何程序都可以正常执行。这样,您可以通过将非启动的Ubuntu安装挂载到/
之外的其他位置,并使用/bin/bash
(安装内部的那个)来获取终端提示符,从而在非启动的Ubuntu安装上运行可执行文件。
sudo
- 允许特定帐户以root或其他用户身份验证运行程序。某些程序可能不需要密码,如sudoers
文件中定义的那样。请求是否被允许取决于运行sudo
的用户(和组)以及要运行的命令,如sudoers
中所定义。
su
- 也是一种提升权限的方式,但与sudo
有所不同,它执行完整的交互式登录作为root(或其他用户),并提供一个bash提示符,除非使用参数指定其他方式。它使用目标用户的凭据进行身份验证。
visudo
- 编辑sudoers
文件。它使用一个特殊的可执行文件来检查文件的语法,以确保您不会因为损坏的sudoers
文件而被锁定在sudo
之外。如果您尝试保存无效的配置,它将阻止您,并将您返回到编辑器中进行修复。
gksudo
或gksu
与sudo相同,只是它是图形化的,并重新编写一些路径,以便图形程序不会在用户配置文件上引起权限问题,特别是~/.Xauthority
。
su
和sudo
允许以另一个用户的身份执行进程,不一定是root用户。su
始终可以用于切换到任何其他用户(通过该用户的凭据进行验证)。而sudo
可以特别配置以允许特定用户在特定用户环境中执行特定程序。然而,通常情况下,两者都用于获取root权限。 - Paul Hänsch