學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>Linux教程>

linux sudo命令詳解

時間: 志藝942 分享

  簡單的說,sudo 是一種權(quán)限管理機制,管理員可以授權(quán)于一些普通用戶去執(zhí)行一些 root 執(zhí)行的操作,而不需要知道 root 的密碼。接下來是小編為大家收集的linux sudo命令詳解,希望能幫到大家。

  linux sudo命令詳解

  sudo 允許一個已授權(quán)用戶以超級用戶或者其它用戶的角色運行一個命令。當(dāng)然,能做什么不能做什么都是通過安全策略來指定的。sudo 支持插件架構(gòu)的安全策略,并能把輸入輸出寫入日志。第三方可以開發(fā)并發(fā)布自己的安全策略和輸入輸出日志插件,并讓它們無縫的和 sudo 一起工作。默認(rèn)的安全策略記錄在 /etc/sudoers 文件中。而安全策略可能需要用戶通過密碼來驗證他們自己。也就是在用戶執(zhí)行 sudo 命令時要求用戶輸入自己賬號的密碼。如果驗證失敗,sudo 命令將會退出。(注意,本文介紹的 sudo 命令運行在 ubuntu 14.04中。)

  sudo 命令語法

1
sudo [-bhHpV][-s ][-u <用戶>][指令]

  或

1
sudo [-klv]

  參數(shù)

  -b 在后臺執(zhí)行指令。

  -h 顯示幫助。

  -H 將HOME環(huán)境變量設(shè)為新身份的HOME環(huán)境變量。

  -k 結(jié)束密碼的有效期限,也就是下次再執(zhí)行sudo時便需要輸入密碼。

  -l 列出目前用戶可執(zhí)行與無法執(zhí)行的指令。

  -p 改變詢問密碼的提示符號。

  -s 執(zhí)行指定的shell。

  -u <用戶> 以指定的用戶作為新的身份。若不加上此參數(shù),則預(yù)設(shè)以root作為新的身份。

  -v 延長密碼有效期限5分鐘。

  -V 顯示版本信息。

  -S 從標(biāo)準(zhǔn)輸入流替代終端來獲取密碼

  sudo 程序相關(guān)文件

1
2
3
4
5
6
7
8
9
/etc/sudoers
/etc/init.d/sudo
/etc/pam.d/sudo
/var/lib/sudo
/usr/share/doc/sudo
/usr/share/lintian/overrides/sudo
/usr/share/bash-completion/completions/sudo
/usr/bin/sudo
/usr/lib/sudo

  基本配置

  系統(tǒng)默認(rèn)創(chuàng)建了一個名為 sudo 的組。只要把用戶加入這個組,用戶就具有了 sudo 的權(quán)限。

  至于如何把用戶加入 sudo 組,您可以直接編輯 /etc/group 文件,當(dāng)然您得使用一個有 sudo 權(quán)限的用戶來干這件事:

1
$ sudo vim /etc/group

  在 sudo 組中加入新的用戶,要使用逗號分隔多個用戶。

  或者您可以使用 usermod 命令把用戶添加到一個組中:

