搜尋
首頁運維linux運維linux sudo指令的知識點有哪些

“Sudo”是Unix/Linux平台上的一個非常有用的工具,它允許系統管理員分配給普通用戶一些合理的“權利”,讓他們執行一些只有超級用戶或其他特許用戶才能完成的任務,例如:運行一些像mount,halt,su之類的命令,或編輯一些系統設定文件,像是/etc/mtab,/etc /samba/smb.conf等。這樣以來,就不僅減少了root使用者的登陸次數和管理時間,也提高了系統安全性。

一. sudo的特點

sudo扮演的角色注定了它要在安全方面格外謹慎,否則就會導致非法用戶攫取root權限。同時,它也要兼顧易用性,讓系統管理員更有效,更方便使用它。 sudo設計者的宗旨是:給使用者盡可能少的權限但仍允許完成他們的工作。所以,sudo
有以下特點:

  # 1. sudo能夠限制指定使用者在指定主機上執行某些指令。
   # 2. sudo可以提供日誌,忠實地記錄每個使用者使用sudo做了些什麼,並且能將日誌傳到中心主機或日誌伺服器。
   # 3. sudo為系統管理員提供設定文件,允許系統管理員集中地管理使用者的使用權限和使用的主機。它預設的存放位置是/etc/sudoers。
   # 4.sudo使用時間戳記檔案來完成類似「檢票」的系統。當使用者執行sudo並且輸入密碼後,使用者獲得了一張預設存活期為5分鐘的「入場券」(預設值可以在編譯的時候改變)。超時以後,用戶必須重新輸入密碼。

二. sudo指令

sudo程式本身就是一個設定了SUID位元的二進位。我們可以檢查一下它的權限:

$ls -l /usr/bin/sudo
   
 ---s--x--x 2 root root 106832 02-12 17:41 /usr/bin/sudo

sudo的配置都記錄在/etc/sudoers檔案中,我們下面將會詳細說明。設定檔指明哪些使用者可以執行哪些指令。要使用sudo,使用者 必須提供一個指定使用者名稱和密碼。注意:sudo需要的不是目標使用者的密碼,而是執行sudo的使用者的密碼。如果不在sudoers中的使用者透過sudo執 行命令,sudo會向管理員報告此事件。用戶可以透過sudo -v來查看自己是否是在sudoers 之中。如果是,它還可以更新你的「入場券」上的時間;如果不是,它會提示你,但不會通知管理員。

sudo指令格式如下:

