由于登录大量生产服务器是每个 Linux 系统管理员工作的一部分,这意味着很容易出现问题并损坏生产机器。在很多情况下,当有人累了或晚上接到电话时,可以执行“rm -rf test”而不是“rm -rf test.1”。因此,有很多方法可以预测类似的情况并在用户级别或内核上阻止某些命令,但使用 root 访问权限并不是一个好的做法。此外,当您连接到很多机器(100-200)时,配置忘记所有机器上的某些命令也是一项艰巨的任务。
因此,我正在寻找某种方法,让您能够轻松、安全地实现这一目标。它应该仅在您通过 ssh 登录时才起作用,有时会被删除。所以我认为像终端/终结器/ssh 代理/或其他命令行工具的首选项中的自定义命令之类的东西。我不确定这是否可能,但我认为这对很多人都有用。
答案1
可以通过 ssh 限制命令执行,但如果您允许登录 shell,则此限制将不会到位。
一种方法是通过文件authorized_keys
并将 command="/bin/foo/bar" 放在关键行的前面。
另一种更安全的方法是使用sudo
并指定您想要允许用户提升并执行的内容。如果您经常遇到用户删除 test 而不是 test.1 的问题,那么这是保留安全网的正确位置。
如果您的管理员有常规操作,也许是将操作封装在/usr/local/bin
脚本中,以便他们想要整理磁盘空间,那么该脚本可以执行正常的内务管理任务,也许将日志发送到中央位置,或者只是将一些日志压缩到过时的存档。以后解决问题可能会节省一些时间!
答案2
您应该考虑使用 SSH 横幅来放置战线或支持线。但是您可以使用命令“su”禁用切换用户的功能:
sudo chmod u-s /bin/su
那么,只有 sudo 组才能做到这一点。
另外,目录中的所有内容/etc/skel/将复制到每个新创建的用户,在那里添加一些别名和提醒。