본문 바로가기

Linux & Unix

Disable Ctrl-Alt-Delete

In RHEL7, RHEL8

systemctl mask ctrl-alt-del.target
# Disable CAD

readlink /etc/systemd/system/ctrl-alt-del.target
ls -l /etc/systemd/system/ctrl-alt-del.target
# /etc/systemd/system/ctrl-alt-del.target -> /dev/null


원본 파일은 /usr/lib/systemd/system/ctrl-alt-del.target 이고, custom 파일이 /etc/systemd/system/ 에 생성된다.
원본 파일은 reboot.target 을 link 하고 있으나, mask 를 씌우면 /etc/systemd/system/ctrl-alt-del.target 이 생성되어 /dev/null 을 가리키게 된다.

그럼에도 불구하고, Ctrl-Alt-Delete 를 2초 안에 7번 이상 누르면 reboot 된다.
이를 막으려면 아래 파일에 다음 내용을 작성하여 방지할 수 있다.

/etc/systemd/system.conf

CtrlAltDelBurstAction=none


systemd 의 설정을 reload 한다.

systemctl daemon-reexec
# systemctl daemon-reexec 는 systemd 자체의 설정에 적용
# systemctl daemon-reload 는 unit file 을 reload


In RHEL6

/etc/init/control-alt-delete.conf 을 수정하거나 /etc/init/control-alt-delete.override 를 생성해서, CAD 키를 다르게 동작하게 할 수 있다.
CAD 키가 눌린 경우 init 프로세스의 동작을 설정한 파일이 control-alt-delete.conf 파일이다.
이 파일을 수정하여, reboot 되지 않도록 할 수 있다.
만약 initscripts 패키지를 업데이트하게 되면, .conf 파일에 수정해 놓은 내용이 덮어씌워져, 설정이 사라지게 된다.
그런 이유로 /etc/init/*.override 파일을 생성해서, 기본 설정을 덮어쓰게 해서 유지하는 방법이 있다.
(override 는 6.3 버전에서의 upstart 패키지 기능으로 적용되었다. upstart-0.6.5-12.el6 이상부터 적용)

cp -v /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.override
# conf 파일을 활용하여, override 파일을 만든다.


/etc/init/control-alt-delete.conf 의 원래 내용은 아래와 같다.

exec /sbin/shutdown -r now "Control-Alt-Delete pressed"


/etc/init/control-alt-delete.conf 파일을 직접 수정하거나, .override 파일을 만들어서 아래와 같이 수정한다.

exec /usr/bin/logger -p authpriv.notice -t init "Ctrl-Alt-Del was pressed and ignored"

아래 명령으로 conf or override 파일을 수정하자. (override 파일을 안 만들고, conf 에 직접 수정해 적용할 수도 있다.)

sed -i 's,^exec.*,exec /usr/bin/logger -p authpriv.notice -t init "Ctrl-Alt-Del was pressed and ignored",' /etc/init/control-alt-delete.conf
# or
sed -i 's,^exec.*,exec /usr/bin/logger -p authpriv.notice -t init "Ctrl-Alt-Del was pressed and ignored",' /etc/init/control-alt-delete.override


In RHEL5 and before

초기 스크립트인 /etc/inittab 파일에서 제어할 수 있다.

ca::ctrlaltdel:/sbin/shutdown -t3 -r now


이 부분을 삭제 또는 주석처리하거나,
또는 다른 명령을 동작하게 할 수도 있다.(로깅하기 위해)

ca::ctrlaltdel:/bin/logger -p authpriv.warning -t init "Console-invoked Ctrl-Alt-Del was ignored"


init 프로세스가 /etc/inittab 을 다시 읽어들이도록 한다.

init q