如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

這篇文章主要介紹了如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)公司從2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元玉田做網(wǎng)站,已為上家服務(wù),為玉田各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):13518219792

你在使用 Linux 命令行時(shí)曾經(jīng)得到過(guò)“拒絕訪問(wèn)(Permission denied)”的錯(cuò)誤提示嗎?這可能是因?yàn)槟阏趪L試執(zhí)行一個(gè)需要 root 權(quán)限的操作。例如,下面的截圖展示了當(dāng)我嘗試復(fù)制一個(gè)二進(jìn)制文件到一個(gè)系統(tǒng)目錄時(shí)產(chǎn)生的錯(cuò)誤。

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

shell 的拒絕訪問(wèn)

那么該怎么解決這個(gè)錯(cuò)誤?很簡(jiǎn)單,使用 sudo 命令。

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

用 sudo 運(yùn)行命令

用戶(hù)運(yùn)行此命令后會(huì)被提示輸入他們(自己)的登錄密碼。一旦輸入了正確的密碼,操作將會(huì)成功執(zhí)行。

毫無(wú)疑問(wèn),sudo 是任何在 Linux 上使用命令行的人都必須知道的命令。但是,為了更負(fù)責(zé)、更有效地使用該命令,你還是要知道一些相關(guān)(及深入)的細(xì)節(jié)。這正是我們將會(huì)在這篇文章中討論的。

在我們繼續(xù)之前,值得提一下的是,這篇文章所提到的所有命令指示都已經(jīng)在 Ubuntu 14.04 LTS 下的 4.3.11 版 Bash 下通過(guò)測(cè)試。

什么是 sudo

正如你們大部分人所知道的,sudo 用來(lái)執(zhí)行需要提升權(quán)限(通常是作為 root 用戶(hù))的命令。在這篇文章之前的簡(jiǎn)介部分已經(jīng)討論過(guò)這樣的一個(gè)例子。然而,如果你想的話(huà),你能用 sudo 以其它(非 root )用戶(hù)運(yùn)行命令。

這是由工具提供的 -u 命令行選項(xiàng)所實(shí)現(xiàn)的。舉個(gè)例子,如下例所展示的那樣,我(himanshu)嘗試將一個(gè)在其他用戶(hù)(howtoforge)的 Home 目錄中的文件重命名,但是得到一個(gè)“訪問(wèn)拒絕”的錯(cuò)誤。然后我加上 sudo -u howtoforge 后用同樣的“mv”命令,命令成功執(zhí)行了:

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

什么是 sudo

任何人都能用 sudo 嗎?

不是。一個(gè)用戶(hù)要能使用 sudo ,應(yīng)該在 /etc/sudoers 文件里有一條跟該用戶(hù)相關(guān)的信息。下述摘自 Ubuntu 網(wǎng)站的一段能講得更清楚:

/etc/sudoers 文件控制了誰(shuí)能以哪個(gè)用戶(hù)的身份在哪個(gè)機(jī)器上運(yùn)行什么命令,還可以控制特別的情況,例如對(duì)于特定的命令是否需要輸入密碼。這個(gè)文件由別名aliases(基本變量)和用戶(hù)標(biāo)識(shí)user specifications(控制誰(shuí)能運(yùn)行什么命令)組成。

如果你正在使用 Ubuntu,讓一個(gè)用戶(hù)能運(yùn)行 sudo 命令很容易:你所需要做的就是把賬戶(hù)類(lèi)型改成管理員administrator。這可直接在 系統(tǒng)設(shè)置System Settings -> 用戶(hù)賬戶(hù) User Accounts里完成。

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

sudo 用戶(hù)

首先解鎖該窗口:

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

unlocking window

然后選擇你想改變用戶(hù)類(lèi)型的用戶(hù),然后將類(lèi)型改成管理員administrator。

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

choose sudo accounts

然而,如果你不使用 Ubuntu,或者你的發(fā)行版沒(méi)有提供這個(gè)特性,你可以手動(dòng)編輯 /etc/sudoers 文件來(lái)實(shí)現(xiàn)此改變。要在文件中添加這樣的一行:

