Linux:使安全closures不可执行

今天我错误地closures了一台生产机器,因为我以为我在我的本地机器上。 我知道,新手错误:-(

作为一个解决scheme,它不会再发生,我正在考虑删除关机命令的执行权限,因为该机器应该始终打开。

这是一个好主意吗? 你能通过这样做看到任何不需要的副作用吗?

干杯,丹

完全另一个问题如何被警告,你在生产机器上工作是标记terminal。 例如user@machine:~#文本可能在生产机器上是红色的,在开发时是绿色的,等等。下面是很好的教程:如何做到这一点: Color Bash Prompt

我可以给你的最好build议是不要以root用户身份login,除非你需要root权限,并且确保你在每台机器上有一个不同的root / sudo密码。

使关机无法进行是一种select,但它不是一个好的select。 要么别名shutdown shutdown -atouch /etc/shutdown.allow或者chmod ax /sbin/shutdown

另外,它在哪里结束? 你是否也不允许停止,重启和初始化?

有几点需要考虑:

  1. 在生产期间,你在生产系统上做了什么? configuration你的系统,这样你就不必为了日常工作而成为root了。 没有一个很好的理由,你永远不应该成为一个生产系统的根源。
  2. 学习重要的一课。 当你是root的时候,你必须检查两次,然后按回车。 SUDO是没有保护,如果你只是写你的密码继续,没有思考。 如mkudlacek提到的,提示着色是一个非常有用的工具,可以帮助确保您不在错误的系统上。
  3. 不要混淆内置的工具。 这很可能会打破更新,并将推动新员工疯狂。 如果你想改变一些使用你自己的别名文件。

我不认为shutdown权限是处理这种情况的方法。 基本上,你只是吸取了教训。 振奋起来。

我做了同样的事情 – 获得很长的ssh会话链,然后在我通过的其中一台机器上搞乱了路由,把自己关了。 我拙劣了一个rsync请求,导致了系统在世界另一端的系统破坏。 我在生产服务器上运行了rm -rf / path 。 (那个时候我学习了如何恢复工作。)

所以,年纪大得多,希望稍微有点聪明,现在我有自己严格的规定。

  • 所有的根提示以#结尾,不pipe其他信息在哪里。
  • 任何时候我在#提示符下,我都会按下回车键之前,坐在我的手上。
  • 如果对我要做什么或者我到底在哪里有任何疑问,我会取消它,并从已知的开始条件再次重build它。
  • 当我犯了一个错误(而且我仍然犯了这个错误,虽然随着时间的推移,它们变得不那么频繁,也变得更加模糊),请立刻弄清我所做的事情,我受到的影响,并向我们承认我的罪过。 然后放下其他所有东西,尽可能快地撤消损坏。

我的工作性质要求我花费大量的时间来处理各种各样的根本提示,但是由于我过去的错误,我保持了比当初创build时更好的态势感知。

如果你使用的是Ubuntu,那么试试Molly-guard。 正如这个类似的问题所讨论的。

取决于,真的。 你可以尝试包装命令,但这意味着如果你做了更新或升级,影响可执行文件,你可能会忘记它,并搞砸了一个更新。 使用系统关机命令可以是一个PITA,特别是如果你有新的雇员或replace,结果不知道你在玩系统二进制文件。

就我个人而言,我会考虑将命令封装在一个脚本中,通过名称来标识系统,并让您在运行实际二进制文件之前确认这是您真正想要执行的操作,或者您必须键入一定的字母顺序才能确认关机在运行二进制之前。 这应该给一些暂停。

您可以考虑设置命令提示符以包含机器名称,至less在服务器上。 这可能有助于防止其他命令将来在错误的机器上运行。 如果机器名称被着色以使其突出显示,并且甚至可以使用颜色代码来识别服务器angular色,则更为有效。

一种方法是不使用su和/或直接login到root 。 最好直接login到帐户,并在本地机器和SSH密钥上有不同的密码。

当然,除了看红色的'#'提示符之外。

是的,在shutdown命令中删除执行位是防止意外closures的最简单和最安全的方法,尤其是在计算机上安装了类似KDE的桌面环境时,并且要防止注销时意外closures。

至于新人感到困惑,我认为他们会做的第一件事情是用ls -l /sbin/shutdown来找出为什么它不起作用(特别是如果他们有制表符完成可执行文件名的好习惯的话)。 显然,尽pipe你应该告诉他们你所做的任何改变。

为了更加安全,您可以在/etc/rc.local添加一行来从shutdown命令中删除执行位,以便在重新启动后不要忘记重置它。

你可以从root的path中删除/ sbin /。 这样你就需要input完整的path来执行它,而且通常会修复事故。