1
$ sudo usermod -a -G sudo jack

  上面的設(shè)置中我們把用戶 jack 添加到了 sudo 組中,所以當(dāng)用戶 jack 登錄后就可以通過 sudo 命令以 root 權(quán)限執(zhí)行命令了!

  詳細(xì)配置

  在前面的配置中我們只是把用戶 jack 加入了 sudo 組,他就具有了通過 root 權(quán)限執(zhí)行命令的能力。

  現(xiàn)在我們想問一下,這是怎么發(fā)生的?是時候介紹如何配置 sudo 命令了!

  sudo 命令的配置文件為 /etc/sudoers。(注意,/etc/sudoers 的配置內(nèi)容十分豐富,我們僅做簡單的介紹。要了解更多信息,請參考 man sudoers。)

  編輯這個文件是有單獨的命令的 visudo(這個文件我們最好不要使用 vim 命令來打開),是因為一旦你的語法寫錯會造成嚴(yán)重的后果,這個工具會替你檢查你寫的語法,這個文件的語法遵循以下格式:

  who where whom command

  說白了就是哪個用戶在哪個主機以誰的身份執(zhí)行那些命令,那么這個 where, 是指允許在那臺主機 ssh 連接進(jìn)來才能執(zhí)行后面的命令,文件里面默認(rèn)給 root 用戶定義了一條規(guī)則:

  root ALL=(ALL:ALL) ALL

  root    表示 root 用戶。

  ALL     表示從任何的主機上都可以執(zhí)行,也可以這樣 192.168.100.0/24。

  (ALL:ALL)   是以誰的身份來執(zhí)行,ALL:ALL 就代表 root 可以任何人的身份來執(zhí)行命令。

  ALL     表示任何命令。

  那么整條規(guī)則就是 root 用戶可以在任何主機以任何人的身份來執(zhí)行所有的命令。

  現(xiàn)在我們可以回答 jack 為什么具有通過 root 權(quán)限執(zhí)行命令的能力了。打開 /etc/sudoers 文件:

  sudo 組中的所有用戶都具有通過 root 權(quán)限執(zhí)行命令的能力!

  再看個例子:

1
nick 192.168.10.0/24=(root) /usr/sbin/useradd

  上面的配置只允許 nick 在 192.168.10.0/24 網(wǎng)段上連接主機并且以 root 權(quán)限執(zhí)行 useradd 命令。

  設(shè)置 sudo 時不需要輸入密碼

  執(zhí)行 sudo 命令時總是需要輸入密碼事件很不爽的事情(拋開安全性)。有些應(yīng)用場景也需要在執(zhí)行 sudo 時避開輸入密碼的交互過程。

  那么需要如何設(shè)置呢?其實很簡單,只需要在配置行中添加 NOPASSWD: 就可以了:

1
****** ALL=(ALL) NOPASSWD: ALL

  再試試看,是不是已經(jīng)不需要輸入密碼了?

  sudo 的日志

  在 ubuntu 中,sudo 的日志默認(rèn)被記錄在 /var/log/auth.log 文件中。當(dāng)我們執(zhí)行 sudo 命令時,相關(guān)日志都是會被記錄下來的。比如下圖中顯示的就是一次執(zhí)行 sudo 命令的日志:

  
看了“linux sudo命令詳解”還想看:

1.linux su和sudo命令的區(qū)別

2.Linux下chmod命令怎么用

3.Linux下最常用的Shell命令的介紹

4.Linux命令和命令行詳解

linux sudo命令詳解

簡單的說,sudo 是一種權(quán)限管理機制,管理員可以授權(quán)于一些普通用戶去執(zhí)行一些 root 執(zhí)行的操作,而不需要知道 root 的密碼。接下來是小編為大家收集的linux sudo命令詳解,希望能幫到大家。 linux sudo命令詳解 sudo 允許一個已授權(quán)用
推薦度:
點擊下載文檔文檔為doc格式

精選文章

  • matlab命令行環(huán)境的常用操作
    matlab命令行環(huán)境的常用操作

    ATLAB[1] 是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,主要包括MATLAB和

  • linux命令行運行matlab
    linux命令行運行matlab

    MATLAB中有專門的函數(shù)來計算這個數(shù)值,butter函數(shù)的階次估計函數(shù)為buttord。接下來是小編為大家收集的linux命令行運行matlab,希望能幫到大家。 linux命令行運

  • linux nohup命令使程序在后臺運行的方法
    linux nohup命令使程序在后臺運行的方法

    你知道linux下使得nohup命令讓程序在后臺運行的方法么,在linux上從后臺一直運行某個程序的方法,就是使用nohup命令了,接下來是小編為大家收集的linux n

  • linuxPowerShell小技巧
    linuxPowerShell小技巧

    由于Linux登錄大多是通過SSH的模式進(jìn)行登錄的,滲透測試時掃描到22端口監(jiān)聽有SSH,如果能有腳本可以基于字典對Linux進(jìn)行用戶名和密碼的

2893222