[Linux] 계정, 비밀번호와 권한

Shadis·2024년 5월 15일

Linux

목록 보기
7/9

다중 이용자 운영체제, Linux

현대에는 데스크탑, 노트북, 스마트폰 등 한 명의 사람이 가지고 있는 컴퓨터가 여러대이다.

하지만 옛날에는 컴퓨터가 귀했기 때문에 하나의 컴퓨터(커널)을 여러 사용자가 함께 사용해야 했다.

그랬기 때문에 Linux는 다수의 user가 하나의 컴퓨터(커널)을 이용할 수 있는 다중 사용자 운영체제이다.

User 생성과 password 설정

User 생성

Linux에서 adduser 명령어를 사용하면 새로운 user를 추가할 수 있다.

하지만 아무 옵션 없이 adduser 명령어를 사용하면 새로 생성되는 user의 home 디렉토리가 만들어지지 않는다.

-m 옵션을 넣어야 새로 생성되는 user의 home 디렉토리가 만들어진다.

처음 새로운 user를 생성할 때 home 디렉토리를 만들지 않았다면 mkdir, chown 명령어를 통해 home 디렉토리를 만들고 권한을 설정해주어야 한다.

password 설정

새로운 user를 만들었다면 해당 user 계정을 아무나 이용하지 못하게 password를 설정해야 한다.

passwd 명령어를 이용하면 새로운 user 계정에 password를 설정할 수 있다.

/etc/passwd

/etc/passwd 파일에는 해당 컴퓨터에 등록되어있는 user에 대한 정보가 담겨져 있다.

/etc/passwd 구조

user 계정에 대한 정보는 다음과 같은 구조로 정리되어 있다.

이름:비밀번호(숨겨져 있어서 x라고 표현되어있음):uid:gid:별명:홈 디렉토리:기본 shell

user의 개수가 많은 이유

난 분명 처음 가상머신을 실행할 때 만든 계정 하나, 테스트 한다고 만든 계정 하나, root 계정 하나 이렇게 3개만 있어야 할텐데 왜이렇게 생각보다 많은 계정들이 있는 것일까?

사용자 계정이 아닌 계정들은 각자 정해진 역할만을 수행하는 전용 계정들이다.

예를 들면, mail 계정은 mail과 관련된 프로그램만, daemon 계정은 daemon과 관련된 프로그램만 수행하는 것이다.

이런 식으로 각 서비스만을 수행하는 계정들을 둔 이유는 이런 식으로 하는 것이 성능 및 보안 부분에서 뛰어나기 때문이다.

mail 계정은 mail 프로그램을 실행시키는데 필요한 자원과 권한을 주고 daemon 계정은 daemon 프로그램은 실행시키는데 필요한 자원과 권한만 주는 것이다.

이런 식으로 계정을 분리해 둠으로써 각 프로그램이 독립적으로 실행되게 만들어 프로그램간의 충돌을 방지하고 자원을 효율적으로 사용할 수 있도록 한다.

/etc/shadow

/etc/passwd의 권한을 보면 root 계정 권한 뿐만 아니라 일반적인 계정 권한으로도 /etc/passwd 파일을 볼 수 있다.

따라서 /etc/passwd 파일에 비밀번호를 저장하는 것은 보안 취약점이 될 수 있다.

그래서 비밀번호와 비밀번호에 대한 정보는 /etc/shadow 파일에 저장한다.

비밀번호 구조

${hash 알고리즘 번호}${solt}${hash value}
  • hash 알고리즘 번호
    1 : MD5
    2 : BlowFish
    5 : SHA-256
    6 : SHA-512

보통 비밀번호가 걸려있는 계정은 위의 구조를 따르는 값이 존재한다.

하지만 이 비밀번호 구조를 따르는 값 대신 특별한 키워드가 적혀있는 경우도 존재한다.

  • 특별 키워드
    * : 비밀번호가 애초에 없어가지고 비밀번호를 통한 계정 로그인을 지원하지 않는 계정
    ! : 비밀번호의 존재 유무와 상관없이 비밀번호를 의도적으로 비활성화 시킬 때 사용하는 키워드

이 두 가지 특별 키워드로 인해 비밀번호를 통한 로그인이 불가능한 계정이라도 open key 방식을 사용한 ssh 로그인이나 다른 user 계정으로부터 전환하는(su) 등의 방법을 통해서 로그인이 가능하다.

/etc/shadow 구조

이름:비밀번호:마지막 변경일:최소 사용기한:최대 사용기한:경고 일수:비활성화 일수:계정 만료일

최소 사용기한 : 비밀번호를 바꿀 수 없는 기간
최대 사용기한 : 비밀번호를 바꿔야 하는 기간
경고 일수 : 최대 사용기한 이전에 비밀번호를 변경해야 한다고 경고를 보낼 기간
비활성화 일수 : 비밀번호 최대 사용기한이 지난 이후 계정의 비밀번호를 비활성화시킬 때까지 기다릴 유예기간
계정 만료일 : 비밀번호와 관계 없이 계정이 만료되는 기간

비밀번호 expire, inactive, 계정 expire

Linux에서의 계정의 상태는 정상적인 상태를 제외하고 3가지로 분류되는 것 같다.

그리고 해당 분류의 기준은 /etc/shadow 파일에 적혀져있는 내용과 관련되어있다.

비밀번호 구조의 !, *와는 독립적으로 적용된다.

비밀번호 expire

계정의 비밀번호가 만료된 상태.

/etc/shadow의 비밀번호 최대 사용기한이 지나고 and 비활성화 일수가 지나지 않은 경우.

기존의 비밀번호로 로그인 하려고 하면 강제로 비밀번호를 바꾸도록 함.

비밀번호만 만료된 상태이기 때문에 ssh 키를 이용한 로그인은 가능.

비밀번호 inactive

계정의 비밀번호가 작동 중지된 상태.

/etc/shadow의 비밀번호 최대 사용기한이 지나고 and 비활성화 일수가 지난 경우.

비밀번호를 통한 로그인 불가능.

비밀번호만 작동 중지된 상태이기 때문에 ssh 키를 이용한 로그인은 가능.

계정 expire

계정 자체가 만료된 상태.

/etc/shadow의 비밀번호 관련 일수와 관계 없이 계정 만료일이 지난 경우.

계정 자체가 만료되었기 때문에 비밀번호 뿐만 아니라 ssh 키를 이용한 로그인도 불가능.

profile
HGU 20 김민석

0개의 댓글