| 会员登录 立即注册

打印 上一主题 下一主题

如何在 sudo 运行的命令中防止使用参数

[复制链接]
跳转到指定楼层
楼主
3AAA 发表于 2022-10-5 17:21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
楼主
3AAA
2022-10-5 17:21:25 4406 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 ""


要注意这里 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


防止所有用户使用命令参数


上述例子像你展示了如何阻止用户以管理员身份运行带有参数的命令。你是否想要对所有用户应用该规则呢?很简单!只需要在 /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中国荣誉推出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

3AAA 当前离线
白银会员

查看:4406 | 回复:0

关于我们  |   侵权投诉受理  |   联系我们  |   Archiver  |  
免责声明:邳州信息网所有言论只代表发表者个人观点,与本站无关
Copyright © 2009-2025 pzxxw.com 版权所有:邳州金银杏文化传媒有限公司  

苏公网安备 32038202000401号

快速回复 返回顶部 返回列表