dea*_*mer 34 unix command-line-interface
命令行和脚本是危险的。使用 rm -rf 犯一个小错误,你就会陷入伤害的世界。在运行导入脚本时将数据库名称中的 prod 与 stage 混淆,并且您已绑定(如果它们在同一台服务器上,这并不好,但会发生)。同样为太晚注意到您 sshed 所在的服务器名称不是您在玩弄一些命令后认为的那样。你必须尊重Hole Hawg。
在运行有风险的命令之前,我有一些小习惯——比如对我所在的服务器进行三重检查。这是一篇关于 rm security的有趣文章。
什么小仪式、工具和技巧可以让你在命令行上保持安全?我的意思是客观的东西,比如“首先运行 ls foo*,查看它的输出,然后用 rm -rf 替换 ls 以避免运行 rm -rf foo * 或类似的东西”,而不是“确保你知道什么是命令会做”。
and*_*hky 45
一种有效的方法是在您的 shell 上为 prod/staging/test 服务器使用不同的背景颜色。
Pet*_*ter 14
在开始之前,请记住一个退出计划。
Ave*_*yne 10
我对其中一些问题有一个低技术的解决方案。
我已经养成了执行以下操作的先天习惯(计划以 root 身份工作时):
sudo su - root
切换到root。我这样做是作为一种心理准备,提醒我我已经在心理上走进了一个非常危险的区域,我应该时刻保持警惕和警惕。听起来很有趣,仅凭这个小小的仪式就让我免于悲伤,因为它只是强调了我不能粗心大意。sudo
我的系统,不是因为我是 BOFH,而是因为没有准备和培训,这就像给一只猴子上膛的枪。一开始很有趣,直到猴子低头看着桶并挤压......使用rm的时候,我总是cd
先到目录,然后用前缀of./
来保证目录正确,即
cd /usr/some/directory ; rm ./targetfile
或者我指定文件的整个路径
rm /usr/some/directory/targetfile
这是一个 PITA 但......总比抱歉更安全。
Bri*_*ter 10
这是特定于 Windows Powershell 的。
作为一项策略,我们在每台服务器上添加以下机器 profile.ps1。这可确保以下情况为真:
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal( [Security.Principal.WindowsIdentity]::GetCurrent() ) &{ if ($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { (get-host).UI.RawUI.Backgroundcolor="DarkRed" 清除主机 写主机“警告:PowerShell 以管理员身份运行。`n” } $utilities = $null if( [IntPtr]::size * 8 -eq 64 ) { $host.UI.RawUI.WindowTitle = "Windows PowerShell (x64)" $utilities = "${env:programfiles(x86)}\Utilities" } 别的 { $host.UI.RawUI.WindowTitle = "Windows PowerShell (x86)" $utilities = "${env:programfiles}\Utilities" } if( (Test-Path $utilities) -and !($env:path -match $utilities.Replace("\","\\")) ) { $env:path = "$utilities;${env:path}" } } 功能提示 { if ($currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { if(!$host.UI.RawUI.WindowTitle.StartsWith("管理员:")) { $Host.UI.RawUI.WindowTitle = "管理员:" + $host.UI.RawUI.WindowTitle } } 'PS' + $(if ($nestedpromptlevel -ge 1) { '>>' }) + '> ' }
在更改服务器之前,有几件重要的事情需要注意:
确保我在正确的服务器上
请注意**有多少人会受到此操作的影响*(如果您犯了错误)
在输入“回车”键之前,请注意撤销的可能性
问问自己这个命令是否有可能断开会话(fw 规则、错误关机等)。确保你有一个故障转移回来(特别是如果你不在现场)
我确保我所在系统的主机名在 bash(或其他 shell)提示中。如果我被 chroot 了,我会确保它也以某种方式进入那里。
我曾经在另一个实时 Linux 发行版中安装 Gentoo 系统,并且不小心rm
在错误的 shell 中运行了一个相当具有破坏性的命令(不记得它是 ATM - 的某个变体),导致实时系统上的一堆东西删除,而不是 chroot 中的内容。从那以后,我一直这样做
export PS1="(chroot) $PS1"
Run Code Online (Sandbox Code Playgroud)
每当我在 chroot 中工作时。
归档时间: |
|
查看次数: |
13386 次 |
最近记录: |