“sudo su -” 被认为是一种不好的做法吗?

“sudo su -” 被认为是一种不好的做法吗?

背景

su -我知道、sudo su -和之间的区别sudo <command>

  • su -- 将用户切换为 root,需要 root 密码
  • sudo su -- 将用户切换为 root,只需要当前用户的密码
  • sudo <command>- 仅授予特定命令的 root 访问权限;只需要当前用户的密码

sudo su -我的问题是,在生产环境中使用是否是一种安全的做法。

一些想法:

  1. 允许访问 root 帐户似乎sudo su -会带来安全风险,因为访问 root 帐户需要依赖单个用户密码。当然,可以通过实施严格的密码策略来缓解这种情况。我认为这并没有su -什么好处,因为这需要管理员共享实际的 root 密码。

  2. 允许用户完全切换到 root 帐户会使跟踪谁对系统进行了更改变得更加困难。我在日常工作中见过多个用户被授予sudo su -访问权限的情况。用户登录系统后做的第一件事是运行sudo su -,然后才开始工作。然后,有一天出现问题,无法追溯谁rm -rf *在错误的目录中运行。

问题

考虑到上述担忧,允许用户使用sudo su -甚至su -完全允许用户使用是否是个好主意?

除了懒惰之外,管理员还有什么理由要配置用户帐户sudo su -su -代替用户帐户吗?sudo <command>

笔记:sudo su -当 root 用户的直接 ssh 访问已被禁用时,我忽略了用户运行或su -管理员需要进行系统更改的情况。

答案1

让我们看看您的案例:

 su -

将使用 root 环境以 root 用户身份运行 /bin/sh。需要 root 密码,并且可能会根据 syslog 设置记录日志(通常默认为 /var/log/auth.log)。

 sudo /bin/sh

将使用当前环境变量集(sudoers 文件中定义的一些例外情况)以 root 用户身份运行 shell。密码是源用户密码,而不是 root 用户密码。sudo 通常会被记录。

 sudo su -

将以 root 用户身份运行 shell(通常是 /bin/sh),以 root 用户身份设置环境。这将需要源用户的密码,并且通常会记录下来。

有时需要拥有 root 环境而不是您自己的环境,因此 su - 是一种合适的方法。请记住,无论哪种情况,sudo 仍会记录 shell 命令的使用情况。

答案2

*考虑到上述问题,允许用户使用 sudo su 是否是个好主意*

不,在我看来不是。除了不需要 root 密码之外,这并没有比允许他们使用 su 更具实际优势。

或者 su - 一点儿?

由于我总是禁用 root 登录,因此 su 是必要的,并且总的来说,可以使服务器更安全。

答案3

OP 似乎提供了许多不让/不鼓励一般用途运行的好理由sudo bash,或者sudo su -因为这会将它们切换到全能模式,而这种模式的内部通常不会被记录。他们可能会忘记他们处于这种模式,并做一些……令人遗憾的事情。

因此,将大多数用户限制为运行sudo on/a/particular/command/或命令列表似乎更安全。这样每个 sudo 命令都会被记录下来。

实践中会遇到例外吗?当然。对此类例外的反应是恢复到不受限制的懒惰做法sudo su吗?可能不会。

相关内容