【问题标题】:unix passwd required capabilites [closed]unix passwd 所需的功能 [关闭]
【发布时间】:2011-10-22 16:57:10
【问题描述】:

如果 /usr/bin/passwd 不是一个 set-UID 程序,它需要什么能力才能让普通用户仍然被允许更改他的密码?

【问题讨论】:

    标签: linux ubuntu-11.04


    【解决方案1】:

    它需要能够修改 /etc/passwd、/etc/shadow 和/或各种其他文件(取决于身份验证的配置方式)。

    所以 CAP_DAC_OVERRIDE 似乎就足够了,但是,使用 CAP_DAC_OVERRIDE 来 root 一个盒子是微不足道的,因为可以替换任何二进制文件(例如 /bin/sh,它通常由 root cron-jobs 执行)。

    在某些系统上,更改密码不需要特权,因为已经使用了守护进程,例如大多数去中心化的身份验证系统(nis+ 等)

    【讨论】:

      【解决方案2】:

      不可能,除非你想破坏系统的安全性。

      如果“passwd”实用程序可以像普通用户一样工作,那么任何用户都可以编写自己的版本来更改任何其他用户的密码。 (也就是说,将源代码带到实用程序,修改它以跳过询问当前密码,编译并运行。)

      我想您可以创建一个“密码守护程序”,它以 root 身份运行并侦听套接字,以便为密码更改请求提供服务。但是,为什么您想要它而不是 set-uid /usr/bin/passwd 超出了我的范围;安全隐患是相同的。

      但无论你做什么,更改密码数据库只能允许某些受信任的进程。否则任何人都可以更改其他人的密码,这违背了多用户操作系统的目的。

      【讨论】:

        【解决方案3】:

        您需要以 root 身份运行。 passwd 需要对 /etc/passwd 和 /etc/shadow 进行读/写访问,这些文件只有 root 才能直接操作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-05-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多