접속 및 로그인

리눅스에서 로그인(Login)이란, 시스템에 접근하기 위해 필요한 과정

로그인

리눅스 시스템에 접속을 하기 위해서는 먼저 먼저 사용자 로그인 과정을 해야 함.

로그인이란?

리눅스에서 로그인(login)은 사용자가 시스템에 접근하기 위해 사용하는 프로세스

로그인 과정에서 사용자는 자신의 계정 이름과 비밀번호를 입력하여 인증을 받게 됨.

→ 인증이 완료되면, 시스템은 사용자가 접근할 수 있는 리소스와 권한 등을 정해주고, 로그인된 사용자를 위한 작업 환경을 생성해줌

리눅스에서는 다중 사용자 시스템을 지원하기 때문에, 여러 사용자가 동시에 로그인할 수 있음. 각 사용자는 자신의 계정 정보로 로그인하여 각자의 작업을 수행

로그인은 보안적인 측면에서 매우 중요. 그래서 올바른 인증 절차를 거치지 않고 로그인을 시도하면, 시스템은 접근을 차단. 또한, 로그인 정보를 잘못 관리하거나 로그인 시도에 대한 로그를 제대로 기록하지 않으면 보안상 위험에 노출될 수 있어, 로그인 프로세스는 시스템 보안을 유지하기 위해 중요한 부분 중 하나.

로그인 프로세스

리눅스에서 로그인시에는 다양한 내부 프로세스들이 실행 됨. 이러한 내부 프로세스들은 사용자의 로그인 세션을 설정하고, 환경 변수를 초기화하며, 초기화된 셸을 시작.

  • 로그인 프로세스(login process): 사용자가 로그인하면, 로그인 프로세스가 사용자 계정의 정보를 확인하고, 사용자의 셸을 실행합니다. 이 프로세스는 로그인한 사용자를 새로운 세션에 할당하며, 사용자의 환경 설정 파일을 로드 함. 이러한 로그인 프로세스는 init 또는 system 프로세스 중 하나에 의해 관리되며, 일반적으로 getty 프로세스가 로그인 프롬포트 제공하고, log in 프로세스가 로그인 인증을 처리하고, 적절한 셀을 시작 함. 이러한 프로세스들은 init 또는 systemd 프로세스에 의해 제어되므로 시스템의 안정성과 보안을 유자하기 위해서 이러한 프로세스들의 구성 및 동작 이해해야함.
  • 셸 프로세스(shell process): 로그인 프로세스가 사용자의 셸을 실행하면, 셸 프로세스가 시작. 셸은 사용자가 입력한 명령어를 처리하고, 실행 결과를 출력. 셸은 사용자의 세션 동안 계속 실행되며, 사용자가 로그아웃하면 종료.
  • init 프로세스(init process): init 프로세스는 시스템 부팅시 시작되며, 사용자의 로그인 세션을 설정하는 역할. init 프로세스는 시스템에서 사용하는 다양한 서비스들을 시작하고, 관리. 초기 버전의 리눅스에서는 init 프로세스가 로그인 프로세스를 관리했지만, 최신 버전에서는 systemd 프로세스가 이를 대신 수행 함.
  • systemd 프로세스(systemd process): systemd 프로세스는 최신 리눅스 배포판에서 사용되는 초기화 시스템. systemd는 시스템 부팅시에 로드되며, 다양한 서비스들을 실행하고 관리. systemd는 로그인 세션 관리 뿐만 아니라, 다양한 시스템 관리 작업을 수행 함.

이러한 내부 프로세스들은 사용자가 로그인할 때마다 실행. 이들 프로세스들은 사용자의 세션을 초기화하고, 필요한 서비스를 시작하며, 사용자의 환경을 설정 함. 이들 프로세스들은 시스템과 사용자 간의 상호작용을 가능하게 하며, 사용자가 시스템을 보다 효율적으로 사용할 수 있도록 도움을 줌.

로그인 기록

리눅스는 접속을 하는 모든 사용자의 로그인을 기록합니다.

로그인 기록

리눅스에서 로그인 기록(login record)은 시스템에 로그인한 사용자들의 정보와 로그인 시도에 대한 정보를 기록하는 것을 말합니다.

로그인 기록은 시스템 보안을 강화하는 데 중요한 역할을 합니다. 이 로그는 보안 관리자가 시스템에 접근한 사용자 및 시간을 추적할 수 있으며, 필요한 경우 불법적인 접근을 추적하고 예방할 수 있습니다.

