Linux : 안전을 위해 종료 할 수없는 시스템 만들기


9

오늘은 로컬 시스템에 있다고 생각했기 때문에 실수로 프로덕션 시스템을 종료했습니다. 나는 초보자 실수 :-(

다시 발생하지 않는 해결책으로 시스템이 항상 켜져 있어야하기 때문에 shutdown 명령에 대한 실행 권한을 제거하려고했습니다.

좋은 생각입니까? 그렇게함으로써 원하지 않는 부작용을 볼 수 있습니까?

건배, 댄


1
대부분의 시스템 관리자는 (?하는 창을 다시했다 으악 ...) 어떤 점에서 같은 것을 할
바트 Silverstrim

3
그것이 단지 셧다운 이었기 때문에 기쁘다. 다른 사람들은 dd 도구 (AKA : disk destroyer);)를 통해 그 교훈을 배웠습니다
pehrs

1
대부분의 sysadmin 업무 및 도구는 치명적이고 치명적일 수 있습니다. 큰 힘에는 큰 책임이 따릅니다. 종료 명령을 chmod 000으로 설정할 수 있지만 다음에 rm, dd, fsck, mv 또는 기타 위험한 도구를 엉망으로 만들 수 있습니다. 우리 모두는 조만간 실수를 저지를 것입니다. 당신이 할 수있는 가장 좋은 방법은 당신이 가지고있는 최악 준비하고 확인하는 것입니다 백업 등 :-)
의 Janne Pikkarainen

답변:


21

생산 기계에서 작업한다는 경고를받는 또 다른 방법은 터미널을 표시하는 것입니다. 예를 들어 user@machine:~#텍스트는 프로덕션 시스템에서 빨간색, 개발시 녹색 등일 수 있습니다. 다음은이를 수행하는 좋은 자습서입니다. Color Bash Prompt


+1, 나는 모든 기계에 색을 입힌다 : 배경색이 흰색 인 텍스트, 주황색 = 인프라; 청색 = 생산; 보라색 = 테스트 / 개발 일반 워크 스테이션은 표준 검정색 배경을 유지합니다.
Chris S

거의 모든 쉘에 대한 또 다른 방법 : understudy.net/custom.html
Chris S

훌륭한 팁을 얻으려면 +1하십시오.
Kenny Rasschaert

7

내가 줄 수있는 가장 좋은 조언은 루트 액세스가 필요하지 않은 한 루트로 로그인하지 않고 각 컴퓨터마다 다른 루트 / 스도 암호를 가지고 있는지 확인하는 것입니다.

종료에 액세스 할 수 없게하는 것은 하나의 옵션이지만 좋지 않습니다. 어느 별칭 shutdownshutdown -atouch /etc/shutdown.allowchmod a-x /sbin/shutdown

또한 어디에서 끝나는가? 또한 중단, 재부팅 및 초기화를 허용하지 않습니까?


4
결코 끝나지 않습니다. 항상 더 많은 것들이 계속 반복되고 있습니다. <벽에 머리 앞머리가 반복적으로 멈추지 않습니다 ...>
Bart Silverstrim

"kill"을 잊지 마십시오. 결국, "kill -9 1"은 유닉스 박스를 닫는 아주 효과적인 방법입니다.
Vatine

일부 종료에는이 없습니다 -a. 또한 이와 같은 별칭에 의존하는 것은 의존하는 것과 동일합니다. alias rm='rm -i'언젠가는 실제로 필요할 때 존재하지 않습니다. 게다가, shutdown -a어쨌든 유용성이 제한되어 있습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

3

고려해야 할 사항 :

  1. 프로덕션 시간 동안 프로덕션 시스템에서 루트로 무엇을하고 있었습니까? 일상적인 작업을 위해 시스템을 근절 할 필요가 없도록 시스템을 구성하십시오. 아주 좋은 이유없이 프로덕션 시스템에 뿌리를 내리지 않아야합니다.
  2. 중요한 교훈을 배우십시오. 루트 일 때는 Enter 키를 누르기 전에 두 번 확인해야합니다. 생각하지 않고 계속하기 위해 비밀번호를 쓰면 SUDO가 보호되지 않습니다. mkudlacek에서 언급 한 프롬프트 색상은 잘못된 시스템에 있지 않도록하는 데 유용한 도구입니다.
  3. 내장 도구를 엉망으로 만들지 마십시오. 업데이트가 중단 될 가능성이 높고 신입 사원을 미치게 할 것입니다. 무언가를 변경하려면 고유 한 별명 파일을 사용하십시오.

2
이 게시물에 반드시 동의하지는 않습니다. sysadmin으로 작업하는 동안 프로덕션 시스템 액세스에 루트가 필요한 것이 매우 일반적입니다. 관리자가 아닌 사용자를 잠급니다. 그것이 투표소와 다르더라도 정당한 관점이기 때문에, 투표권은 없습니다.
PP.

