linux无密码sudo,在Linux系统中运行没有sudo密码的特定命令
本文介紹在Linux操作系統(tǒng)中運(yùn)行沒有sudo密碼的特定命令的方法。
背景
我在AWS上部署了Ubuntu系統(tǒng)上的腳本,此腳本的主要目的是檢查特定服務(wù)是否以固定間隔運(yùn)行(確切地說每隔一分鐘),并且如果由于任何原因而停止,則自動啟動該服務(wù),但問題是我需要sudo權(quán)限來啟動服務(wù),你可能已經(jīng)知道,我們應(yīng)該在運(yùn)行sudo用戶時提供密碼,但我不想這樣做,我真正想要做的是以無密碼的形式運(yùn)行sudo服務(wù),如果你遇到這樣的情況,在這個簡短的文章中,我將教你如何在類Unix操作系統(tǒng)中運(yùn)行沒有sudo密碼的特定命令(也可以參考Linux系統(tǒng)中sudo命令的10個技巧一文)。
看看下面的例子:
$ sudo mkdir /ostechnix
[sudo] password for sk:
正如你在上面的屏幕截圖中看到的,我需要在root(/)文件夾中創(chuàng)建名為ostechnix的目錄時提供sudo密碼,每當(dāng)我們嘗試使用sudo權(quán)限執(zhí)行命令時,我們都必須輸入密碼,但是,在我的場景中,我不想提供sudo密碼,這是我在Linux機(jī)器上運(yùn)行沒有密碼的sudo命令所做的。
在Linux中運(yùn)行沒有sudo密碼的特定命令
出于任何原因,如果你希望允許用戶在不提供sudo密碼的情況下運(yùn)行特定命令,則需要在sudoers文件中添加該命令。
我希望名為sk的用戶執(zhí)行mkdir命令而不提供sudo密碼,讓我們看看如何做到這一點。
編輯sudoers文件:
$ sudo visudo
在文件末尾添加以下行:
sk ALL=NOPASSWD:/bin/mkdir
這里,sk是用戶名,根據(jù)上面的行,用戶sk可以從任何終端運(yùn)行'mkdir'命令,沒有sudo密碼。
可以使用逗號分隔值添加其他命令(例如chmod),如下所示:
sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod
保存并關(guān)閉文件,注銷(或重啟)你的系統(tǒng),現(xiàn)在,以普通用戶“sk”身份登錄并嘗試使用sudo運(yùn)行這些命令,看看會發(fā)生什么:
$ sudo mkdir /dir1
看到?即使我使用sudo權(quán)限運(yùn)行'mkdir'命令,也沒有密碼提示,從現(xiàn)在開始,用戶sk在運(yùn)行'mkdir'命令時無需輸入sudo密碼。
運(yùn)行除sudoers文件中添加的那些命令之外的所有其他命令時,系統(tǒng)將提示你輸入sudo密碼。
讓我們用sudo運(yùn)行另一個命令:
$ sudo apt update
看到?此命令提示我輸入sudo密碼。
如果你不希望此命令提示你詢問sudo密碼,請編輯sudoers文件:
$ sudo visudo
在visudo文件中添加'apt'命令,如下所示:
sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt
你是否注意到apt二進(jìn)制可執(zhí)行文件路徑與mkdir不同?是的,你必須提供正確的可執(zhí)行文件路徑,要查找任何命令的可執(zhí)行文件路徑,例如'apt',請使用如下所示的'whereis'命令:
$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz
如你所見,apt命令的可執(zhí)行文件是/usr/bin/apt,因此我將其添加到sudoers文件中。
就像我已經(jīng)提到的,你可以使用逗號分隔值添加任意數(shù)量的命令,完成后保存并關(guān)閉sudoers文件。注銷并再次登錄到你的系統(tǒng)。
現(xiàn)在,檢查你是否能夠使用sudo前綴運(yùn)行命令而不使用密碼:
$ sudo apt update
看到?即使我用sudo運(yùn)行它,apt命令也沒有問我密碼。
這是另一個例子,如果要運(yùn)行特定服務(wù),例如apache2,請按如下所示添加它:
sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2
現(xiàn)在,用戶可以在沒有sudo密碼的情況下運(yùn)行“sudo systemctl restart apache2”命令。
在上述情況下,我可以對特定命令重新進(jìn)行身份驗證嗎?答案:是的。只需刪除添加的命令即可,注銷并重新登錄。
或者,你可以在命令前添加“PASSWD:”指令,請看下面的例子。
添加/修改以下行,如下所示:
sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt
在這種情況下,用戶sk可以運(yùn)行'mkdir'和'chmod'命令而無需輸入sudo密碼,但是,他必須在運(yùn)行'apt'命令時提供sudo密碼。
結(jié)語
應(yīng)用此方法時應(yīng)該非常小心,這種方法可能具有相當(dāng)?shù)钠茐男?#xff0c;例如,如果你允許用戶在沒有sudo密碼的情況下執(zhí)行'rm'命令,他們可能會意外或故意刪除重要內(nèi)容。
相關(guān)主題
總結(jié)
以上是生活随笔為你收集整理的linux无密码sudo,在Linux系统中运行没有sudo密码的特定命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux脚本的数据输出到excel,使
- 下一篇: linux按时间升序排列文件,Linux