我在部署在 AWS 上的 Ubuntu 系统中使用了一个脚本。 此脚本的主要目的是检查特定服务是否定期运行(准确地说是每分钟一次),并在因任何原因停止时自动启动该服务。 但问题是我需要 sudo 启动服务的权限。 您可能已经知道,当我们运行某些东西时,我们应该提供密码 sudo 用户。 但我不想那样做。 我真正想做的是将服务运行为 sudo 没有密码。 如果你遇到过这样的情况,我知道一个小技巧,今天,在这个简短的指南中,我将教你如何在没有 sudo Linux 和类 Unix 操作系统中的密码。
看看下面的例子。
$ sudo mkdir /ostechnix [sudo] password for sk:
正如您在上面的屏幕截图中看到的,我需要提供 sudo 在根 (/) 文件夹中创建名为 ostechnix 的目录时的密码。 每当我们尝试执行命令时 sudo 权限,我们必须输入密码。 但是,在我的场景中,我不想提供 sudo 密码。 这是我为运行一个 sudo 在我的 Linux 机器上没有密码的命令。
免责声明: 这仅用于教育目的。 应用此方法时应非常小心。 这种方法既有生产力又有破坏性。 例如,如果您允许用户执行 'rm'
命令没有 sudo 密码,他们可能会意外或故意删除重要的东西。 你被警告了!
运行特定命令而不 sudo Linux中的密码
出于任何原因,如果您想允许用户运行某个命令而不给出 sudo 密码,您需要添加该命令 sudoers
文件。
我希望用户命名 sk 执行 mkdir
命令而不给出 sudo 密码。 让我们看看如何做到这一点。
编辑 sudoers 文件:
$ sudo visudo
在文件末尾添加以下行。
sk ALL=NOPASSWD:/bin/mkdir
这里, sk 是用户名。 根据上述行,用户 sk 能跑 'mkdir'
来自任何终端的命令,无需 sudo 密码。
您可以添加其他命令(例如 chmod
) 使用逗号分隔的值,如下所示。
sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod
Save 和 close 文件。 注销(或重新启动)您的系统。 现在,以普通用户 ‘sk’ 身份登录并尝试运行这些命令 sudo 看看会发生什么。
$ sudo mkdir /dir1
看? 即使我跑了 'mkdir'
命令与 sudo 权限,没有密码提示。 即日起,用户 sk 不必输入 sudo 运行时的密码 'mkdir'
命令。
运行除 sudoers 文件中添加的命令之外的所有其他命令时,系统会提示您输入 sudo 密码。
让我们运行另一个命令 sudo.
$ sudo apt update
看? 此命令提示我输入 sudo 密码。
如果您不希望此命令提示您询问 sudo 密码,编辑 sudoers 文件:
$ sudo visudo
添加 'apt'
visudo 文件中的命令如下:
sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt
您是否注意到 apt 二进制可执行文件路径与 mkdir 不同? 是的,您必须提供正确的可执行文件路径。 查找任何命令的可执行文件路径,例如 'apt'
, 利用 'whereis'
命令如下。
$ whereis apt apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz
如您所见,apt 命令的可执行文件是 /usr/bin/apt
,因此我将它添加到 sudoers 文件中。
就像我已经提到的那样,您可以添加任意数量的带有逗号分隔值的命令。 Save 和 close 完成后你的 sudoers 文件。 注销并重新登录到您的系统。
现在,检查您是否可以在不使用 sudo 密码:
$ sudo apt update
看? apt 命令没有提示我输入密码,即使我使用它运行它 sudo.
这是另一个例子。 如果要运行特定服务,例如 apache2,请按如下所示添加。
sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2
现在,用户可以运行 'sudo systemctl restart apache2'
命令没有 sudo 密码。
推荐下载 – 免费备忘单:“Linux 命令行备忘单”
在上述情况下,我可以重新验证特定命令吗? 当然,是的! 只需删除添加的命令。 注销并重新登录。
或者,您可以添加 'PASSWD:'
指令前面的指令。 看下面的例子。
添加/修改以下行,如下所示。
sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt
在这种情况下,用户 sk 能跑 'mkdir'
和 'chmod'
命令而不输入 sudo 密码。 但是,他必须提供 sudo 运行时的密码 'apt'
命令。
建议阅读:
- 如何在 Ubuntu 上向用户授予和删除 Sudo 权限
- 如何在 Linux 中更改默认 Sudo 日志文件
- 如何恢复用户的 Sudo 权限
- 如何在你的 Linux 系统中查找所有 Sudo 用户
- 使用时如何强制用户使用root密码而不是自己的密码 sudo
BASHCLI 命令行LinuxLinux 基础Linux 命令Linux 技巧在不使用Sudo 密码的情况下运行特定命令sudo 超级用户切换用户