나는 때때로 실수로 원격 시스템 종료를 사용했기 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 사용을 중단하라는 것입니다. 진짜로.