로그인 기록은 시스템 로그 파일에 기록됩니다. 로그 파일은 /var/log 디렉토리에 위치하며, 로그인 기록은 /var/log/auth.log 또는 /var/log/secure 파일에 저장됩니다.

로그인 기록에는 다음과 같은 정보들이 포함됩니다.

  • 사용자 이름과 IP 주소
  • 로그인 시도 시간
  • 로그인 성공 여부
  • 실패한 로그인 시도 횟수
  • 실패한 로그인 시도 시간

로그인 기록을 정기적으로 모니터링하고 검토하여, 보안 관련 이슈를 감지하고 처리할 수 있습니다.

접속기록

리눅스는 모든 로그인 기록을 /var/log/wtmp에 기록합니다.

  • 모든 사용자의 접속 기록 보기: last
perlCopy code
$ last

  • 특정 사용자의 접속 기록 보기: last [username]
perlCopy code
$ last john

  • 특정 시간 이전의 모든 사용자의 접속 기록 보기: last -t [time]
perlCopy code
$ last -t 20220101000000

위의 예시에서, 20220101000000은 2022년 1월 1일 00시 00분 00초를 나타 냄.

  • 지난 달의 모든 사용자의 접속 기록 보기: last -F
perlCopy code
$ last -F

위의 예시에서 -F는 “full month”를 의미하며, 이를 사용하면 지난 달의 모든 사용자의 접속 기록을 볼 수 있도록 함

접속해제

로그아웃

리눅스에서 로그아웃(Logout)이란, 사용자가 현재 작업 중인 세션을 종료하고 시스템에서 로그아웃하여 계정에서 로그아웃하는 것.

로그아웃 개념

로그아웃은 컴퓨터 시스템에서 로그인한 사용자가 자신의 세션을 종료하고 시스템을 나가는 것. 로그아웃을 실행하면 현재 실행 중인 프로세스가 모두 종료되고, 사용자의 작업 영역과 설정 등이 저장되어 다음 로그인 시 복원되지 않음 . 로그아웃은 다른 사용자가 해당 컴퓨터나 시스템에 접근할 수 없도록 보안 상 중요한 역할.

보통 로그아웃은 로그인한 사용자가 작업을 마치고 시스템을 안전하게 종료하기 위해 수행.

로그아웃 프로세스

리눅스에서 사용자 계정이 로그아웃하면, 다음과 같은 내부 과정이 일어남.

  • 로그아웃 프로세스 실행: 사용자가 로그아웃을 실행하면, 로그아웃 프로세스가 실행. 이 프로세스는 로그아웃을 위한 여러 작업을 수행하고, 다음 단계를 진행.
  • 세션 종료: 로그아웃 프로세스는 현재 사용자의 세션을 종료. 세션은 사용자가 로그인한 후부터 로그아웃할 때까지의 작업 환경과 연결된 일련의 프로세스와 리소스를 나타 냄.
  • 프로세스 종료: 로그아웃 프로세스는 현재 사용자의 모든 프로세스를 종료. 이는 사용자가 실행한 모든 프로그램, 쉘 세션 등을 종료. 종료되지 않은 프로세스는 시스템 자원을 계속 점유하므로, 로그아웃 이전에 반드시 종료.
  • 로그아웃 메시지 출력: 로그아웃 프로세스는 사용자에게 로그아웃이 완료되었다는 메시지를 출력. 이 메시지는 로그아웃 성공 여부를 확인할 수 있는 지표가 됨
  • 시스템 자원 회수: 로그아웃 이후, 사용자가 사용한 시스템 자원(메모리, 파일 디스크립터 등)은 시스템에 다시 반환. 이는 다른 사용자들이 시스템을 사용할 때 자원의 효율성과 안정성을 유지하는 데에 중요한 역할.
  • 로그아웃 기록 작성: 로그아웃 프로세스는 시스템 로그에 로그아웃 이벤트를 작성. 이 기록은 보안 및 감사 목적으로 사용되며, 시스템의 이상 징후를 발견할 때 중요한 정보가 .

로그아웃 방법

리눅스에서 로그아웃을 하는 방법은 다양합니다. 일반적으로는 다음과 같은 방법을 사용합니다.

x-window

X-Window에서 로그아웃 하는 방법

데스크톱 환경에서는 주로 우측 상단의 로그아웃 버튼을 클릭하거나, 시스템 메뉴에서 로그아웃을 선택하여 로그아웃합니다.

X-윈도우에서 로그아웃

바탕화면 오른쪽 위 ▼ 아이콘, [root], <로그아웃>을 이어서 클릭

단축키 사용

일부 데스크톱 환경에서는 Ctrl + Alt + Delete 등의 단축키를 사용하여 로그아웃할 수 있음.

콘솔

콘솔에서 로그아웃 하는 방법

터미널에서 logout 또는 exit 명령어를 입력.

logout

logout 명령은 현재 로그인된 사용자의 세션을 종료하는 명령. 사용자가 로그아웃하면, 시스템은 현재 사용자의 프로세스와 작업을 종료하고, 모든 리소스를 해제.

일반적으로 logout 명령은 로그아웃하려는 사용자의 터미널에서 실행 됨. 사용자는 이 명령어를 실행하면 로그아웃되며, 다시 로그인할 수 있게 됨.

logout 명령은 exit 명령어와 유사합니다. 하지만 exit은 셸 세션을 종료하는 데 사용되며, logout은 현재 사용자의 로그인 세션을 종료하는 데 사용.

exit

리눅스에서 exit 명령은 현재 을 종료하는 명령어. 쉘(shell)은 사용자와 리눅스 커널 사이에 인터페이스 역할을 하는 프로그램으로, 명령어를 입력받아 해석하고 실행하는 등의 작업을 수행.

exit 명령을 실행하면 현재 쉘에서 실행중인 모든 작업(process)이 종료되고, 쉘이 종료 됨. 만약 여러 개의 쉘이 실행 중인 경우, exit 명령을 실행한 쉘만 종료되고 다른 쉘은 계속해서 실행 됨.

또한, 쉘은 종료되었지만 로그인한 사용자 계정은 여전히 유효 함. 따라서 로그인한 상태에서 exit 명령을 실행하면 로그아웃하지 않고 로그인 상태를 유지한 채로 현재 쉘만 종료 됨. 이 경우, 새로운 쉘을 열거나 다른 터미널에서 로그아웃 명령을 실행해야 로그아웃할 수 있음.

logout과 exit 명령에 대한 차이점

logout과 exit은 모두 현재 로그인된 세션을 종료하는 명령어. 일반적으로 로그아웃을 할 때는 logout 명령어를 사용하며, 현재 실행 중인 셸을 종료하려는 경우에만 exit 명령어를 사용. 하지만 그들 사이에는 몇 가지 차이점이 있음 .

사용 가능한 셸의 종류가 다름

exit은 현재 실행 중인 을 종료. 즉, 사용자가 현재 로그인한 셸과 같은 종류의 셸이 이미 실행 중인 경우에만 사용할 수 있음. 반면, logout은 현재 로그인한 세션의 로그아웃을 수행하기 위해 로그인 프로세스가 실행하는 셸의 종류와 상관없이 언제나 사용할 수 있음.

로그아웃 전에 처리해야 할 명령어나 작업이 있는 경우 exit을 사용할 수 없음

exit은 현재 실행 중인 셸에서 먼저 모든 작업이 완료되어야 하며, 이 작업이 완료되면 자동으로 세션을 종료. 따라서, 로그아웃 전에 다른 작업을 수행하려는 경우에는 logout 명령을 사용해야 함.

로그아웃 전에 세션을 저장하려는 경우 logout 명령어를 사용해야 함

logout 명령어는 로그아웃하기 전에 현재 세션을 저장하고, 다음 로그인 시에 이전 세션을 복원하는 작업을 수행할 수 있음. 반면에 exit 명령어는 세션을 저장하지 않고 바로 종료하기 때문에 이전 세션을 복원할 수 없음.

SSH 접속에서 로그아웃

원격으로 SSH 접속한 경우, exit 또는 logout 명령어를 입력하여 로그아웃 함. 이 외에도 다양한 방법으로 로그아웃할 수 있음.

시스템 종료와 차이점

리눅스에서 shutdown 명령어는 시스템 전체를 종료하거나 다시 시작하는 명령어. 반면에 logout 명령어는 현재 로그인한 세션을 종료하고, 로그인 화면으로 돌아가는 명령어.

즉, shutdown 명령어는 시스템 자체를 종료 또는 재시작하는데 사용되며, logout 명령어는 현재 로그인한 사용자 세션을 종료하여 로그인 화면으로 돌아가는데 사용 .

서브목차