Linux中國

如何在 sudo 運行的命令中防止使用參數

允許用戶使用 sudo 運行命令,但不帶命令行參數。

在之前的文章,我們學習了如何 通過 sudo 以 root 身份運行目錄中的命令。在這篇指南中,我們將學習如何在 Linux 中 防止 sudo 運行的命令使用參數。即我們允許一個用戶使用 sudo 運行特權級命令,但是 不帶命令行參數

背景介紹

你已經知道了,每個命令執行一個特定操作有不同的選項。讓我們以 ls 命令為例。

ls 命令會羅列文件夾中的內容,對嗎?沒錯。ls 命令附帶了一些命令行選項和標誌。例如,你可以用 ls 命令的 -a 標誌羅列文件夾中的所有內容(包括隱藏文件)。

在這份簡要指南中,我們將明白如何允許用戶通過 sudo 運行 ls 命令,但是不能使用命令行選項或者標誌。我講清楚了嗎?接下來讓我來展示一下如何做到這點。

防止使用 sudo 參數

root 用戶身份編輯 /etc/sudoers 文件:

[root@Almalinux8CT ~]# visudo

添加下面一行:

user1   ALL=(root)      /usr/bin/ls ""

Deny Command Arguments With Sudo

要注意這裡 ls 之後的 雙引號。雙引號會屏蔽用戶在給定命令之後輸入的參數(比如 ls 命令)。在上面的命令中,user1 能夠以 root 身份運行 ls 命令,但是不能使用 ls 命令的選項以及標誌。你可以選擇其他的指令進行嘗試。保存該文件並關閉。

現在,以 user1 的身份登錄系統,並嘗試以管理員身份運行 ls 命令,不要添加任何選項:

[user1@Almalinux8CT ~]$ sudo -u root ls -a

或許你會遇到下面的報錯:

Sorry, user user1 is not allowed to execute '/bin/ls -a' as root on Almalinux8CT.

不過你可以不添加參數來運行 ls 命令:

[user1@Almalinux8CT ~]$ sudo -u root ls

Prevent Command Arguments With Sudo

防止所有用戶使用命令參數

上述例子像你展示了如何阻止用戶以管理員身份運行帶有參數的命令。你是否想要對所有用戶應用該規則呢?很簡單!只需要在 /etc/sudoers 文件中添加一行:

ALL   ALL=(root)      /usr/bin/ls ""

現在,系統中的所有用戶都可以運行不帶參數的 ls 命令。

想要恢復默認設置,只需要刪除最後的雙引號,或者刪除整行。

查看幫助手冊,了解更多。

$ man sudoers

結論

在這份指南中,我們學習了如何允許用戶以管理員身份運行命令,但是不能添加任何命令參數。這樣可以限制用戶誤用一些命令行參數。

via: https://ostechnix.com/prevent-command-arguments-with-sudo/

作者:sk 選題:lkxed 譯者:Donkey-Hao 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國