我经常发现自己发出了没有适当提升权限的命令。
在 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,但我认为两者的端口/包系统相似)。