成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

sudo命令:解決使用Linux命令行時出現的錯誤提示

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

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

 

 

 

shell 的拒絕訪問

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

 

 

用 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”命令,命令成功執行了: 

 

 

什么是 sudo 

什么是 sudo

任何人都能用 sudo 嗎?

不是。一個用戶要能使用 sudo ,應該在 /etc/sudoers 文件里有一條跟該用戶相關的信息。下述摘自 Ubuntu 網站的一段能講得更清楚:

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

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

 

 

sudo 用戶 

sudo 用戶

首先解鎖該窗口: 

 

 

unlocking window 

unlocking window

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

 

 

choose sudo accounts 

choose sudo accounts

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

  1. [user]    ALL=(ALL:ALLALL 

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

  1. sudo visudo 

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

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

關于 visudo 的更多信息,前往這里。

什么是 sudo 會話

如果你經常使用 sudo 命令,你肯定注意到過當你成功輸入一次密碼后,可以不用輸入密碼再運行幾次 sudo 命令。但是一段時間后,sudo 命令會再次要求你的密碼。

這種現象跟運行 sudo 命令數目無關,跟時間有關。是的,sudo 默認在輸入一次密碼后 15 分鐘內不會再次要求密碼。15 分鐘后,你會再次被要求輸入密碼。

然而,如果你想的話,你能改變這種現象。用以下命令打開 /etc/sudoers 文件:

  1. sudo visudo 

找到這一行:

  1. Defaults env_reset  

 

 

env_reset 

env_reset

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

  1. Defaults env_reset,timestamp_timeout=[new-value] 

[new-value] 為想要 sudo 會話持續的時間數。例如,設數值為 40。 

 

 

sudo timeout value 

sudo timeout value

如果你希望每次使用 sudo 命令時都要求輸入密碼,你可以把這個變量賦值為 0 。想要 sudo 會話永遠不過時,應賦值為 -1。

注意將 timestamp_timeout 的值賦為 “-1” 是強烈不推薦的。

sudo 密碼

你可能注意過,當 sudo 要求輸入密碼然后你開始輸入時,不會顯示任何東西 —— 甚至連常規的星號都沒有。雖然這不是什么大問題,不過一些用戶就是希望顯示星號。

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

  1. Defaults env_reset 

改成

  1. Defaults env_reset,pwfeedback 

然后保存文件。

現在,無論什么時候輸入 sudo 密碼,星號都會顯示。 

 

 

hide the sudo password 

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中國
相關推薦

2009-08-07 10:33:53

linux命令行亂碼linux命令行解決方式

2020-12-10 16:16:08

工具代碼開發

2020-12-11 06:44:16

命令行工具開發

2019-07-23 13:45:38

LinuxFedora權限

2010-06-01 19:14:53

SVN命令行

2014-01-24 09:09:32

Linux命令行網速

2022-02-08 13:24:49

LinuxLinux命令

2022-02-08 17:19:05

Linux命令grep

2019-08-05 12:20:30

命令行Linux權限進階

2009-08-16 20:24:59

linux命令行登陸linux命令行linux命令

2014-01-22 10:21:55

Linux命令行

2018-12-12 09:44:07

Linux命令行時間管理

2009-08-11 09:11:06

linux打開瀏覽器命linux命令行瀏覽器linux命令行

2009-12-23 14:14:09

Linux高級命令行

2009-12-09 09:25:52

Linux命令行svn命令

2010-09-01 14:23:54

Linux命令行開發

2009-12-24 14:51:39

Linux命令行

2021-09-18 09:19:21

Linux

2017-05-25 10:32:40

命令linux系統

2010-11-24 15:22:51

MySQL命令行
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久精品一区二区毛片吞精 | 国产97在线看 | 老头搡老女人毛片视频在线看 | 成人美女免费网站视频 | 午夜天堂精品久久久久 | 嫩草国产| www.日韩欧美 | 欧美综合在线观看 | 国产综合久久久久久鬼色 | 国产精品亚洲第一区在线暖暖韩国 | 国产精品久久久久久久久久久免费看 | 欧美在线日韩 | 日韩中文字幕一区 | 日韩电影中文字幕 | 99久久精品国产一区二区三区 | 精品欧美黑人一区二区三区 | 免费毛片网站 | 日韩波多野结衣 | 国产精品久久国产精品 | 久久高清精品 | 久久伊| 91成人小视频 | 欧美日高清| 乳色吐息在线观看 | 日韩三级在线 | 性一爱一乱一交一视频 | 亚洲视频免费在线观看 | 日韩2020狼一二三 | 亚洲不卡在线观看 | 国产精品久久久久一区二区三区 | 国产97色| 国产精品一区二区三区久久 | 激情视频中文字幕 | 成人激情视频免费观看 | 欧美成人精品一区二区男人看 | 天堂一区在线 | 日韩欧美精品一区 | 欧美日韩一本 | 一区二区三区国产 | 99re在线视频 | 久久久久久九九九九 |