sudo -K -L -V -h -k -l -vsudo [-HPSb] [-a auth_type] [-c class-] [-p prompt] [-u username#uid] {-e file [...] -i -s command}
 
 

   下面我们再来看一下sudo其它常用的一些参数:
   
选项     含义     作用
   
sudo -h     Help     列出使用方法,退出。
   
sudo -V     Version     显示版本信息,并退出。
   
sudo -l     List     列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
   
sudo -u username#uid     User     以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。
   
sudo -k     Kill     清除“入场卷”上的时间,下次再使用sudo时要再输入密码。
   
sudo -K     Sure kill     与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。
   
sudo -b command     Background     在后台执行指定的命令。
   
sudo -p prompt command     Prompt     可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。
   
 sudo -e file     Edit     不是执行命令,而是修改文件,相当于命令sudoedit。

還有一些不常用的參數,在手冊頁sudo(8)中可以找到。

三. 設定sudo

設定sudo必須透過編輯/etc/sudoers文件,而且只有超級使用者才可以修改它,也必須使用visudo編輯。之所以使用visudo有兩個原因,一是它能夠防止
兩個使用者同時修改它;二是它也能進行有限的語法檢查。所以,即使只有你一個超級用戶,你也最好用visudo來檢查語法。

visudo預設的是在vi裡開啟設定文件,用vi來修改文件。我們可以在編譯時修改這個預設項。 visudo不會擅自保存帶有語法錯誤的配置文件,它會提示你出現的問題,並詢問該如何處理,就像:

>>> sudoers file: syntax error, line 22 <p data-id="p838747a-c05CttyD">此時我們有三種選擇:鍵入“e”是重新編輯,鍵入“x”是不儲存退出,鍵入“Q”是退出並儲存。如果真選擇Q,那麼sudo將不會再運行,直到錯誤被修正。 </p><p data-id="p838747a-rCUe54J0">現在,我們一起來看神祕的設定文件,學一下如何寫它。讓我們從一個簡單的範例開始:讓使用者Foobar可以透過sudo執行所有root可執行的指令。以root身分用visudo開啟設定文件,可以看到類似下面幾行:</p><pre class="brush:php;toolbar:false"># Runas alias specification
   
# User privilege specificationroot    ALL=(ALL)ALL

我們一看就明白個差不多了,root有所有權限,只要仿照現有root的例子就行,我們在下面加上一行(最好用tab當空白):

foobar ALL=(ALL)    ALL

儲存退出後,切換到foobar用戶,我們用它的身分執行指令:

[foobar@localhost ~]$ ls /root
   
ls: /root: 权限不够
   
[foobar@localhost ~]$ sudo ls /root
   
PassWord:
   
anaconda-ks.cfg Desktop install.log install.log.syslog

好了,我們限制一下foobar的權利,不讓他為所欲為。例如我們只想讓他像root一樣使用ls和ifconfig,把那一行改為:

foobar localhost=    /sbin/ifconfig,   /bin/ls

再來執行指令:

[foobar@localhost ~]$ sudo head -5 /etc/shadow
   
Password:
   
Sorry, user foobar is not allowed to execute '/usr/bin/head -5 /etc/shadow' as root on localhost.localdomain.
   
[foobar@localhost ~]$ sudo /sbin/ifconfigeth0      Linkencap:Ethernet HWaddr 00:14:85:EC:E9:9B...

现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明
foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个
ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:

foobar    linux=(jimmy,rene)    /bin/kill

但这还有个问题,foobar到底以jimmy还是rene的身份执行?这时我们应该想到了sudo -u了,它正是用在这种时候。 foobar可以使用sudo -u jimmy kill PID或者sudo -u rene kill PID,但这样挺麻烦,其实我们可以不必每次加-u,把rene或jimmy设为默认的目标用户即可。再在上面加一行:

Defaults:foobar    runas_default=rene

Defaults后面如果有冒号,是对后面用户的默认,如果没有,则是对所有用户的默认。就像配置文件中自带的一行:

Defaults    env_reset

另一个问题是,很多时候,我们本来就登录了,每次使用sudo还要输入密码就显得烦琐了。我们可不可以不再输入密码呢?当然可以,我们这样修改配置文件:

foobar localhost=NOPASSWD:     /bin/cat, /bin/ls

再来sudo一下:

[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg Desktop install.log
   
install.log.syslog

当然,你也可以说“某些命令用户foobar不可以运行”,通过使用!操作符,但这不是一个好主意。因为,用!操作符来从ALL中“剔出”一些命令一般是没什么效果的,一个用户完全可以把那个命令拷贝到别的地方,换一个名字后再来运行。

四. 日志与安全

sudo为安全考虑得很周到,不仅可以记录日志,还能在有必要时向系统管理员报告。但是,sudo的日志功能不是自动的,必须由管理员开启。这样来做:

# toUCh /var/log/sudo
   
# vi /etc/syslog.conf

在syslog.conf最后面加一行(必须用tab分割开)并保存:

local2.debug                    /var/log/sudo

重启日志守候进程,

ps aux grep syslogd

把得到的syslogd进程的PID(输出的第二列是PID)填入下面:

kill –HUP PID

这样,sudo就可以写日志了:

[foobar@localhost ~]$ sudo ls /rootanaconda-ks.cfg
   
Desktop install.log
   
install.log.syslog
   
$cat /var/log/sudoJul 28 22:52:54 localhost sudo:   foobar :
   
TTY=pts/1 ; PWD=/home/foobar ; USER=root ; COMMAND=/bin/ls /root

不过,有一个小小的“缺陷”,sudo记录日志并不是很忠实:

[foobar@localhost ~]$ sudo cat /etc/shadow > /dev/null
   
[foobar@localhost ~]$
   
cat /var/log/sudo...Jul 28 23:10:24 localhost sudo:   foobar : TTY=pts/1 ;
   
PWD=/home/foobar ; USER=root ; COMMAND=/bin/cat /etc/shadow

重定向没有被记录在案!为什么?因为在命令运行之前,shell把重定向的工作做完了,sudo根本就没看到重定向。这也有个好处,下面的手段不会得逞:

[foobar@localhost ~]$ sudo ls /root > /etc/shadowbash: /etc/shadow: 权限不够

sudo 有自己的方式来保护安全。以root的身份执行sudo
-V,查看一下sudo的设置。因为考虑到安全问题,一部分环境变量并没有传递给sudo后面的命令,或者被检查后再传递的,比如:PATH,HOME,
SHELL等。当然,你也可以通过sudoers来配置这些环境变量。

以上是linux sudo指令的知識點有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
Linux操作:網絡和網絡配置Linux操作:網絡和網絡配置Apr 27, 2025 am 12:09 AM

Linux網絡配置可以通過以下步驟完成:1.配置網絡接口,使用ip命令臨時設置或編輯配置文件持久化設置。 2.設置靜態IP,適合需要固定IP的設備。 3.管理防火牆,使用iptables或firewalld工具來控製網絡流量。

Linux中的維護模式:系統管理員指南Linux中的維護模式:系統管理員指南Apr 26, 2025 am 12:20 AM

維護模式在Linux系統管理中扮演關鍵角色,幫助進行系統修復、升級和配置變更。 1.進入維護模式可以通過GRUB菜單選擇或使用命令“sudosystemctlisolaterescue.target”。 2.在維護模式下,可以執行文件系統修復和系統更新等操作。 3.高級用法包括重置root密碼等任務。 4.常見錯誤如無法進入維護模式或掛載文件系統,可通過檢查GRUB配置和使用fsck命令修復。

Linux中的維護模式:何時以及為什麼使用它Linux中的維護模式:何時以及為什麼使用它Apr 25, 2025 am 12:15 AM

使用Linux維護模式的時機和原因:1)系統啟動問題時,2)進行重大系統更新或升級時,3)執行文件系統維護時。維護模式提供安全、控制的環境,確保操作的安全性和效率,減少對用戶的影響,並增強系統的安全性。