[user]    ALL=(ALL:ALL) ALL

無(wú)需贅言,[user] 應(yīng)該用你想提升 sudo 權(quán)限的用戶(hù)的用戶(hù)名所代替。在這里值得提到的一件重要的事情是,官方建議通過(guò) visudo 命令編輯該文件 —— 你需要做的就是運(yùn)行下述命令:

sudo visudo

為了說(shuō)清究竟是怎么一回事,這里有段從 visudo 手冊(cè)里的摘要:

visudo 以安全的模式編輯 sudoers 文件。visudo 鎖定 sudoers 文件以防多個(gè)編輯同時(shí)進(jìn)行,提供基本的檢查(sanity checks)和語(yǔ)法錯(cuò)誤檢查。如果 sudoers 文件現(xiàn)在正在被編輯,你將會(huì)收到一個(gè)信息提示稍后再試。

關(guān)于 visudo 的更多信息,前往這里。

什么是 sudo 會(huì)話(huà)

如果你經(jīng)常使用 sudo 命令,你肯定注意到過(guò)當(dāng)你成功輸入一次密碼后,可以不用輸入密碼再運(yùn)行幾次 sudo 命令。但是一段時(shí)間后,sudo 命令會(huì)再次要求你的密碼。

這種現(xiàn)象跟運(yùn)行 sudo 命令數(shù)目無(wú)關(guān),跟時(shí)間有關(guān)。是的,sudo 默認(rèn)在輸入一次密碼后 15 分鐘內(nèi)不會(huì)再次要求密碼。15 分鐘后,你會(huì)再次被要求輸入密碼。

然而,如果你想的話(huà),你能改變這種現(xiàn)象。用以下命令打開(kāi) /etc/sudoers 文件:

sudo visudo

找到這一行:

Defaults env_reset

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

env_reset

然后在這行***添加以下變量:

Defaults env_reset,timestamp_timeout=[new-value]

[new-value] 為想要 sudo 會(huì)話(huà)持續(xù)的時(shí)間數(shù)。例如,設(shè)數(shù)值為 40。

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

sudo timeout value

如果你希望每次使用 sudo 命令時(shí)都要求輸入密碼,你可以把這個(gè)變量賦值為 0 。想要 sudo 會(huì)話(huà)永遠(yuǎn)不過(guò)時(shí),應(yīng)賦值為 -1。

注意將 timestamp_timeout 的值賦為 “-1” 是強(qiáng)烈不推薦的。

sudo 密碼

你可能注意過(guò),當(dāng) sudo 要求輸入密碼然后你開(kāi)始輸入時(shí),不會(huì)顯示任何東西 —— 甚至連常規(guī)的星號(hào)都沒(méi)有。雖然這不是什么大問(wèn)題,不過(guò)一些用戶(hù)就是希望顯示星號(hào)。

好消息是那有可能也很容易做到。所有你需要做的就是在 /etc/sudoers 文件里將下述的行:

Defaults env_reset

改成

Defaults env_reset,pwfeedback

然后保存文件。

現(xiàn)在,無(wú)論什么時(shí)候輸入 sudo 密碼,星號(hào)都會(huì)顯示。

如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示

hide the sudo password

一些重要的 sudo 命令行參數(shù)

除了 -u 命令行參數(shù)(我們已經(jīng)在這篇教程的開(kāi)始部分討論過(guò)了),還有其他重要的 sudo 命令行參數(shù)值得注意。在這部分,我們將會(huì)討論其中一些。

-k 參數(shù)

考慮下這種情況:輸入密碼后你剛剛運(yùn)行了幾個(gè) sudo 驅(qū)動(dòng)的命令?,F(xiàn)在,如你所知,sudo 會(huì)話(huà)默認(rèn)保持 15 分鐘。假設(shè)在這會(huì)話(huà)期間,你需要讓某些人訪問(wèn)你的終端,但你不想讓他們可以使用 sudo ,你將會(huì)怎么做?

還好,有 -k 命令行參數(shù)允許用戶(hù)取消 sudo 權(quán)限。這是 sudo 幫助頁(yè)面(man page)對(duì)此的解釋?zhuān)?/p>

