원격 시스템 종료를 비활성화하는 방법이 있습니까?

원격 시스템 종료를 비활성화하는 방법이 있습니까?

나는 때때로 실수로 원격 시스템 종료를 사용했기 sudo init 0때문에 내 rc 파일 중 하나에 다음과 같은 내용을 썼습니다.

alias sudo='sudo '
if [ $SSH_CLIENT ]; then
  alias init 'echo Never use init when ssh'
fi

그러나 rc 파일이 실행되더라도 여전히 별칭 대신 init실행됩니다 . /sbin/init그리고 전역 래퍼 스크립트를 에 추가하는 것을 좋아하지 않습니다 /usr/local/bin. 그러면 비활성화할 수 있습니까 sudo init 0? 아니면 관리자에게 도움을 요청해야 합니까?

답변1

sudo함수로 재정의되었습니다 :

sudo() if [ "$1" = init ] && [ -n "$SSH_CLIENT" ]; then
  echo >&2 "Never use init when ssh"
  return 1
else
  command sudo "$@"
fi

나중에 별칭을 확장하려는 경우 sudo에도 추가할 수 있습니다.

alias sudo='sudo '

여전히 우리 sudo함수를 호출할 것입니다.

답변2

데비안과 그 파생물에는 다음과 같은 소프트웨어가 있습니다.molly-guard이것이 바로 여러분이 원하는 것입니다. 원격 로그인이 감지되면 shutdown 명령을 가로채고 시스템 이름을 입력하여 올바른 시스템을 종료할지 확인하도록 요청합니다.

답변3

sudo문제에 대한 설명으로 볼 때 로그인할 때 SSH를 자주 사용하지 않는 것 같습니다. 스스로에게 말해야 할 것:

if [ -n "$SSH_CLIENT" ]; then
  alias sudo='echo "Reconsider your wish, you must!   "'
fi

sudo이렇게 하면 모든 호출에서 경고가 생성 됩니다 . 그래도 원한다면 를 sudo init 0입력해야 합니다 \sudo init 0. 이렇게 \하면 쉘이 별칭이 아닌 실제 명령을 사용하게 됩니다.

그러나 제가 여러분께 드리고 싶은 조언은 향후 5년 이내에 sudo 사용을 중단하라는 것입니다. 진짜로.

관련 정보