在Ubuntu 和 CentOS 中不用密碼運行sudo命令

不用密碼情況下執行 sudo 命令

是否有可能在 Ubuntu 下不用密碼執行 sudo 命令?答案是肯定的。本文中,我們提供了多種方法來實現它。sudo 是在Linux中以“ 超級用戶權限 ” 運行所有命令的基本命令。要授予用戶 sudo 訪問權限,需要將用戶添加到sudoers 文件中。在基於 Ubuntu 和 Debian 的發行版中,sudoers 用戶組被稱爲wheel

爲什麼Ubuntu中的有 sudo 命令

按root運行指令,或用當前用戶以外的用戶執行命令時,需要運行 sudo 命令,同時系統將提示輸入密碼。這一步驟將增加您的 Ubuntu 系統的安全性。它還可以防止權限較低的用戶從 Ubuntu 系統安裝或刪除任何應用程序。

爲什麼需要不用密碼運行 sudo 命令?

在某些情況下,您可能需要運行自動進程或自動腳本,這需要在 sudoers 文件中配置,以允許某些用戶在沒有輸入密碼的情況下運行 sudo 命令。在下面的步驟中,教你在不輸入密碼的情況下運行sudo命令的方法。

將用戶添加到 sudoers 文件以跳過密碼

有關用戶的每個信息僅存儲在 sudoers 文件中。這決定了用戶和組的sudo權限。在編輯此文件之前,我們建議您備份此文件。您可以使用以下命令編輯sudoers文件:

sudo visudo

上面的命令將打開/ etc/sudoers文件。用 visudo 命令編輯文件後,會檢查是否有語法錯誤。建議您在編輯之前備份sudoers文件。只需按照以下命令即可。

sudo cp /etc/sudoers{,.backup_$(date +%Y%m%d)}

上面的命令將備份sudoers文件,日期將附加文件名。

完成備份過程後。您可以開始編輯 sudoers 文件。如需要將可視化編輯器更改爲“nano”編輯器,可使用以下命令:

sudo EDITOR=nano visudo

或使用vim編輯器:

sudo EDITOR=vim visudo

該文件中,幾乎所有的行都被註釋掉了,sudoers文件示例中重要的是:

root ALL=(ALL) ALL

此行表示:root用戶可以從所有終端執行,充當所有(任何)用戶,並運行ALL(任何)命令。
第一部分是用戶,第二部分是用戶可以使用sudo命令的終端,第三部分是他可以充當哪些用戶,最後一部分是使用時可以運行的命令sudo。

sudoers的例子

operator ALL= /sbin/poweroff

以上命令,使用戶操作員可以從任何終端,關閉命令電源。

您還可以爲以下項創建別名:users - > User_Alias,以其他用戶身份運行命令 - > Runas_Alias,主機 - > Host_Alias 命令 - > Cmnd_Alias

User_Alias OPERATORS = joe, mike, jude Runas_Alias OP = root, operator Host_Alias OFNET = 10.1.2.0/255.255.255.0 Cmnd_Alias PRINTING = /usr/sbin/lpc, /usr/bin/lprm

正如您所看到的別名OPERATORS包括用戶joe,mike和jude,別名OP包括用戶root和operator,別名OFNET包括網絡10.1.2.0(所有C類),命令別名PRINTING包含命令lpc和lprm。

因此,典型的sudoers文件可能如下所示:

 User_Alias     OPERATORS = joe, mike, jude
 Runas_Alias    OP = root, operator
 Host_Alias     OFNET = 10.1.2.0/255.255.255.0
 Cmnd_Alias     PRINTING = /usr/sbin/lpc, /usr/bin/lprm

OPERATORS ALL=ALL

#The users in the OPERATORS group can run any command from
 any terminal.

linus ALL=(OP) ALL

# The user linus can run any command from any terminal as any 
user in the OP group (root or operator).

user2 OFNET=(ALL) ALL

