전공/시스템 프로그래밍(운영체제)

Linux3) 리눅스 사용자 계정

문정훈 2021. 10. 12. 21:42

1. 사용자 계정이란

컴퓨터라는 것은 실물 세계에 있는 것을 가상 세계로 연결해준다고 볼 수 있다.

사용자라는 것은 컴퓨터에서 사용자 계정을 말하는 것이다. 사용자 계정은 user ID(UID)라는 것을 통해 시스템에 존재한다. UID로 구현된 사용자는 실제로 시스템에서 UID를 가지고 유지가 된다.

 

사용자가 로그인할 시 shell이라는 것이 실행된다. 커널을 둘러싼 것이 shell인데 shell은 사용자가 입력한 명령어를 해석해서 커널에게 전달한다. 커널이 리턴하는 값을 shell이 사용자에게 전달한다(화면에 뿌려준다.) 각각의 리눅스의 각각의 프로세스는 로그인한 해당 프로세스를 실행시킨 사용자 아이디인 UID와 실제로 연결되어 있다.

 

사용자는 UID로 시스템에 저장되지만 우리는 UID를 사용하지 않고 우리에게 보여지는 우리의 계정은 user name이고 시스템이 보는 우리는 user ID(UID)이다.

 

inode 와 파일을 매핑 시키는 파일이 존재하는 것처럼 User nameUID를 매핑 시키는 파일도 존재한다. 이 파일은 /etc/passwd 아래에 존재한다.
사용자의 비밀번호는 etc/shadow 파일에 hash화 되어 존재한다.

 

 

사용자가 로그인을 하게 되면 사용자 계정을 확인하고 이것에 해당하는 UID와 연결하고, 사용자가 입력한 패스워드를 hash화 해서 etc/shadow 아래의 hash값과 비교를 한다.

 

<정리>

사용자가 우분투 리눅스에 로그인을 하게 되면 IDpassword를 입력하는데 id에 해당되는 user idetc/passwd 파일에 존재하고 etc/shadow에 있는 해쉬와된 패스워드와 사용자가 입력한 패스워드를 해쉬화해서 비교한다. 일치하면 로그인을 시켜준다.

로그인이 되면 제일 먼저 etc/passswd 파일에 있는 shall 이 실행된다.

 

shall에는 다양한 종류가 있는데 사용자가 사용하려는 shalletc/passwd 파일안에 있다.

rootUID0이다.

 

 

2. Effective UID, saved UID, filesystem UID

리눅스에서는 관리자 권한으로 접근해야 하는 파일이 있다. 이 파일들은 명령어 두무에 sudo라는 명령어를 통해 사용자를 관리자 레벨로 끌어 올려 관리자 권한 접근 파일로 접근하게 해주는 것이다.

이때 사용자 UID는 관리자 권한을 부여하겠다는 ID 가 있는데 그 아이디가 Effective ID이고 이 Effective ID를 가지고 관리자 권한으로 접근해서 작업이 끝났으면 다시 사용자 레벨로 돌려야한다. 이때 사용자 UID는 관리자 레벨로 올라가기 전에 saved UID에 저장시키기 때문에 이 saved UID를 통해 관리자 레벨에서 사용자 레벨로 다시 돌아올 수 있다.

 

Filesystem UID

파일 시스템에 접근하기 위해서는 사용자에게 새로운 UID를 부여하는데 그 이유는 시스템 리소스를 다루기(읽기, 쓰기) 때문이다.

'전공 > 시스템 프로그래밍(운영체제)' 카테고리의 다른 글

3. System Call: read, write  (0) 2021.10.16
2. System Call: open  (0) 2021.10.12
1. 시스템 구조와 시스템 라이브러리  (0) 2021.10.12
Linux2) 프로세스  (0) 2021.10.12
Linux1) 리눅스 파일  (0) 2021.10.12