搜尋
首頁系統教程Linux解決Linux命令列錯誤提示的方法:使用sudo命令

解決Linux命令列錯誤提示的方法:使用sudo命令

Jan 15, 2024 pm 04:42 PM
linuxlinux教程紅帽linux系統linux指令linux認證紅帽linuxlinux視頻

你在使用 Linux 命令列時曾經得到過「拒絕存取(Permission denied)」的錯誤提示嗎?這可能是因為你正在嘗試執行一個需要 root 權限的操作。例如,下面的截圖展示了當我嘗試複製一個二進位到一個系統目錄時產生的錯誤。

解決Linux命令列錯誤提示的方法:使用sudo命令

#shell 的拒絕存取

那麼該怎麼解決這個錯誤?很簡單,使用 sudo 指令。

解決Linux命令列錯誤提示的方法:使用sudo命令

#用 sudo 執行指令

使用者執行此指令後會被提示輸入他們(自己)的登入密碼。一旦輸入了正確的密碼,操作將會成功執行。

毫無疑問,sudo 是任何在 Linux 上使用命令列的人都必須知道的命令。但是,為了更負責、更有效地使用該指令,你還是要知道一些相關(及深入)的細節。這正是我們將會在這篇文章中討論的。

在我們繼續之前,值得提一下的是,這篇文章所提到的所有命令指示都已經在 Ubuntu 14.04 LTS 下的 4.3.11 版 Bash 下通過測試。

什麼是 sudo

#正如你們大部分人所知道的,sudo 用來執行需要提升權限(通常是作為 root 使用者)的命令。在這篇文章之前的簡介部分已經討論過這樣的一個例子。然而,如果你想的話,你能用 sudo 以其它(非 root )用戶運行命令。

這是由工具提供的 -u 命令列選項所實現的。舉個例子,如下例所展示的那樣,我(himanshu)嘗試將一個在其他用戶(howtoforge)的 Home 目錄中的文件重命名,但是得到一個“訪問拒絕”的錯誤。然後我加上 sudo -u howtoforge 後用同樣的「mv」指令,指令成功執行了:

解決Linux命令列錯誤提示的方法:使用sudo命令

#什麼是 sudo

#任何人都能用 sudo 嗎?

不是。一個使用者要能使用 sudo ,應該在 /etc/sudoers 檔案裡有一條跟該使用者相關的資訊。下述摘自 Ubuntu 網站的一段能講得更清楚:

/etc/sudoers 檔案控制了誰能以哪個使用者的身分在哪個機器上執行什麼命令,還可以控制特別的情況,例如對於特定的命令是否需要輸入密碼。這個檔案由別名aliases(基本變數)和使用者識別user specifications(控制誰能執行什麼指令)所組成。

如果你正在使用 Ubuntu,讓一個使用者能執行 sudo 指令很容易:你所需要做的就是把帳號類型改成管理員administrator。這可直接在 系統設定System Settings -> 使用者帳戶 User Accounts裡完成。

解決Linux命令列錯誤提示的方法:使用sudo命令

#sudo 用戶

#首先解鎖該視窗:

解決Linux命令列錯誤提示的方法:使用sudo命令

#unlocking window

然後選擇你想改變用戶類型的用戶,然後將類型改成管理員administrator。

解決Linux命令列錯誤提示的方法:使用sudo命令

#choose sudo accounts

然而,如果你不使用 Ubuntu,或者你的發行版沒有提供這個特性,你可以手動編輯 /etc/sudoers 檔案來實現此變更。要在文件中加入這樣的一行:

[user]    ALL=(ALL:ALL) ALL

無需贅言,[user] 應該用你想提升 sudo 權限的使用者的使用者名稱所代替。這裡值得一提的一件重要的事情是,官方建議透過 visudo 指令編輯該文件 —— 你需要做的就是執行下述指令:

sudo visudo

為了說清究竟是怎麼一回事,這裡有段從 visudo 手冊裡的摘要:

visudo 以安全的模式编辑 sudoers 文件。visudo 锁定 sudoers 文件以防多个编辑同时进行,提供基本的检查(sanity checks)和语法错误检查。如果 sudoers 文件现在正在被编辑,你将会收到一个信息提示稍后再试。

关于 visudo 的更多信息,前往这里。

什么是 sudo 会话

