【问题标题】:How linux users change their password without root privilege?linux用户如何在没有root权限的情况下更改密码?
【发布时间】:2013-11-06 08:51:42
【问题描述】:

我注意到普通用户可以在不使用 sudo 的情况下更改自己的密码。但据我所知,更改密码必须写入 /etc/shadow 文件,该文件只能由 root 访问。

这是怎么发生的??

【问题讨论】:

标签: linux privilege


【解决方案1】:

已安装setuid root 中的passwd 程序:

$ ls -l `which passwd`
-rwsr-xr-x 1 root root 41284 Sep 12  2012 /usr/bin/passwd

注意第四个位置的s。这是一个可以在文件权限中设置的标志,它告诉 Linux 在运行时假定拥有可执行文件的用户的权限 - 在本例中为 root。

【讨论】:

  • 但是要更改密码,程序必须写入密码数据库。我想只有 root 可以访问该数据库(否​​则任何普通用户都可以直接更改数据库)。那么,问题来了,如果有人无法更改密码数据库,他们如何更改密码?
  • setuid 标志意味着passwd 以root 权限运行,而不是调用它的用户的权限-因此passwd 程序可以读/写/etc/shadow
【解决方案2】:

用户只需更改密码即可运行

passwd

来自 linux 命令行。

【讨论】:

  • 这是真的,但它没有解释 passwd 是如何写入 /etc/shadow 文件的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多