修復在 Ubuntu 上 “Unable to acquire dpkg frontend lock. Are You Root?” 的錯誤
我假設你對 Linux 很陌生。
你按照網上的一些教程,告訴你要安裝某個程序或運行某個命令??赡苁桥c服務器有關的東西。
但當你運行這個命令時,你遇到了這個錯誤:
E: Could not open lock file /var/lib/dpkg/lock-frontend – open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
或者類似的錯誤:
dpkg: error: required read/write access to the dpkg database directory /var/lib/dpkg
E: Sub-process dpkg –set-selections returned an error code (2)
E: Executing dpkg failed. Are you root?
這兩個錯誤都在問你同一個問題:你是 root 嗎?而這就是這個問題的答案。成為 root。
成為 root 以避免這個錯誤
你如何 在 Ubuntu 或 Debian 中成為 root?你使用 sudo
命令。
是的,就是這樣。無論你在運行什么命令,只要在它前面加上 sudo
即可。
sudo your_command
Running command with sudo
它將要求你輸入你的用戶賬戶密碼。請記住,當你輸入密碼時,屏幕上不會顯示任何東西,這也沒關系。
你的系統(tǒng)沒有任何問題。在大多數 Linux 系統(tǒng)中,輸入密碼時不會顯示通常的星號或其他東西是一種“安全特性”。
只要輸入密碼,并在密碼后按下回車鍵即可。如果密碼輸入正確,你現在應該可以運行該命令了。
你甚至可以使用這個方便的 Linux 命令行技巧,用 sudo
運行以前的命令:
sudo !!
這很簡單,而且立即生效,除非你沒有 sudo 權限。然后,你會看到一個不同的錯誤。
看到一個 “User is not in sudoer file” 的錯誤?
Some users cannot run commands with sudo
當你 安裝 Ubuntu 時,你必須創(chuàng)建一個用戶賬戶。這個用戶被自動授予 sudo
權限,在需要時以 root 身份運行命令。
這發(fā)生在 Ubuntu 桌面上,而不是服務器上。大多數服務器發(fā)行版會有一個單獨的 root 賬戶。如果你單獨創(chuàng)建了一個普通賬戶,你就必須把這個用戶添加到 sudoer
中,以便這個普通用戶可以使用 sudo
。
在上面的截圖中,我已經創(chuàng)建了這個額外的用戶,但沒有將其添加到 sudo 組中。這意味著這里的用戶 prakash
沒有使用 sudo
命令的權限,因此系統(tǒng)抱怨 “prakash is not in sudoers file”。
該事件在哪里報告?
錯誤的 sudo
嘗試會被添加到系統(tǒng)日志中。它記錄了用戶名、虛擬終端號、運行命令的位置和運行的命令。
Incorrect sudo attempts are logged into the system
這些日志的位置在不同的發(fā)行版中有所不同。
通常,在 Ubuntu 中你可以在 journalctl
日志或 /var/log/auth.log
文件中找到它,在 Fedora 中可以在 /var/log/audit/audit.log
文件中找到它。
如果一個用戶不在 sudoer 列表中,你能做什么?
當你不能用當前的用戶賬戶使用 sudo
時,你能做什么?首先,驗證該用戶是否有 sudo 權限。如果沒有,你可以有一些選擇:
- 以 root 身份登錄或切換 root 身份(如果你有 root 密碼)。
- 將該用戶加入 sudoer 列表 (如果你有其他用戶賬戶的管理或
sudo
權限)。 - 如果你在多用戶的 Linux 系統(tǒng)中,自己沒有 root 或
sudo
權限,請你的系統(tǒng)管理員授予你的用戶 sudo 權限或安裝你想安裝的應用。
這有幫助嗎?
sudo
是一個非常全面的安全機制,它不僅僅是允許一個普通用戶成為 root。它有助于對系統(tǒng)進行審計,了解哪個用戶用 sudo
運行了哪個命令。它還可以被配置為只允許某個用戶用 sudo
運行某些命令。
你不會在桌面 Linux 上看到如此細化的 sudo
配置,在桌面 Linux 上,它被預先配置為允許 sudo
組中的任何用戶以 root
的身份運行任何命令。關于 sudo
的更多信息,請參見其他文章。
我希望在解決這個經典的初學者問題時,你能對 sudo
命令有一些初步的了解。