-k, --reset-timestamp

不帶任何命令使用時(shí),撤銷(xiāo)用戶(hù)緩存的憑據(jù)。換句話(huà)講,下一次使用 sudo 將會(huì)要求輸入密碼。使用這個(gè)參數(shù)不需要密碼,也可以放到一個(gè) .logout 文件中來(lái)撤銷(xiāo) sudo 權(quán)限。

當(dāng)與一個(gè)命令,或者一個(gè)可能需要密碼的操作一起用時(shí),這個(gè)參數(shù)將會(huì)導(dǎo)致 sudo 忽略用戶(hù)緩存的憑據(jù)。結(jié)果是 sudo 要求輸入密碼(如果這是被安全策略所要求的),而且不會(huì)更新用戶(hù)緩存的憑據(jù)。

-s 參數(shù)

有時(shí)你的工作要求你運(yùn)行一堆需要 root 權(quán)限的命令,你不想每次都輸入密碼。你也不想通過(guò)改變 /etc/sudoers 文件調(diào)整 sudo 會(huì)話(huà)的過(guò)期時(shí)限。

這種情況下,你可以用 sudo 的 -s 參數(shù)。這是 sudo 幫助頁(yè)面對(duì)此的解釋?zhuān)?/p>

-s, --shell

如果設(shè)置了 SHELL 環(huán)境變量或者調(diào)用用戶(hù)的密碼數(shù)據(jù)庫(kù)指定了 shell,就運(yùn)行該 shell 。如果指定了命令,命令將會(huì)通過(guò) shell 的 -c 參數(shù)將命令傳遞給該 shell 執(zhí)行。如果沒(méi)有指定命令,會(huì)執(zhí)行一個(gè)交互式 shell。

所以,基本上這命令參數(shù)做的是:

  • 啟動(dòng)一個(gè)新的 shell - 至于是哪一個(gè) shell,參照 SHELL 環(huán)境變量賦值。如果 $SHELL 是空的,將會(huì)用 /etc/passwd 中定義的 shell。

  • 如果你用 -s 參數(shù)傳遞了一個(gè)命令名(例如 sudo -s whoami),實(shí)際執(zhí)行的是 sudo /bin/bash -c whoami。

  • 如果你沒(méi)有嘗試執(zhí)行其他命令(也就是說(shuō),你只是要運(yùn)行 sudo -s),你將會(huì)得到一個(gè)有 root 權(quán)限的交互式的 shell。

請(qǐng)記住,-s 命令行參數(shù)給你一個(gè)有 root 權(quán)限的 shell,但那不是 root 環(huán)境 —— 還是執(zhí)行的你自己的 .bashrc 。例如,在 sudo -s 運(yùn)行的新 shell 里,執(zhí)行 whoami 命令仍會(huì)返回你的用戶(hù)名,而非 root 。

-i 參數(shù)

-i 參數(shù)跟我們討論過(guò)的 -s 參數(shù)相像。然而,還是有點(diǎn)區(qū)別。一個(gè)重要的區(qū)別是 -i 給你的是 root 環(huán)境,意味著你的(用戶(hù)的).bashrc 被忽略。這就像沒(méi)有顯式地用 root 登錄也能成為 root 。此外,你也不用輸入 root 用戶(hù)密碼。

重要:請(qǐng)注意 su 命令也能讓你切換用戶(hù)(默認(rèn)切換到 root )。這個(gè)命令需要你輸入 root 密碼。為了避免這一點(diǎn),你可以使用 sudo 執(zhí)行它(sudo su),這樣你只需要輸入你的登錄密碼。然而,su 和 sudo su 有隱含的區(qū)別 —— 要了解它們,以及它們和 sudo -i 的區(qū)別,請(qǐng)看這里 。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

分享題目:如何解決使用Linux命令行時(shí)出現(xiàn)的錯(cuò)誤提示
URL分享:http://muchs.cn/article22/ispejc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)公司、小程序開(kāi)發(fā)App開(kāi)發(fā)、軟件開(kāi)發(fā)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管