1
이 경우 머신에 대해 매우 어려운 서비스 레벨 요구 사항이 없습니다. 소프트웨어 설치, 패치, 응급 우회 ACL 및 네트워크 구성 변경은 루트에 필요한 유일한 것입니다. 이러한 작업은 생산중인 컴퓨터에서 자주 수행해서는 안됩니다. 그 밖의 모든 작업은 수퍼 유저 계정으로 수행 할 수 있어야합니다. 프로덕션 시스템에서 수퍼 유저 대신 루트를 사용하는 경우 일반적으로 문제가 있습니다.
pehrs

3

권한을 엉망으로 shutdown만드는 것이 상황을 처리하는 방법 이라고 생각하지 않습니다 . 기본적으로 당신은 교훈을 배웠습니다. 친척

같은 종류의 작업을 수행했습니다. 긴 ssh 세션 체인을 얻은 다음 ssh'd를 거친 컴퓨터 중 하나의 경로를 엉망으로 만들었습니다. 나는 rsync 요청을 처리하여 세계 반대편의 시스템을 체계적으로 파괴했습니다. rm -rf / path프로덕션 서버에서 실행 했습니다. (그 당시에는 복원이 어떻게 작동했는지 배웠습니다.)

그래서 훨씬 더 오래되고 희망적으로 조금 더 현명하게, 나는 이제 내가 스스로에게 부과하는 엄격한 규칙을 가지고 있습니다.

  • 다른 정보가 무엇이든 관계없이 모든 루트 프롬프트는 #으로 끝납니다.
  • # 프롬프트가 표시 될 때마다 Enter 키를 누르기 전에 문자 그대로 손에 앉아 있습니다.
  • 내가 무엇을해야하는지, 내가 실제로 어디에 있는지 또는 어떻게 도착했는지에 대해 의문이있는 경우,이를 취소하고 알려진 시작 조건에서 다시 빌드합니다.
  • 내가 실수를 할 때 (그리고 시간이 지남에 따라 덜 빈번하고 모호해 지지만, 여전히 실수를 저지른다), 내가 한 일, 내가 누구에게 영향을 미쳤는지, 그리고 내 죄를 그들에게 고백하라 . 그런 다음 다른 모든 것을 버리고 가능한 한 빨리 최선을 다하십시오.

내 직업의 특성상 다양한 루트 프롬프트에서 많은 시간을 보내야하지만 과거의 실수로 인해 시작했을 때보 다 훨씬 나은 상황 인식을 유지합니다.



1

정말 다릅니다. 명령을 줄 바꿈하려고 시도 할 수 있지만 해당 실행 파일에 영향을 미치는 업데이트 또는 업그레이드를 수행하면 잊어 버리고 업데이트를 망칠 수 있습니다. 시스템 종료 명령을 사용하여 재생하는 것은 특히 Pita가 될 수 있습니다. 특히 새로 고용 한 사람이나 시스템 바이너리를 사용하고 있다는 사실을 모르는 대체품이있는 경우.

개인적으로 이름으로 시스템을 식별하는 스크립트로 명령을 래핑하는 방법을 살펴보고 실제 바이너리를 실행하기 전에 실제로 수행하려는 작업인지 또는 종료를 확인하기 위해 특정 문자 시퀀스를 입력 해야하는지 확인합니다 바이너리를 실행하기 전에 잠시 멈춰야합니다.


1

최소한 서버에서 시스템 이름을 포함하도록 명령 프롬프트 설정을 고려할 수 있습니다. 나중에 다른 컴퓨터에서 다른 명령이 실행되는 것을 방지하는 데 도움이 될 수 있습니다. 컴퓨터 이름이 눈에 띄도록 색상이 지정되어 있고 서버 역할을 식별하기 위해 색상 코드를 지정할 수도 있습니다.


0

한 가지 방법 su은를 사용 하거나 로그인 하지 않는 것입니다 root. 계정에 직접 로그인하고 root로컬 컴퓨터와 ssh 키에 다른 암호를 사용 하는 것이 좋습니다.

물론 빨간색 '#'프롬프트를 보는 것 외에도 추가됩니다.


0

예, 특히 시스템에 KDE와 같은 데스크탑 환경이 있고 로그 아웃 할 때 실수로 종료되는 것을 방지하려는 경우 shutdown 명령에서 실행 비트를 제거하는 것이 실수로 종료되는 것을 방지하는 가장 간단하고 안전한 방법입니다.

새로운 사람들이 혼란에 빠지면, 그들이 할 첫 번째 일은 그것이 ls -l /sbin/shutdown왜 작동하지 않는지 알아내는 것입니다 (특히 실행 가능한 이름을 탭 완성하는 좋은 습관이 있다면). 분명히 변경 사항을 알려 주어야합니다.

안전성을 /etc/rc.local높이기 위해 shutdown 명령에서 실행 비트를 제거 하는 라인을 추가 하여 재부팅 후 재설정하는 것을 잊지 마십시오.


0

루트 경로에서 / sbin /을 제거하면됩니다. 이렇게하면 전체 경로를 입력하여 실행해야하며 일반적으로 사고를 해결합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.