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

Kin*_*and 13 linux unix su sudo

背景

我知道其中的差别之间su -sudo su -以及sudo <command>

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

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

一些想法:

  1. sudo su -通过根据个人用户密码访问 root 帐户,似乎允许会带来安全风险。当然,这可以通过执行严格的密码策略来缓解。我认为su -没有更好的办法,因为它需要管理员共享实际的 root 密码。

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

问题

鉴于上述问题,允许用户使用sudo su -甚至su -根本不使用是否是一个好主意?

管理员是否有任何理由为sudo su -su -代替sudo <command>(除了懒惰)配置用户帐户?

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

mdp*_*dpc 12

让我们看看你的案例:

 su -
Run Code Online (Sandbox Code Playgroud)

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

 sudo /bin/sh
Run Code Online (Sandbox Code Playgroud)

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

 sudo su -
Run Code Online (Sandbox Code Playgroud)

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

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