리눅스 자동 로그아웃 설정

TMOUT 로그

TMOUT 쉘 환경 변수를 설정하면 지정한 시간동안 쉘과 상호작용, 키보드 입력이나 마우스 사용이 없을 경우에 자동으로 로그아웃을 해주게 된다. 그런데, 이렇게 로그아웃을 할 때에 시스템에는 어떤 로그를 남길까?

어뜻 보면 Client 로부터 접속이 차단된것 처럼 로그가 남지고 있다. 현장에서 이걸 보고 사용자가 로그아웃 된 것으로 해석하는 경우가 많은 이유이기도 하다. 하지만 쉘에서 보면 다음과 같다.

이렇게 로그가 다르게 남는 이유가 무엇을까?

Shell vs SSHD 서비스

쉘은 sshd 서비스를 이용해 접속하게 되면 받게 되는 사용자 인터페이스다. 굳이 따지자면 sshd 위에 쉘이 작동하고 있다고 볼 수 있다. TMOUT 설정은 쉘에 환경변수임으로 이로 인해서 작동되는 것은 결국 쉘의 상호작용을 이용해서 동작하게 된다. 앞서 쉘에 로그를 보면 자동 로그아웃이라고 되는데, 이렇게 되면 sshd 입장에서 쉘에서 사용자에 의해서 로그아웃 한 것으로 보이게 된다. 사람이 직접 로그아웃을 하지 않았지만 쉘을 이용해서 로그아웃을 한것임으로 결국 사용자가 로그아웃을 한 것과 같다.

결국 SSHD 에서는 사용자로부터 로그아웃이 된 것으로 기록하게 된다.

clientaliveinterval

sshd 설정에 위와같은 설정이 있다. 이 설정을 자동로그아웃 설정으로 오해하는 경우가 있는데, 자동로그아웃과는 아무런 관련이 없다. sshd 의 접속 유지를 위해서 특정 시간 간격으로 클라이언트에게 패킷을 보내도록 하는 설정이다. 자동 로그아웃은 쉘에서 작동되는 것으로 sshd 의 위 작업과는 아무런 관련이 없다. sshd 로 접속이 유지되어야 쉘이 작동되는 것임으로 이 설정은 그야 말로 sshd 의 TCP 연결이 지속되고 있는지를 체크하기 위한 것에 불과 하다.

기본값은 0 으로 이는 클라이언트에게 패킷을 보내지 않는다는 것으로 TCP 연결이 살아 있는지를 체크하지 않겠다는 뜻이다.

systemd-logind

systemd 차원에서 로그인 세션 자동 로그아웃을 설정할 수 있다. 다음과 같이 설정파일을 작성한다. 파일 없으면 그냥 만들어도 되고 있으면 아마도 코멘트처리되어 있을 것이니, 그것을 활용하면 된다.

세션이 Idle 상태가 된지 60초가 지나면 세션을 정지(stop) 하라는 설정이다. 이렇게 한 후에 systemd 를 재시작해줘야 한다.

이렇게 한 후에 실제 자동로그아웃이 되면 남는 로그는 다음과 같다.

쉘을 이용한 자동로그아웃시의 로그와는 다르다. sshd-session 이 error 코드가 찍히는게 특이하다. 거기다 systemd-logind: Removed session 5 라고 해서 정확하게 systemd-logind 로 인해서 세션이 종료됐음을 알려주고 있다.

한가지, 위 설정은 시스템 글로벌 설정이다. 모든 시스템 사용자에게 모두 적용이 된다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다