2022 데이터 사이언스/Linux

10. 사용자와 그룹(1): 사용자 정보

gool 2022. 5. 23. 20:04
사용자 계정이란 장치를 사용하기 위해 운영체제에서 로그인하는 계정이다.

 

 

 

사용자 계정은 누가 어떤 작업을 했는지 명확하게 알기 위해 개개인에게 부여되며,

해당 계정을 이용하여 파일 및 디렉토리의 권한 설정이 가능하다.

동일한 파일에 a 사용자는 접근 가능하도록, b 사용자는 접근 불가능하도록 설정할 수도 있다.

 

집에서 혼자 사용하는 컴퓨터는 공용 계정으로 로그인해도 무방하다.

하지만 정석적으로는 사용자마다 계정을 따로 지정해주어야 한다.

 

 

그룹이란 사용자 계정을 묶어서 관리하기 위해 사용하는 계정이다.

관리자는 그룹의 생성/수정/삭제와 그룹에 사용자 계정을 소속시키는 작업 등을 한다.

그룹에 권한을 부여하여 그룹에 소속된 사용자들이 동일한 권한을 적용받도록 하기도 한다.

그룹은 관리자가 제어하므로 일반 사용자들은 그룹에 손을 댈 일이 없다.

 

 

 

사용자 정보

 

Linux에는 사용자 계정 정보와 관련된 파일이 세 가지 존재한다.

/etc 디렉토리 내부의 passwd, shadow, login.defs 파일이다.

passwd, shadow 파일의 경우 한 줄에 사용자 한 명의 정보가 출력되는데,

파일의 내용을 읽고 이해할 줄 알아야 한다.

 

 

1) /etc/passwd

 

passwd는 사용자의 일반 정보가 들어있는 파일이다.

아래 ' : '로 분리된 사용자 정보의 내용이 각각 무엇을 의미하는지 살펴보면 다음과 같다.

 

 

  • itbank (사용자명) : 뒤의 정보들이 어느 사용자의 정보인지 표시
  • x  (암호) : 보안 상의 이유로 passwd 파일에는 암호를 표시하지 않음
  • 1000 (UID) : 해당 사용자의 고유 번호 출력
  • 1000 (GID) : 사용자가 주요 그룹으로 사용 중인 그룹의 고유 번호 출력
  • dust (별칭) : GUI 환경에서 표시되는 이름으로, 계정명이나 ID로 사용하지 않음
  • /home/itbank (사용자의 홈 디렉토리) : 로그인이나 ~ 기호를 사용할 때 참조
  • /bin/bash (shell) : 사용자 계정이 사용하는 shell

 

 

* UID, GID

User ID(사용자에게 부여되는 고유 번호), Group ID(그룹에게 부여되는 고유 번호)를 의미한다.

시스템이 사용자나 그룹을 빠르게 인식할 수 있도록 계산에 필요한 리소스를 줄이는 데 사용한다.

  • 0 : root
  • 1 ~ 999 : system or service 계정
  • 1000 ~ : 일반 사용자 & 그룹 계정

 

 

* shell

운영체제에 명령어를 전달해주는 명령어 해독기 역할을 한다.

현재 시스템에 설치된 shell의 목록은 /etc/shells 파일에서 확인할 수 있다.

 

 

현재 sh, bash, tcsh, csh 네 개의 shell이 설치되어 있는 것을 볼 수 있다.

/bin이 /usr/bin 쪽으로 링크되어 있으므로 결국 같은 shell을 의미한다.

 

passwd 파일에 저장된 정보 중 shell 위치에 /sbin/nologin이 있는 경우가 있다.

system or service 계정에 부여되는 것으로,

명령어 사용 shell이 아니라 로그인을 하지 못하게 만드는 역할을 한다.

 

 

 

2) /etc/shadow

 

shadow는 사용자의 고급 정보가 들어있는 파일이다.

아래 굉장히 긴 파일 내용을 다음과 같이 축약해 이해할 수 있다.

 

itbank:$6$~~$~~~::0:99999:7:::

 

 

  • itbank (사용자명) : 뒤의 정보들이 어느 사용자의 정보인지 표시
  • $6$~~$~~~ (암호) : 사용자의 비밀번호를 암호화하여 저장
  • 0 : 암호 최소 사용 일자(암호 변경 시 최소 며칠 동안은 해당 암호를 사용해야 함)
  • 99999 : 암호 최대 사용 일자(= 만료 일자)
  • 7 : 암호 만료 전 경고 일자(며칠 전부터 암호 만료 경고를 띄우는지)

 

* 뒤의 두 칸이 빈 칸으로 남아있지만, 이 후의 정보들은 거의 사용하지 않으므로 생략한다.

 

 

$6으로 시작하는 암호 부분은 같은 비밀번호를 사용하더라도 모두 다르게 암호화된다.

다르게 저장되는 것을 확인하기 위해 현재 비밀번호와 같은 itbank로 비밀번호를 변경해준다.

 

* 사용자 암호 변경

비밀번호를 변경할 때는 passwd 명령어가 사용된다.

  • passwd : 명령어를 입력한 사용자 자신의 암호 변경(모든 사용자가 사용 가능)
  • passwd 사용자명 : 해당 사용자의 암호 변경(root만 사용 가능)

 

 

 

비밀번호는 itbank로 동일하지만 $6 뒤의 암호 부분이 다른 것을 확인할 수 있다.

새로운 비밀번호를 설정할 때마다 입력된 비밀번호를 시스템에서 난수 처리하기 때문이다.

 

또, 기존에 없던 19132라는 숫자가 생긴 것을 볼 수 있는데, 암호 생성 일자를 나타내는 부분이다.

1970년 1월 1일을 기준으로 며칠 째에 생성된 암호인지 표시한다.

단, 운영체제 설치 시 저장된 암호는 생성일자가 표시되지 않아, 앞서는 해당 부분을 볼 수 없었다.

 

 

 

3) /etc/login.defs

 

사용자와 그룹 생성 및 삭제 시 적용되는 몇몇 설정들이 저장되는 파일이다.