如果你经常使用 sudo 命令,你肯定注意到过当你成功输入一次密码后,可以不用输入密码再运行几次 sudo 命令。但是一段时间后,sudo 命令会再次要求你的密码。

这种现象跟运行 sudo 命令数目无关,跟时间有关。是的,sudo 默认在输入一次密码后 15 分钟内不会再次要求密码。15 分钟后,你会再次被要求输入密码。

然而,如果你想的话,你能改变这种现象。用以下命令打开 /etc/sudoers 文件:

sudo visudo

找到这一行:

Defaults env_reset

解決Linux命令列錯誤提示的方法:使用sudo命令

env_reset

然后在这行最后添加以下变量:

Defaults env_reset,timestamp_timeout=[new-value]

[new-value] 为想要 sudo 会话持续的时间数。例如,设数值为 40。

解決Linux命令列錯誤提示的方法:使用sudo命令

sudo timeout value

如果你希望每次使用 sudo 命令时都要求输入密码,你可以把这个变量赋值为 0 。想要 sudo 会话永远不过时,应赋值为 -1。

注意将 timestamp_timeout 的值赋为 “-1” 是强烈不推荐的。

sudo 密码

你可能注意过,当 sudo 要求输入密码然后你开始输入时,不会显示任何东西 —— 甚至连常规的星号都没有。虽然这不是什么大问题,不过一些用户就是希望显示星号。

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

Defaults env_reset

改成

Defaults env_reset,pwfeedback

然后保存文件。

现在,无论什么时候输入 sudo 密码,星号都会显示。

解決Linux命令列錯誤提示的方法:使用sudo命令

hide the sudo password

一些重要的 sudo 命令行参数

除了 -u 命令行参数(我们已经在这篇教程的开始部分讨论过了),还有其他重要的 sudo 命令行参数值得注意。在这部分,我们将会讨论其中一些。

-k 参数

考虑下这种情况:输入密码后你刚刚运行了几个 sudo 驱动的命令。现在,如你所知,sudo 会话默认保持 15 分钟。假设在这会话期间,你需要让某些人访问你的终端,但你不想让他们可以使用 sudo ,你将会怎么做?

还好,有 -k 命令行参数允许用户取消 sudo 权限。这是 sudo 帮助页面(man page)对此的解释:

-k, --reset-timestamp

不带任何命令使用时,撤销用户缓存的凭据。换句话讲,下一次使用 sudo 将会要求输入密码。使用这个参数不需要密码,也可以放到一个 .logout 文件中来撤销 sudo 权限。

当与一个命令,或者一个可能需要密码的操作一起用时,这个参数将会导致 sudo 忽略用户缓存的凭据。结果是 sudo 要求输入密码(如果这是被安全策略所要求的),而且不会更新用户缓存的凭据。

-s 参数

有时你的工作要求你运行一堆需要 root 权限的命令,你不想每次都输入密码。你也不想通过改变 /etc/sudoers 文件调整 sudo 会话的过期时限。

这种情况下,你可以用 sudo 的 -s 参数。这是 sudo 帮助页面对此的解释:

-s, --shell

如果設定了 SHELL 環境變數或呼叫使用者的密碼資料庫指定了 shell,就執行該 shell 。如果指定了指令,指令將會透過 shell 的 -c 參數將指令傳遞給該 shell 執行。如果沒有指定指令,會執行一個互動式 shell。

所以,基本上這指令參數做的是:

啟動一個新的 shell - 至於是哪一個 shell,參考 SHELL 環境變數賦值。如果 $SHELL 是空的,將會用 /etc/passwd 中定義的 shell。
如果你用 -s 參數傳遞了一個指令名(例如 sudo -s whoami),實際執行的是 sudo /bin/bash -c whoami。
如果你沒有嘗試執行其他指令(也就是說,你只是要執行 sudo -s),你將會得到一個有 root 權限的互動式的 shell。

請記住,-s 命令列參數給你一個有 root 權限的 shell,但那不是 root 環境 —— 還是執行的你自己的 .bashrc 。例如,在 sudo -s 執行的新 shell 裡,執行 whoami 指令仍會傳回你的使用者名,而非 root 。

-i 參數

#-i 參數跟我們討論過的 -s 參數相像。然而,還是有點差別。一個重要的區別是 -i 給你的是 root 環境,意味著你的(用戶的).bashrc 被忽略。這就像沒有明確地用 root 登入也能成為 root 。此外,你也不用輸入 root 使用者密碼。