Linux:基本命令和操作Linux:基本命令和操作Apr 24, 2025 am 12:20 AM

Linux中不可或缺的命令包括:1.ls:列出目錄內容;2.cd:改變工作目錄;3.mkdir:創建新目錄;4.rm:刪除文件或目錄;5.cp:複製文件或目錄;6.mv:移動或重命名文件或目錄。這些命令通過與內核交互執行操作,幫助用戶高效管理文件和系統。

Linux操作:管理文件,目錄和權限Linux操作:管理文件,目錄和權限Apr 23, 2025 am 12:19 AM

在Linux中,文件和目錄管理使用ls、cd、mkdir、rm、cp、mv命令,權限管理使用chmod、chown、chgrp命令。 1.文件和目錄管理命令如ls-l列出詳細信息,mkdir-p遞歸創建目錄。 2.權限管理命令如chmod755file設置文件權限,chownuserfile改變文件所有者,chgrpgroupfile改變文件所屬組。這些命令基於文件系統結構和用戶、組系統,通過系統調用和元數據實現操作和控制。

Linux中的維護模式是什麼?解釋了Linux中的維護模式是什麼?解釋了Apr 22, 2025 am 12:06 AM

MaintenancemodeInuxisAspecialBootenvironmentforforcalsystemmaintenancetasks.itallowsadMinistratorStoperFormTaskSlikerSettingPassingPassingPasswords,RepairingFilesystems,andRecoveringFrombootFailuresFailuresFailuresInamInimAlenimalenimalenrenmentrent.ToEnterMainterMainterMaintErmaintErmaintEncemememodeBoode,Interlecttheboo

Linux:深入研究其基本部分Linux:深入研究其基本部分Apr 21, 2025 am 12:03 AM

Linux的核心組件包括內核、文件系統、Shell、用戶空間與內核空間、設備驅動程序以及性能優化和最佳實踐。 1)內核是系統的核心,管理硬件、內存和進程。 2)文件系統組織數據,支持多種類型如ext4、Btrfs和XFS。 3)Shell是用戶與系統交互的命令中心,支持腳本編寫。 4)用戶空間與內核空間分離,確保系統穩定性。 5)設備驅動程序連接硬件與操作系統。 6)性能優化包括調整系統配置和遵循最佳實踐。

Linux體系結構:揭示5個基本組件Linux體系結構:揭示5個基本組件Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。