종료 명령을 제거하는 가장 좋은 방법은 재부팅을 유지하는 것입니다.

종료 명령을 제거하는 가장 좋은 방법은 재부팅을 유지하는 것입니다.

데이터 센터에 raspi 유형의 장치가 있는데 최근 실수로 화면의 잘못된 터미널에 종료 명령을 실수로 붙여넣었습니다. 옵션을 유지 shutdown -r하되 제거하는 방법이 있나요 #poweroff #shutdown -P -H?

나는 명령을 지키고 싶다 shutdown -r . 나는 시스템을 정지시키거나 IP 테이블 규칙으로 자신을 잠그는 경우 타이머를 설정하는 것을 좋아합니다. 예shutdown -r +10

답변1

systemd 기반 Linux 배포판을 사용해야 합니다. 이 경우 다음을 수행할 수 있어야 합니다.마스크poweroff 대상을 지정하여 systemd가 실행을 거부하고 전원을 끄도록 합니다. 예:

systemctl mask poweroff.target

이로 인해 재부팅 외에는 시스템을 종료하는 것이 전혀 불가능합니다. 아무 일도 일어나지 않는지 확인하세요.

Debian9 애니메이션 데모

이 경우 이 VM의 가상 전원 스위치는 더 이상 시스템을 종료하는 데 작동하지 않습니다. 그러나 여전히 완벽하게 재부팅됩니다.

물론 변경 사항을 취소하려면 대상의 마스크를 해제하면 됩니다. 그런 다음 시스템을 종료할 수 있습니다.

systemctl unmask poweroff.target

답변2

이를 달성하는 데는 몇 가지 방법이 있습니다. 하나는 sudo로 명령을 실행하고 비밀번호를 입력해야 하는 권한이 없는 일반 계정으로 작업하는 것입니다. 그런 다음 visudo를 실행하여 /etc/sudoers에 다음을 추가할 수 있습니다.

## user is allowed to execute reboot -r only
jdoe ALL=NOPASSWD: /sbin/shutdown -r *

또한 sudo 자격 증명 캐싱을 비활성화하려면 다음도 추가하세요.

Defaults timestamp_timeout=0

이렇게 하면 이전에 sudo를 사용하여 명령을 호출한 경우 자격 증명 캐싱이 방지됩니다.

예:

[root@ops ~]# su - jdoe
[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:
[jdoe@ops ~]$ sudo shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 18:51:13 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ sudo shutdown -H
[sudo] password for jdoe:
^[[A[jdoe@ops ~]$ sudo shutdown -c
[sudo] password for jdoe:

위의 예에서는 실행할 때 비밀번호를 입력할 필요가 없었지만 sudo shutdown -r +10나머지는 비밀번호를 입력해야 했습니다. 명령( ) 앞에 sudo를 입력할 필요가 없도록 하려면 sudo shutdown -r +10.bash_profile 또는 .bashrc에 다음을 추가하세요.

alias shutdown="sudo shutdown"

예:

[jdoe@ops ~]$ source ~/.bash_profile
[jdoe@ops ~]$ shutdown -r +10
Shutdown scheduled for Mon 2018-09-03 19:03:14 IDT, use 'shutdown -c' to cancel.
[jdoe@ops ~]$ shutdown -c
[sudo] password for jdoe:

권한이 없는 계정으로 작업하고 필요한 경우 sudo를 사용하여 에스컬레이션하는 것이 모범 사례입니다.

답변3

라는 도구가 있습니다.몰리 가드종료하거나 재부팅하려는 시스템의 호스트 이름을 명시해야 합니다.

데비안을 사용하지 않는 경우, 프로그램이 다소 원시적이라는 점을 고려하면 소스에서 이를 컴파일하는 것이 쉽지 않을 것입니다.

답변4

종료 실행 파일의 이름을 실수로 호출할 수 없는 이름으로 바꿉니다.

그런 다음 별칭 shutdown(whatever) -r

관련 정보