重要:請注意 su 指令也能讓你切換使用者(預設切換到 root )。這個指令需要你輸入 root 密碼。為了避免這一點,你可以使用 sudo 執行它(sudo su),這樣你只需要輸入你的登入密碼。然而,su 和 sudo su 有隱含的區別 —— 要了解它們,以及它們和 sudo -i 的區別,請看這裡 。

總結

我希望現在你至少知道了 sudo 的基本知識,以及如何調整 sudo 的預設行為。請按我們解釋過的那樣去嘗試調整 /etc/sudoers 。同時也瀏覽論壇討論來更深入了解 sudo 命令。

以上是解決Linux命令列錯誤提示的方法:使用sudo命令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:Linux就该这么学。如有侵權,請聯絡admin@php.cn刪除
Linux實際上有什麼好處?Linux實際上有什麼好處?Apr 12, 2025 am 12:20 AM

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

在Linux上掌握道德黑客的基本工具和框架在Linux上掌握道德黑客的基本工具和框架Apr 11, 2025 am 09:11 AM

簡介:通過基於Linux的道德黑客攻擊數字邊界 在我們越來越相互聯繫的世界中,網絡安全至關重要。 道德黑客入侵和滲透測試對於主動識別和減輕脆弱性至關重要

如何學習Linux基礎知識?如何學習Linux基礎知識?Apr 10, 2025 am 09:32 AM

Linux基礎學習從零開始的方法包括:1.了解文件系統和命令行界面,2.掌握基本命令如ls、cd、mkdir,3.學習文件操作,如創建和編輯文件,4.探索高級用法如管道和grep命令,5.掌握調試技巧和性能優化,6.通過實踐和探索不斷提陞技能。

Linux最有用的是什麼?Linux最有用的是什麼?Apr 09, 2025 am 12:02 AM

Linux在服務器、嵌入式系統和桌面環境中的應用廣泛。 1)在服務器領域,Linux因其穩定性和安全性成為託管網站、數據庫和應用的理想選擇。 2)在嵌入式系統中,Linux因其高度定制性和高效性而受歡迎。 3)在桌面環境中,Linux提供了多種桌面環境,滿足不同用戶需求。

Linux的缺點是什麼?Linux的缺點是什麼?Apr 08, 2025 am 12:01 AM

Linux的缺點包括用戶體驗、軟件兼容性、硬件支持和學習曲線。 1.用戶體驗不如Windows或macOS友好,依賴命令行界面。 2.軟件兼容性不如其他系統,缺乏許多商業軟件的原生版本。 3.硬件支持不如Windows全面,可能需要手動編譯驅動程序。 4.學習曲線較陡峭,掌握命令行操作需要時間和耐心。

Linux難以學習嗎?Linux難以學習嗎?Apr 07, 2025 am 12:01 AM

Linuxisnothardtolearn,butthedifficultydependsonyourbackgroundandgoals.ForthosewithOSexperience,especiallycommand-linefamiliarity,Linuxisaneasytransition.Beginnersmayfaceasteeperlearningcurvebutcanmanagewithproperresources.Linux'sopen-sourcenature,bas

Linux的5個基本組件是什麼?Linux的5個基本組件是什麼?Apr 06, 2025 am 12:05 AM

Linux的五個基本組件是:1.內核,管理硬件資源;2.系統庫,提供函數和服務;3.Shell,用戶與系統交互的接口;4.文件系統,存儲和組織數據;5.應用程序,利用系統資源實現功能。

Ubuntu Home Automation:使用開源工具建立智能的居住空間Ubuntu Home Automation:使用開源工具建立智能的居住空間Apr 05, 2025 am 09:19 AM

開啟智能家居新篇章:基於Ubuntu的開源家庭自動化系統 智能家居技術徹底改變了我們與生活空間的互動方式,為日常生活帶來了便利、安全和能源效率。從遠程控制燈光和電器,到監控安全攝像頭和自動化氣候控制,智能家居技術變得越來越普及。 然而,許多商業智能家居系統存在局限性:高昂的成本、隱私問題以及有限的兼容性。幸運的是,開源軟件解決方案結合Ubuntu的強大功能,提供了一種替代方案——允許用戶創建可定制、經濟高效且安全的智能家居生態系統。 本指南將探討如何使用Ubuntu和開源工具設置家庭自動化系統。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境