背景
su -
我知道、sudo su -
和之间的区别sudo <command>
:
su -
- 将用户切换为 root,需要 root 密码sudo su -
- 将用户切换为 root,只需要当前用户的密码sudo <command>
- 仅授予特定命令的 root 访问权限;只需要当前用户的密码
sudo su -
我的问题是,在生产环境中使用是否是一种安全的做法。
一些想法:
允许访问 root 帐户似乎
sudo su -
会带来安全风险,因为访问 root 帐户需要依赖单个用户密码。当然,可以通过实施严格的密码策略来缓解这种情况。我认为这并没有su -
什么好处,因为这需要管理员共享实际的 root 密码。允许用户完全切换到 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
吗?可能不会。