如何在 sudo 运行的命令中防止使用参数
创始人
2024-03-02 12:49:57
0

允许用户使用 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服务器上绑定域...
要把Linux服务器和域名绑定起来,让我们先简单聊聊这个过程。想象...
2025-02-27 13:49:16
如何在CentOS上搭建邮...
2、一个域名:这可是关键,就像你的身份证号码一样,独一无二,去正规...
2025-02-21 21:18:57
苹果分享 macOS 15...
IT之家 1 月 31 日消息,苹果公司昨日(1 月 30 日)发...
2025-02-06 06:15:36
不需要在整个Python脚...
在Python脚本中,可以使用ctypes库来读取/proc/pi...
2025-01-10 16:01:42
不使用sudo运行exec...
在不使用sudo运行execute_command的情况下,可以使...
2024-12-29 11:01:17
不能在没有使用sudo的情...
在使用sudo的情况下挂载卷是为了获得足够的权限来操作系统的挂载命...
2024-12-27 10:01:59

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...
Motrix:一个漂亮的跨平台... 一个开源的下载管理器,提供了一个简洁的用户界面,同时提供了跨平台操作的所有基本功能。在这里了解关于它...
Bash 脚本中如何使用 he... here 文档 here document (LCTT 译注:here 文档又称作 heredoc ...
使用 dialog 和 jq ... 为何选择文字用户界面(TUI)?许多人每日都在使用终端,因此, 文字用户界面 Text User I...