본문 바로가기
CS

[Linux]sudo 보안을 위한 TTY 모드 이해하기

by seongjko 2023. 6. 24.
728x90

1. TTY(Teletypewriter)의 역사 

- TTY 전신은 teleprinter다. 메시지를 보내려면 메시지를 받는 쪽의 teleprinter 앞에 사람이 앉아서 메시지를 일일이 받아 적어야 했다. 즉, 통신이 이뤄지기 위해서는 반드시 두 명의 운영 요원이 동시에 teleprinter 앞에 상주하고 있어야 통신이 가능했던 데다 두 명 모두 모스 부호를 알아야만 소통이 가능했기 때문에 많은 제약과 한계가 있었다. 

- 그래서 등장한 것이 teletypewriter이다. 모스 부호 대신 키보드로 소통을 하게 되면서 운용자가 알파벳만 알고 있으면 통신을 할 수 있게 되었다. 거기다 print된 메시지를 주고받기 때문에 두 명의 운영 요원이 동시에 기계 앞에 상주할 필요가 없게 되었다. 한밤중이더라도 메시지를 보내놓기만 하면 다음 날 아침에 메시지를 받는 쪽이 일어나서 읽으면 되므로 훨씬 통신이 자유로워졌다.

 

2. linux TTY 모드란?

- 결론부터 말하자면 TTY 모드는 오로지 유저가 로그인된 터미널 세션에서만 sudo가 동작할 수 있도록 하는 모드다. 

- 사용자가 로그인이 되어있다는 명확한 증거(유저가 로그인된 터미널 세션)가 있을 경우에만 sudo가 동작할 수 있도록 한다.

- 물리적 TTY 시절에는 기계 앞에 사람이 앉아서 직접 타이핑하는 게 당연했지만, 지금은 cron job이나 daemon 같은 자동화 프로그램도 sudo를 실행할 수 있다.

- TTY 모드는 이런 백그라운드 프로세스의 sudo 실행을 차단하고, 오직 사용자가 직접 로그인한 터미널에서만 sudo를 허용한다.

 

참고 

https://itsfoss.com/what-is-tty-in-linux/

 

What is TTY in Linux?

Sooner or later, you'll come across the term tty while using Linux. Learn what it is and what is its significance.

itsfoss.com

https://stackoverflow.com/questions/67985925/why-would-i-want-to-require-a-tty-for-sudo-whats-the-security-benefit-of-requi

 

Why would I want to require a tty for sudo? What's the security benefit of requiring it?

I'm currently doing a project for my school aimed at creating a server in a VM. One of the requirements of the subject was to install sudo on an emulated Debian Linux, with the following field in the

stackoverflow.com