Ubuntu 限制 sudo 用户仅重置密码

Ubuntu 限制 sudo 用户仅重置密码

我想限制我的一个 sudo 用户只能重置用户密码。我不希望他们拥有除此以外的任何其他管理权限。

我知道如何阻止某些访问,但我怎样才能阻止所有内容呢passwd

答案1

首先,如果您甚至考虑限制任何用户的管理员权限,您应该尽快这样做,sudo gpasswd -d [username] sudo因为他们在从 sudo 中删除之前对系统拥有完全访问权限。

现在,有一种方法可以允许执行此类任务,但它仍然非常危险和有问题,并可能导致灾难性的情况。

  1. 显然你不能允许这个用户不受限制地访问,passwd因为这样就没有什么可以阻止他了passwd root

  2. 但是,你仍然想授予他重置不属于管理组的用户的密码的权限。这是我能想到的一个策略:

您有一位名为的高级用户fakeboss,他将为用户重置密码。您为他创建一个特殊文件夹,我们称之为/usr/local/fakeboss/只有他的组和 sudo 才能访问的文件夹。

root 用户创建一个名为 的基本用户user1,以及一个仅具有读取和执行权限的脚本,该脚本user1pw.sh使用以下命令调用:

chmod 755 user1pw.sh并把它放进/usr/local/fakeboss/

在脚本中 root 写道,($1 是传递的新密码参数,我快速检查了一下,但大多数其他命令的管道要么导致权限被拒绝,要么将用户 1 的密码更改为管道字符串,但我仍然需要仔细检查这部分)

#!/bin/bash
filtered=echo $1 | tr -d '[:cntrl:]'
echo "user1:$filtered" | chpasswd
echo "You just reset password for user1"

然后在/etc/sudoers根目录添加

fakeboss ALL = NOPASSWD: /usr/local/fakeboss/user1pw.sh 以及/usr/local/fakeboss//etc/sudoers 中的 secure_path 行

你用一个别名将它添加到上面fakeboss alias user1pw ='sudo /usr/local/fakeboss/user1pw.sh' ,他们现在可以将user1密码更改为他们作为参数发送的新密码,比如说:

user1pw IamYourBoss!

这会将用户1的密码设置为IamYourBoss!

并且此策略可针对 root 选择的所有用户实施,这些用户将能够通过 解锁其密码fakeboss。更重要的是,fakeboss无法访问密码重置脚本,因为它们是不可写的,并且没有任何passwd权限,也没有任何sudo超出这些密码重置脚本的权限。最后我要补充的是,当然还有一些严肃的日志记录机制,也许还会向 发送系统消息,root说明user1出于安全和完整性的考虑,他们此时已重置密码。

我很快就写了这篇文章,可能错过了一两个细节,但这肯定比允许伪 sudo 用户不受限制地访问要安全得多passwd

编辑:添加输入过滤,

相关内容