有没有与“!!”等效的 BSD 语言?

有没有与“!!”等效的 BSD 语言?

我经常发现自己发出了没有适当提升权限的命令。

在 Ubuntu 上我可以使用

sudo !!

这将以 sudo 权限发出相同的命令。OpenBSD 上有等效命令吗?

编辑:我应该更具体地说明 OpenBSD 的版本。我使用的是 OpenBSD 4.8,其中似乎默认安装了 sudo。我已经创建了 root 以外的用户,并编辑了我的 sudoers 文件以允许该用户使用 sudo。

我的问题是,是否已经有“!!”的内置快捷方式来使用上一个命令。

答案1

sudo是一个独立的软件包,其开发时间至少早于 Ubuntu 或 OpenBSD 十年。

我建议你使用 OpenBSD 的 pkg_add 来将它安装到你的系统上,但是 OpenBSD 自己的常见问题解答安装新包有一个使用的示例sudo,因此它应该已经安装好了。

可以!!单独工作吗(即没有sudo)?如果不行,你可能被设置为使用与 Ubuntu 不同的 shell。

答案2

只是为了清楚所有其他答案,!!这是 shell 历史机制的一部分。我认为问题不在于 sudo,而在于你的 shell,或者更具体地说,当你是 root 时,你的 shell。

我已经很久没有玩过 BSD 了,但它们更倾向于“传统”的 UNIX,这意味着它们仍然使用真正的 Bourne shell(读作:不像 bash 那样功能齐全)作为 root 的 shell。在这种情况下,“真正的”Bourne shell 意味着没有历史机制。这是出于系统恢复的原因。(*)

当你以root身份登录后,你可以执行一个带有历史记录的shell,无论执行什么操作,都exec /bin/bash可以exec /bin/tcsh

以前的老办法是拥有一个 root equiv 帐户,通常称为“toor”,它有一个 tcsh 或 bash 登录 shell、相同的主目录和 uid 0。你不会 sudo 到 root,你会sudo toor,然后进入 bash。我不确定新的热点是什么,也许

(*) 原因是,root 的 shell 是 /sbin/sh,并且是静态链接的。这意味着它具有最少的依赖项。如果您的 shell 是 /bin/bash 并且对 /usr 有库依赖,而现在 /usr 已 gorked,则您没有 shell。如果您的 shell 是 /sbin/sh,那么如果至少 /sbin 是可挂载的,您就可以做一些工作。

答案3

这个网站应该对你有帮助:http://linux-bsd-sharing.blogspot.com/2009/03/howto-using-sudo-on-freebsd.html

此外,在 BSD 上,管理任务通常由 root 用户帐户直接处理。在 Ubuntu 上,root 管理员帐户被禁用,所有管理任务都通过用户帐户完成,并由 sudo 程序验证。

当您安装 BSD 时,它应该会询问您希望 root 密码是什么,您应该能够使用您指定的密码登录到 root。如果在 Gnome(或您用作桌面的任何系统)中禁用了本地 root 登录,那么您可以在终端中使用命令“su -”以 root 身份登录,它会询问您的 root 密码。一旦您以 root 身份登录,您就可以做任何您想做的事情,因为该帐户拥有所有权限。

出于安全原因,通常不建议以 root 身份登录并以此方式运行所有程序。以 root 身份运行的任何程序都具有 root 权限。这意味着,如果您运行旨在删除硬盘上所有内容的程序,则该程序有权这样做。这就是为什么您在以 root 身份登录时应始终小心谨慎,只需登录并执行您需要的操作。完成后,为了安全起见,请返回您的用户帐户。

答案4

OpenBSD 在基础系统中内置了自己的实现,因此如果您的用户在文件中/etc/sudoers,那么问题可能在于您的 shell 可能是默认的 Bourne sh,它不提供您可能在 Ubuntu 中使用的相同功能。

我相信您可以使用命令安装 bash pkg_add -r bash,然后使用它进行设置chsh -s /usr/local/bin/bash (我相信这是正确的路径,我更熟悉 FreeBSD,但我认为两者的端口/包系统相似)。

相关内容