Linux:出于安全考虑,使关机不可执行


9

今天,我误以为关闭了生产机器,因为我以为自己在本地机器上。我知道,新手错误:-(

为了避免再次发生该问题,我正在考虑删除该shutdown命令的执行许可,因为该机器应始终处于开机状态。

这是一个好主意吗?这样可以看到任何有害的副作用吗?

干杯丹


1
大多数系统管理员在某个时候都做类似的事情(又是哪个窗口?哎呀……)
Bart Silverstrim 2010年

3
很高兴这只是关闭。其他人通过dd工具(又名“磁盘破坏者”;)知道了这一课
pehrs 2010年

1
大多数sysadmin职责和工具可能是致命和致命的。强大的力量伴随着巨大的责任。您可以使用chmod 000命令关闭,但是下次您可能会弄乱rm,dd,fsck,mv或其他一些潜在危险的工具。我们每个人迟早都会犯错。您可以做的最好的事情是为最坏的情况做准备,并确保您有备份等:-)
Janne Pikkarainen 2010年

Answers:


21

完全警告您在生产机上工作的另一个方法是标记终端。例如, user@machine:~#文本在生产机器上可能是红色,在开发中可能是绿色,等等。这是一个不错的教程,具体说明如何:颜色重击提示


+1,我对所有机器进行颜色编码:彩色背景上的白色文本,橙色=基础结构;蓝色=生产;紫色=测试/开发。普通工作站保留标准的黑色背景。
克里斯·S

几乎每个shell的另一种方法:understudy.net/custom.html
Chris S,2010年

+1是个绝妙的秘诀,我自己从未想过。
肯尼·拉沙特

7

我能为您提供的最佳建议是,除非您需要root访问权限,否则不要以root用户身份登录,并确保每台计算机上的root / sudo密码都不同。

使关机不可访问是一种选择,但这不是一个好选择。无论是别名shutdownshutdown -atouch /etc/shutdown.allowchmod a-x /sbin/shutdown

另外,它在哪里结束?您还要禁止停止,重新启动和初始化吗?


4
它永远不会结束。总有更多的东西,一次又一次,越来越多,它永远不会停止<反复敲击墙壁...>
Bart Silverstrim 2010年

不要忘记“杀死”。毕竟,“ kill -9 1”是关闭unix盒的一种非常有效的方法(或者,过去曾经是这样)。
Vatine 2010年

有些关机没有-a。加上依赖别名与依赖别名相同alias rm='rm -i'-有一天,当您真正需要它时,它将不再存在。此外,shutdown -a反正只有有限的用途。
暂停,直到另行通知。

3

需要考虑的几点:

  1. 在生产期间,您作为生产系统的根用户正在做什么?配置系统,这样您就不必在日常工作中扎根于系统上。没有很好的理由,您永远不应扎根于生产系统。
  2. 学习重要的课程。当您是root用户时,必须按Enter键再检查两次。如果您只是不假思索地输入密码继续操作,那么SUDO并不受保护。如mkudlacek所述,及时上色是一种非常有用的工具,有助于确保您使用的不是错误的系统。
  3. 不要弄乱内置工具。它可能会中断更新,并会导致新员工疯狂。如果要更改某些内容,请使用自己的别名文件。

2
我不一定同意这篇文章。在以系统管理员身份工作时,对我的生产机器的访问通常需要root用户。您锁定用户,而不是管理员。请注意,不要投反对票,因为这是合法的观点,即使它与我的观点不同。
PP。

1
在这种情况下,您对计算机的服务水平没有严格的要求。您仅需root即可进行软件安装,修补,紧急绕过ACL以及更改网络配置。这些活动中的任何一项都不应该在生产中的计算机上经常进行。其他所有事情都应该可以通过超级用户帐户来完成。如果您在生产系统上使用root而不是超级用户,通常会遇到问题...
10

3

我不认为shutdown处理许可问题是解决情况的方法。基本上,您刚刚上了一课。振奋起来。

我做过同样的事情-花费很长的ssh会话链,然后弄乱了我ssh经历的其中一台机器上的路由,使自己陷入困境。我已经破坏了rsync请求,导致系统破坏了世界另一端的系统。我已经rm -rf / path在生产服务器上运行了。(那时我必须学习还原的工作方式。)

因此,我年纪大了一些,希望有一点智慧,现在我有了严格的规定。

  • 所有根提示均以#结尾,无论它们中包含什么其他信息。
  • 每当出现#提示时,我都会按一下Enter键之前就坐在我的手上。
  • 如果对我要做什么,我真正在哪里或如何到达那里有任何疑问,我会取消它,并从已知的开始条件重新构建它。
  • 当我犯了一个错误时(尽管随着时间的流逝它们变得越来越少且越来越晦涩,我仍然犯了这些错误),请立即弄清楚我的所作所为,受到影响的人,并向他们坦白自己的罪过。然后放下其他所有内容,并尽最大可能撤消损坏。

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



1

取决于,真的。您可以尝试仅包装命令,但这意味着如果您执行影响该可执行文件的更新或升级,则可能会忘记它并使它破坏更新。使用系统关闭命令可以是PITA,尤其是当您有新员工或替代人员而最终不知道自己在使用系统二进制文件时。

我个人将命令包装在一个脚本中,该脚本通过名称标识系统,并让您在运行实际的二进制文件之前确认您真正要执行的操作,或者必须输入特定的字母序列以确认关闭在运行二进制文件之前。那应该停顿一下。


1

您可能会考虑将命令提示符设置为至少在服务器上包括计算机名称。这可能有助于防止将来在错误的计算机上运行其他命令。如果将计算机名称涂上颜色以使其脱颖而出,甚至可以使用颜色代码来标识服务器角色,则效果更好。


0

一种方法是不使用su和/或直接登录root。最好直接登录该帐户,并root在本地计算机和ssh密钥上使用不同的密码。

当然,除了注意红色的“#”提示。


0

是的,删除shutdown命令上的执行位是防止意外关闭的最简单,最安全的方法,尤其是如果您的计算机上有KDE之类的桌面环境,并且要防止注销时意外关闭,则尤其如此。

对于新人,我认为他们要做的第一件事就是ls -l /sbin/shutdown找出为什么它不起作用(尤其是如果他们习惯于使用制表符填充可执行文件名的习惯)。显然,尽管您应该将所做的任何更改告诉他们。

为了增加安全性,您可以添加一行以/etc/rc.local从shutdown命令中删除执行位,这样您就不会忘记在重启后将其重置。


0

您只需从根目录的路径中删除/ sbin /。这样,您需要键入完整的路径来执行它,并且通常可以解决事故。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.