如何在 sudo 運(yùn)行的命令中防止使用參數(shù)
允許用戶使用 ?
?sudo?
? 運(yùn)行命令,但不帶命令行參數(shù)。
在之前的文章,我們學(xué)習(xí)了如何 ??通過 sudo 以 root 身份運(yùn)行目錄中的命令??。在這篇指南中,我們將學(xué)習(xí)如何在 Linux 中 防止 sudo 運(yùn)行的命令使用參數(shù)。即我們允許一個用戶使用 ??sudo?
? 運(yùn)行特權(quán)級命令,但是 不帶命令行參數(shù)。
背景介紹
你已經(jīng)知道了,每個命令執(zhí)行一個特定操作有不同的選項(xiàng)。讓我們以 ??ls?
? 命令為例。
??ls?
? 命令會羅列文件夾中的內(nèi)容,對嗎?沒錯。??ls?
? 命令附帶了一些命令行選項(xiàng)和標(biāo)志。例如,你可以用 ??ls?
? 命令的 ??-a?
? 標(biāo)志羅列文件夾中的所有內(nèi)容(包括隱藏文件)。
在這份簡要指南中,我們將明白如何允許用戶通過 ??sudo?
? 運(yùn)行 ??ls?
? 命令,但是不能使用命令行選項(xiàng)或者標(biāo)志。我講清楚了嗎?接下來讓我來展示一下如何做到這點(diǎn)。
防止使用 sudo 參數(shù)
以 ??root?
? 用戶身份編輯 ??/etc/sudoers?
? 文件:
[root@Almalinux8CT ~]# visudo
添加下面一行:
user1 ALL=(root) /usr/bin/ls ""
Deny Command Arguments With Sudo
要注意這里 ??ls?
? 之后的 雙引號。雙引號會屏蔽用戶在給定命令之后輸入的參數(shù)(比如 ??ls?
? 命令)。在上面的命令中,??user1?
? 能夠以 ??root?
? 身份運(yùn)行 ??ls?
? 命令,但是不能使用 ??ls?
? 命令的選項(xiàng)以及標(biāo)志。你可以選擇其他的指令進(jìn)行嘗試。保存該文件并關(guān)閉。
現(xiàn)在,以 ??user1?
? 的身份登錄系統(tǒng),并嘗試以管理員身份運(yùn)行 ??ls?
? 命令,不要添加任何選項(xiàng):
[user1@Almalinux8CT ~]$ sudo -u root ls -a
或許你會遇到下面的報錯:
Sorry, user user1 is not allowed to execute '/bin/ls -a' as root on Almalinux8CT.
不過你可以不添加參數(shù)來運(yùn)行 ??ls?
? 命令:
[user1@Almalinux8CT ~]$ sudo -u root ls
Prevent Command Arguments With Sudo
防止所有用戶使用命令參數(shù)
上述例子像你展示了如何阻止用戶以管理員身份運(yùn)行帶有參數(shù)的命令。你是否想要對所有用戶應(yīng)用該規(guī)則呢?很簡單!只需要在 ??/etc/sudoers?
? 文件中添加一行:
ALL ALL=(root) /usr/bin/ls ""
現(xiàn)在,系統(tǒng)中的所有用戶都可以運(yùn)行不帶參數(shù)的 ??ls?
? 命令。
想要恢復(fù)默認(rèn)設(shè)置,只需要刪除最后的雙引號,或者刪除整行。
查看幫助手冊,了解更多。
$ man sudoers
結(jié)論
在這份指南中,我們學(xué)習(xí)了如何允許用戶以管理員身份運(yùn)行命令,但是不能添加任何命令參數(shù)。這樣可以限制用戶誤用一些命令行參數(shù)。