컴퓨터는 기본적으로 여러 사람이 함께 사용할 수 있도록 만들었다. 여러 사람이 함께 사용하기 위해서는 각 사람마다 식별이 필요한데, 리눅스 운영체제에서는 UID , GID를 통해 사용자를 구분한다.

UID란 사용자의 아이디를 나타내며, 0~32767의 숫자로 나타낸다.0 (root)은 리눅스 시스템의 최고관리자 계정을 뜻한다. 리눅스에서는 계정별로 권한을 부여할 수 있다. 하지만 예를들어 리눅스 계정이 10~20개 정도 된다고 생각하면 계정 하나 하나 권한을 변경하기는 쉽지 않을 것이다. 그래서 group 이라는 개념을 넣어두었다. 이 그룹끼리 접근할 수 있는 영역, 파일들을 쉽게 설정해줌으로써 일을 줄이고 관리의 효율성을 높일 수 있다.
기본적으로 계정이 생성될 때 group을 따로 지정해주지 않으면 해당 계정의 이름으로 그룹을 하나 만들고 그곳에 들어가게 된다.
useradd # 계정 생성
su # 계정 변경
exit # 쉘에서 나가기
위 사진과 같이 jinwoochae 라는 계정으로 이동하면 모양이 조금 바뀐 걸 확인할 수 있다. 이 때 이 계정의 id 정보를 보면 uid,gid 번호가 동일한 것을 확인할 수 있는데, 이유는 계정을 생성할 때 어떤 그룹인지 따로 지정을 하지 않았기에 jinwoochae 라는 계정의 이름 그대로 아이디를 생성한 뒤, 그룹으로 부여된 채 계정이 생성되었기 때문이다.
cat 명령어를 통해 리눅스 시스템에 등록된 계정 정보들이 담긴 /etc/passwd 파일을 확인해보았다.
cat /etc/passwd

/etc/passwd 파일에는 리눅스 계정 하나당 한 줄씩 정보가 저장된다. 그러니 위 사진에 보여지는 줄 수 만큼의 계정이 존재하는 것이다. 맨 위에 있는 root 계정을 기준으로 각각 어떤 의미를 가지고 있는지 알아보았다.

/etc/passwd 파일에서 X 라고 되어있는 부분에 비밀번호 표시가 되어 있었지만 보안상의 이유로 비밀번호 자리에 X 로 대체한 후 이 정보들을 안전한 /etc/shadow 라는 파일에 옮겨두었다고 한다. 이 때 /etc/shadow 파일은 비밀번호를 쉽게 알아낼 수 없게 HASH(일방향 해시 함수) 처리를 해둔다. HASH(일방향 해시 함수) : 입력값을 고정된 길이의 해시 값으로 변환하는 함수로, 이 변환 과정에서 정보의 손실이 일어나기 때문에 입력값을 복원할 수 없는 함수이다. 입력과 출력이 각각 한 개씩 존재하는데,
입력:메시지(message)
출력:해시값(hash value)
일방향 해시 함수는 메시지를 기초로 해시 값을 계산한다. 일방향 함수의 단순 설명을 위해 아래와 같이 간단한 예를 들어 표현을 해보았다.
입력: 234579
처리: 입력되는 숫자를 23으로 나누는 메커니즘
출력: 그 몫을 소수로 표시했을 때 소수점 이하 7자리부터 10자리까지 4자리 숫자
입력: 234579
처리: 234579÷23
출력: 5217
몫: 10199.08695652174... 이므로 7자리부터 10자리의 수는 5217
해시 값의 길이는 메시지의 길이와는 관계가 없다. 메시지가 1비트라도, 1메가바이트라도, 100기가바이트라도 일방향 해시 함수는 고정된 길이의 해시 값을 출력한다.
이 해시 함수의 종류와 관련 용어들이 워낙 많고, 공부를 해야 하는 범위가 넓기 때문에 따로 공부한 내용들을 잘 정리해서 추후에 포스팅을 하도록 하겠다.
uid
gid
사용자 정보
로그인 쉘
# : 루트 계정
$ : 일반 사용자 계정
su : switch user 의 줄임 명령어로 일반 사용자로 변환한다.