我想限制我的一个 sudo 用户只能重置用户密码。我不希望他们拥有除此以外的任何其他管理权限。
我知道如何阻止某些访问,但我怎样才能阻止所有内容呢passwd
?
答案1
首先,如果您甚至考虑限制任何用户的管理员权限,您应该尽快这样做,sudo gpasswd -d [username] sudo
因为他们在从 sudo 中删除之前对系统拥有完全访问权限。
现在,有一种方法可以允许执行此类任务,但它仍然非常危险和有问题,并可能导致灾难性的情况。
显然你不能允许这个用户不受限制地访问,
passwd
因为这样就没有什么可以阻止他了passwd root
。但是,你仍然想授予他重置不属于管理组的用户的密码的权限。这是我能想到的一个策略:
您有一位名为的高级用户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
。
编辑:添加输入过滤,