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

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

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

爲何Ubuntu中的有 sudo 命令

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

爲何須要不用密碼運行 sudo 命令?

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

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

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

sudo visudo

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

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

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

完成備份過程後。您能夠開始編輯 sudoers 文件。如須要將可視化編輯器更改成「nano」編輯器,可以使用如下命令:code

sudo EDITOR=nano visudo

或使用vim編輯器:進程

sudo EDITOR=vim visudo

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

root ALL=(ALL) ALL

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

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...

相關文章
相關標籤/搜索