【发布时间】:2011-10-22 16:57:10
【问题描述】:
如果 /usr/bin/passwd 不是一个 set-UID 程序,它需要什么能力才能让普通用户仍然被允许更改他的密码?
【问题讨论】:
标签: linux ubuntu-11.04
如果 /usr/bin/passwd 不是一个 set-UID 程序,它需要什么能力才能让普通用户仍然被允许更改他的密码?
【问题讨论】:
标签: linux ubuntu-11.04
它需要能够修改 /etc/passwd、/etc/shadow 和/或各种其他文件(取决于身份验证的配置方式)。
所以 CAP_DAC_OVERRIDE 似乎就足够了,但是,使用 CAP_DAC_OVERRIDE 来 root 一个盒子是微不足道的,因为可以替换任何二进制文件(例如 /bin/sh,它通常由 root cron-jobs 执行)。
在某些系统上,更改密码不需要特权,因为已经使用了守护进程,例如大多数去中心化的身份验证系统(nis+ 等)
【讨论】:
不可能,除非你想破坏系统的安全性。
如果“passwd”实用程序可以像普通用户一样工作,那么任何用户都可以编写自己的版本来更改任何其他用户的密码。 (也就是说,将源代码带到实用程序,修改它以跳过询问当前密码,编译并运行。)
我想您可以创建一个“密码守护程序”,它以 root 身份运行并侦听套接字,以便为密码更改请求提供服务。但是,为什么您想要它而不是 set-uid /usr/bin/passwd 超出了我的范围;安全隐患是相同的。
但无论你做什么,更改密码数据库只能允许某些受信任的进程。否则任何人都可以更改其他人的密码,这违背了多用户操作系统的目的。
【讨论】:
您需要以 root 身份运行。 passwd 需要对 /etc/passwd 和 /etc/shadow 进行读/写访问,这些文件只有 root 才能直接操作。
【讨论】: