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 等效帳戶,通常稱為“toor”,它有一個 tcsh 或 bash 登入 shell、相同的主目錄和 uid 0 sudo toor。中。我不確定新的熱點是什麼,也許

(*) 原因是,root 的 shell 是 /sbin/sh,而且是靜態連結的。這意味著它具有最少數量的依賴項。如果您的 shell 是 /bin/bash 並且對 /usr 具有庫依賴關係,並且現在 /usr 已被佔用,那麼您就沒有 shell。如果您的 shell 是 /sbin/sh,那麼如果至少 /sbin 是可安裝的,您就可以做一些工作。

答案3

這個網站應該對你有一些幫助:http://linux-bsd-sharing.blogspot.com/2009/03/howto-using-sudo-on-freebsd.html

此外,在 BSD 上,管理任務通常直接由 root 使用者帳號處理。在 Ubuntu 上,根管理員帳號被停用,所有管理任務都透過使用者帳號完成,並由 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,但我認為兩者的 ports/package 系統是相似的)。

相關內容