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