한 번의 실수 / 잘못 입력 / 잘못 안내 된 명령 줄로 발생한 가장 큰 피해는 무엇입니까? 예를 들어 실수로 프로덕션 시스템 데이터베이스를 삭제했지만 운이 좋았으며 (즉, 백업) 영구적 인 데이터 손실, 비용 손실, 재산 피해 등은 없었습니다.
가장 중요한 것은 (투표를 위해) 다시는 일어나지 않도록 어떻게해야합니까?
한 번의 실수 / 잘못 입력 / 잘못 안내 된 명령 줄로 발생한 가장 큰 피해는 무엇입니까? 예를 들어 실수로 프로덕션 시스템 데이터베이스를 삭제했지만 운이 좋았으며 (즉, 백업) 영구적 인 데이터 손실, 비용 손실, 재산 피해 등은 없었습니다.
가장 중요한 것은 (투표를 위해) 다시는 일어나지 않도록 어떻게해야합니까?
답변:
SQL Server의 프로덕션 시스템에서 :
update customer set password = '' <enter>
가장 최근 백업은 일주일 전과 같습니다.
이것을 완화하기 위해, 나는 보통 절을 올바르게 select
작성했는지 확인하기 위해 먼저 문장을 작성한 where
다음, 돌아가서 편집하여 set
절 을 삽입 하고 문장을로 변경합니다 update
.
가장 큰 실수? 생각하지 않았을 때 두 가지 변수를 설정했다고 생각합니다. 따라서 rm -rf $ VARIABLE / $ VARIABLE2는 rm -rf /가되었습니다. FreeBSD는 최근이 실수로 인해 rm -rf /를 더 이상 정확하게 사용할 수 없도록 rm 도구를 업데이트했습니다!
shutdown -h now
로컬 워크 스테이션 용이지만 프로덕션 서버에서 ssh를 통해 기록되는 동안 입력했습니다. 그 이후로 항상 내 호스트 이름이 $PS1
있습니다.
종료 명령에서 -r을 생략했습니다. 원격 서버에서. 나라의 다른쪽에. 원격 사무실에 IT 직원이 없습니다.
우리는 모두이 작업을 수행했습니다.이 단계의 통과 의례와 거의 같습니다.
VMS 시스템에서 ASSIGN DCL 명령을 사용하여 논리 이름을 지정하고 이전 ASSIGN 명령 행을 호출하려고했습니다. 이제 VMS에서는 명령을 명확하게하기 위해 명령의 문자 수만 입력했습니다. 그래서 나는 타이핑하려고했습니다.
녹화 엉덩이
하지만 실수로 입력했습니다
REQ 엉덩이
대신에. REQST는 REQUEST 명령에 대해 명확하지 않은데,이 명령은 운영자 권한이있는 모든 사람 (IT의 모든 사람)에게 인수를 브로드 캐스트합니다. 그래서 부서 전체가 단순히 "ASS"라는 방송 메시지를 받았습니다.
Solaris 시스템 : "killall dataLoader"
'dataLoader'는 내가 작업했던 앱이었습니다. Linux에서 killall은 pkill과 같이 작동합니다. 인수로 주어진 문자열과 일치하는 프로세스에 신호를 보냅니다. Solaris에서 killall은 현재 사용자가 죽일 수있는 시스템의 모든 것을 죽이려고합니다. 나는 뿌리였다.
java
은 확실히 죽였다 . ;)
한 달 전에 많은 달이 있기 전에 특정 실행 파일을 찾아야했지만 완전한 이름을 기억하지 못했습니다 (그러나 몇 글자는 기억할 수 있음). 그래서 나는 / usr / bin 디렉토리를 다음과 같이 점검 할 것이라고 생각했다.
rm /usr/bin/i*g*
이상한. 아무것도 반환되지 않았습니다. 방금 두 번째 편지를 잘못 기억했다는 것을 알고 다시 시도했습니다.
rm /usr/bin/i*
다시 한 번 / usr / local / bin, / usr / sbin 및 다른 것으로 생각한 후에 'ls'명령을 잘못 이해하고 있음을 깨달았습니다.
뇌 방울이 어디에서 왔는지 모르지만, 내가 다시 한 번 실수 한 것은 아닙니다.
다음을 사용하여 도트 파일을 포함하여 디렉토리의 모든 항목에 대한 소유권을 변경하려고합니다.
chown -R user * .*
무엇을 추측 즉 합니까?
/ dev / sdb를 제거 할 수 있었지만 다행히도 최신 백업이있었습니다.
dd if=/dev/urandom of=/dev/sda
내가 가장 좋아하는 것은 내가 대학에있을 때였 다. 나는 응용 프로그램을 만들고 있었고 (무엇을 기억하지 못합니까) 뿌리가 아니었을 때
PREFIX=~username/usr/local
그래서 내 홈 디렉토리에 설치할 수 있습니다. 불행히도 그것은에 설치
/home/username/src/app/~username/usr/local
대신에. 당연히 다시 시작으로 삭제하기 위해 내가 실행했습니다.
rm -rf ~username
소스 디렉토리에서.
왜 그렇게 오래 걸리는지 궁금했습니다 ....
:-)
그러나 최악의 것은 solaris 워크 스테이션으로 작업 할 때였으며 모든 설정을 완료 한 후에는 구성을 준비 할 수있었습니다. 그래서 나는 처형했다.
sys-unconfig
경고 메시지에 동의하고 머신이 재부팅되고 "공장 기본값"으로 돌아가는 대신 xterm 창이 간단히
connection closed by foreign host.
이야기의 도덕 다른 호스트에게 루트 쉘을 열어 두지 마십시오! 이제까지!!
몇 년 전 나는 프로젝트의 관리자 인 내 친구와 함께 프로젝트를 진행하면서 PHP로 일부 내용을 코딩했습니다. 우리는 협력 노력으로 서로 IM을 나누고있었습니다. 우리는 항상 놀이에서 앞뒤로 헛소리합니다.
Perl 대 PHP의 종교 전쟁이 진행되는 동안 ssh-agent가 내 컴퓨터에서 올바르게 작동하도록하려고했습니다. 그런 다음 ssh-agent가 평가가 필요한 것에 대해 언급했습니다 (왜 그런 말을했는지 모르겠습니다). 그래서 그는 노력 으로이 메시지를 보냈습니다. 그래서 나는 내 문제를 도울 수 있다고 생각했습니다.
\# eval $(echo ssh-agent |
perl -pe 's/h-a/m -r/' |
perl -pe 's/^ss/r/' |
perl -pe 's/gent/f \//')
경고! 그 명령을 실행하지 마십시오 !!!
eval을 제거하고 내부 명령을 자체적으로 실행하면 다음과 같습니다.
rm -rf /
무슨 일이 있었는지 알기 위해 4 초가 걸렸지 만 피해는 이미 끝났습니다. OS를 다시 설치해야했습니다. 다행히도 / etc iirc의 일부를 제외하고는 내 작업 중 아무것도 지워지지 않았습니다. 내가 왜 그랬는지 묻는 공포 메시지를 보냈을 때 그는 큰 웃음을 지었다. 우리는 모두 장기 시스템 엔지니어입니다. 그는 내가 그것을 실행할 것이라고 생각하지 않았고 단순히 c & p'ing 전에 그것을 확인하는 것이 더 조심스럽고 나는 그를 믿기 때문에 그가 놀고 있다고 생각조차하지 않았습니다. 말할 것도없이,이 작은 이야기는 우리 사이에 항상 떠 오릅니다. 그래서 나는 그것을 불멸로 결정했습니다.
이 문제가 다시 발생하지 않도록 어떻게 완화 했습니까? 나는 아무도 믿지 않는다!
흥미롭지 않은 또 다른 이야기는 몇 년 전 직장에서 중요한 상자에 대한 작업을하고 있다는 것입니다. 다른 기계에 몇 가지 용어를 공개했습니다. 디렉토리에서 불필요한 것들을 제거해야했습니다. 글쎄, 나는 내 용어로 길을 잃었고 실수로 rm'ed . 내 로컬 디렉토리에 있지만 잘못된 호스트에 (잘못 된 용어) !!. 응용 프로그램 서버에서 / tmp 대신 / var / lib / mysql에서 명령을 실행했습니다 (다른 용어). 말할 것도없이 프로덕션 데이터베이스를 지 웠습니다. 다행히도 저와 동료가 백업 및 대기에서 기본 서버를 재구성하는 동안 따뜻한 대기 상태를 유지했습니다. 약 18 시간이 걸렸습니다.
완화 : 명령을 실행하기 전에 명령을 실행하는 창에 대해 더주의하십시오.
짧은 버전
#/bin/bash
$0&
$0
kill -9 -1
#!/bin/bash
bash에서 가장 짧은 포크 폭탄으로 코드 골프를 얻을 것이라고 생각합니다.
한때 디렉토리에서 많은 파일을 삭제하고 싶었습니다.
del *.*
컴퓨터는 "당신이 확실합니까? [y를 / N은]"라고 나는! "쳇 바보 컴퓨터가 나는 확실히, 나는 그렇지에서 이놈의 명령을 입력하지 않았을거야 물론 생각 불평 ..."
Y <enter>
C:\Windows>_
음 ... WTF? 방금 Windows 디렉토리를 지우셨습니까? ....
undelete *.*
그 당시의 작은 하드 디스크에서는 c : \ windows의 모든 파일이 무엇이며 그 이름이 무엇인지 알았지 만 모든 항목을 삭제 한 후에도 시스템은 동일하지 않았습니다. 나는 "당신은 확실하다"프롬프트에 대해 약간의 존경을 얻었다. 아주 조금.
이야기는 나에게 말했다 :
지역 PBX에 문제가 있었기 때문에 또 다른 지점에 전화했습니다. 조사 결과, 서버가 업데이트되었지만 Asterisk 구성은 업데이트되지 않았다는 것을 알게되었습니다. 따라서 관리자는 지점 담당자에게 구성을 다시 실행하도록 지시했습니다.
관리자 : "이제 rm -rf / etc / asterisk를 입력하십시오"
Guy : "좋아."
관리자 : "이제 cp / var / ...를 입력하십시오."
Guy : "잠깐만 요, 아직 실행 중입니다 ..."
관리자 : ??? ... !!!
이 라인을 따라 뭔가 :
sudo dd if=/dev/zero of=/dev/sda
나는 sda4를 의미했다. 파티션뿐만 아니라 전체 디스크를 지 웠습니다 :-(
XCOPY
명령 행 인수가 Window COPY
및 UNIX와 반대로 바뀌기 때문에 실행에있어 무자비한 강력한 짐승 cp
입니다.
며칠 전에 실수로 썼습니다.
xcopy src \path\to\a\new\nonexistent\directory
XCOPY
내 src
디렉토리 를 덮어 쓸 정도로 친절 했습니다 ... 아무것도! 그리고 오래된 파일을 휴지통에 넣는 것도 귀찮지 않았습니다.
아, XCOPY
실제로 새로운 섹터를 할당하는 대신 디스크의 동일한 섹터를 덮어 씁니다. 나는 3 개의 디스크 복구 프로그램을 시도했지만 가장 좋은 방법은 손실 된 10 개의 파일 중 3 개만 복구 할 수 있다는 것입니다. 물론이 3 개의 파일은 오직 vshost.exe
그 파일 과 친구였습니다. 팽창!
네트워크에 문제가 있고 (원격 컴퓨터에서) 인터페이스를 다시 시작하고 싶었습니다.
ifconfig eth0 down && ifconfig eth0 upp
요즘에는 이와 같은 일을 시도하기 전에 누군가가 기계 근처에 있는지 확인하십시오 (iptables도 좋은 후보입니다). 그리고 아무도 없었을 때
sleep 600; reboot
다른 (화면) 터미널에 연결하여 10 분 이내에 명령을 ctrl + c 할 수 없으면 재부팅됩니다.
나는 그 실수로부터도 배웠고 (ctrl + c 수면이 재부팅을 실행합니다) 이제는
sleep 600 && reboot
ctrl + c 할 수 있습니다.
shutdown -r +5
예를 들어 shutdown
프로세스를 종료 하지 않으면 5 분 후에 시스템이 재부팅됩니다 killall shutdown
.
숨겨진 파일과 디렉토리를 모두 제거하려고 시도한 이유가 무엇인지 말해 줄 수있는 사람에게는 무료 쿠키 :
rm -rf. *
..
하드 링크와 일치하는지 궁금합니다.
옛날 옛적에 (아마도 시스템 III이지만 오래 전), *
올바른 쉘 인용을 사용하여 이름이 지정된 파일을 만들 수있었습니다 . 홈 디렉토리에서 파일을 찾았을 rm *
때 주저하고 생각할 때 리턴 키에 손가락을 댔습니다.
다른 사용자를 위해 이러한 파일을 작성하는 것이 일반적인 장난이었습니다.
파일이 디렉토리에 있으면 완화하기가 어렵습니다. ls
방금 표시된 그대로 정확하게 이름을 입력하는 반사 는 매우 강력합니다.
다른 (유해하지 않은) 장난은 제거하기가 훨씬 어려운 후행 공백 (또는 공백 만)이있는 파일의 이름을 지정하는 것이 었습니다 ...
다시 시작한 후 일반적인 JBoss 취약점에 대한 나쁜 경험으로 인해 다시 시작하기 전에 JBoss의 작업 파일을 지우고 싶습니다. 나는 보통 할 것입니다 :
# cd /var/cache/jboss
# rm -rf tmp/* work/*
다음과 같이 여러 가지 재앙이 발생할 수있는 실수를 입력하지 않도록 보호하십시오.
나는 마지막 명령을합니다 :
# sudo -u jboss rm -rf tmp/* work/*
JBoss 사용자는 소속되지 않은 중요한 파일을 제거하기가 어려울 것입니다.
나는 실제로 그런 실수를 한 적이 없지만, 내가하는 경우에는 안전합니다.