# user user2 may run any command from any machine in the 
OFNET network, as any user.

user3 ALL= PRINTING

# user user3 may run lpc and lprm from any machine.

yujiaao ALL=(ALL) ALL

在編輯器中打開 sudoers 文件後,您需要向下滾動到編輯器的末尾並在其中添加以下代碼!

yujiaao ALL=(ALL) NOPASSWD:ALL

用您的用戶名替換“ yujiaao ”!(例如:anderson ALL =(ALL)NOPASSWD:ALL),命令NOPASSWD將在終端中運行SUDO命令時跳過密碼驗證。

如何在爲特定命令運行sudo時跳過密碼:
您可以允許某些命令使用密碼運行sudo,使用以下命令來實現它:

yujiaao ALL=(ALL) NOPASSWD:/bin/cp,/bin/install,bin/remove

完成編輯後,請保存文件並退出終端。

NOPASSWD 是一個“標籤”,表示不會請求密碼。它有一個名爲的伴隨命令 PASSWD,是默認行爲。標籤與規則的其餘部分相關,除非在其後面的“雙胞胎”標籤上被否決。

例如,我們可以有這樣的一行:

/etc/sudoers文件

. . .
GROUPTWO    ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
. . .

另一個有用的標籤NOEXEC,可用於防止某些程序中的某些危險行爲。

例如,某些程序(如“less”)可以通過在其界面中鍵入以下內容來生成其他命令:

!command_to_run

這基本上執行用戶賦予它的任何命令,具有“less”運行的相同權限,這可能非常危險。

爲了限制這一點,我們可以使用這樣的一行:

/etc/sudoers文件中

. . .
username  ALL = NOEXEC: /usr/bin/less
. . .

使用 /etc/sudoers.d 文件跳過密碼

/etc/sudoers文件中,最後一行:#include /etc/sudoers.d,乍一看,最後一行看起來像註釋:

#includedir /etc/sudoers.d

它確實以#開頭,通常表示註釋。但是該行實際上表明/etc/sudoers.d目錄中的文件也將被採納和應用。

該目錄中的文件與/etc/sudoers文件本身遵循相同的規則。任何不是以~號且未包含.的任何文件將被讀取並生效。

這主要是爲了在安裝應用程序時更方便改 sudo權限。將所有關聯的規則放在/etc/sudoers.d目錄下的單個文件中可以輕鬆查看哪些權限與哪些帳戶關聯,並輕鬆地反向回滾,而無需嘗試直接操作/etc/sudoers文件。

/etc/sudoers文件本身一樣,您應始終使用visudo 編輯目錄/etc/sudoers.d中的文件。編輯這些文件的語法是:

sudo visudo -f /etc/sudoers.d/file_to_edit

此方法是在不輸入密碼的情況下運行 sudo 命令的備用方法。您可以將新文件身份驗證添加到/etc/sudoers.d目錄中,對於已在 sudoers 目錄的新文件中定義的一些常用命令,sudo 命令可以在沒有密碼的情況下運行。此步驟將不需要對sudoers文件本身的編輯。

現在您需要打開終端並在sudoers目錄中創建新文件。

sudo nano /etc/sudoers.d/new_file

有件事可別忘了:

sudo chmod 0440 new_file

在上面的命令中,將“ new_file ” 替換爲您自己的文件名。現在運行相同的命令來運行 sudo 命令而不輸入密碼。

username ALL=(ALL) NOPASSWD:ALL

上面的命令將幫助您爲該特定用戶運行沒有密碼的sudo命令。

結論

通常,不建議所有沒有權限的用戶在沒有密碼的情況下運行 sudo。建議您創建一個新的 sudoers 文件並單獨分配命令必須運行沒有密碼的 sudo 命令! 如果您有任何疑問,請在下方發表評論。

如果用出現語法錯誤參考 https://segmentfault.com/n/13...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章