以以下方式运行命令bind

以以下方式运行命令bind

当您这样做时apt-get install bind9,就会bind创建一个用户。

我在安装绑定时遇到了一些问题。

了解更多信息。

su我尝试通过从root到用户bindroot因为我不知道密码)进行调试。

通常这对任何用户都有效。

但是当我输入

su bind

我没有收到任何错误消息,但 bash 上的用户仍然显示为,root并且whoami还告诉我我仍然是root

如果我对任何其他用户执行相同操作,bash 会更改为该用户,并且 whoami 也会告诉我我是该用户。

那么...为什么我不能su成为用户bind

以下是摘录自/etc/passwd

root@zotac:/etc# cat passwd | grep "bind"
bind:x:107:119::/var/cache/bind:/bin/false

我尝试/bin/false用替换/bin/bash,但没有什么变化。那么问题是什么?

答案1

像您的系统一样,正确配置的系统不允许以 身份成功登录(即使使用susudo -ubind。但您bind如果需要的话,可以以 shell 的形式运行命令。

为什么会发生(并且应该发生)

该用户bind不是应该能够登录的用户。这是设计使然。

bind:x:107:119::/var/cache/bind:/bin/false

/bin/falsebind的登录 shell。false不是像sh或 这样的真正 shell bash。相反,它不执行任何操作,并向调用进程发出失败信号。将用户配置为/bin/false作为其 shell 是使(可能)能够以用户身份进行身份验证以运行命令但无法以用户身份有效登录的标准方法之一。当用户以 作为其 shell 时/bin/false,用户登录时会发生以下情况:

  1. 身份验证完成。假设身份验证成功...
  2. /bin/false调用shell 。
  3. shell 立即退出。
  4. 由于登录 shell 已退出,登录会话已终止。
  5. 现在您已恢复正常root,因此可以使用诸如whoami显示为您这样的命令root

如果您更改配置以允许bind登录,则根据您执行的操作和配置的其他细节,可能会导致系统不安全。您几乎肯定不应该这样做。

为什么即使/bin/bash更换也会出现这种情况/bin/false

如果您/etc/passwd直接修改,我相信缓存数据可能尚未更新。如果您重新启动,问题可能会得到解决。但如上所述,这不是一个好主意。如果您还没有这样做,我建议(小心地)将该行编辑回原始版本(使用/bin/false)。

以以下方式运行命令bind

反而,如果你确实需要以用户身份运行命令bind,使用sudo运行特定命令:

sudo -u bind command

如果你确实需要以用户身份运行登录 shellbind,使用sudo以 身份运行 shell bind,并告诉 shell 像初始登录 shell 一样运行:

sudo -u bind bash -l

如果不同,请替换bash为您要使用的 shell 的名称。

-l标志使它bash像登录 shell 一样运行(参见man bash)。这在功能上对应于su - bind(参见man su)或sudo -i bind(见man sudo)。只不过,您指定的 shell(在此示例中为bash)运行,而不是/bin/false

如果您想要与su bind或相对应的东西sudo -s bind(不是登录 shell 并且主要保留调用者的环境变量,包括 的 shell HOME),但运行/bin/bash而不是/bin/false,请使用以下命令:

sudo -u bind bash

如果由于某种原因您想要使用su(以 身份运行root)来以 身份运行命令bind,则可以使用以下-c标志来实现:

su bind -c command

不要做的事情

  • 可以使用usermodbind将 的 shell 从更改/bin/false为其他内容。这将使管理员能够使用sudo -u -i bindsudo -u -s bind,并root使用su bind,至少在操作正确的情况下是这样。但您几乎肯定不应该这样做——这违反了没有人可以以 身份登录的设计假设bind
  • 您甚至可以运行sudo passwd bind为 设定密码bind,这样任何人(除访客外)只要知道密码,就可以使用 以 身份登录bindsu这样还可以bind通过 SSH 在虚拟控制台上以 身份登录,甚至可能使用图形登录屏幕以 身份登录。为 设定密码bind甚至比更改其登录 shell 更糟糕,您不应该这样做。

如上所述,您不需要需要做这两件事中的任何一件。

相关内容