< /etc/passwd 설명 >

 

리눅스에 로그인 할 수 있는 사용자들의 계정 정보는 모두 파일로 관리되고 있다.

 

/etc/passwd

 

위의 파일을 확인해보면, 사용자들의 계정을 볼 수 있다.

rw-r--r-- 권한을 갖고있는 파일이라, root 사용자 외에는 수정이 불가능하다.

 

1. Username : 사용자 이름

2. Password : 해당 계정의 비밀번호. 여기 적혀있는 x 가 비밀번호는 아님. 진짜 비밀번호는 /etc/shadow 에 들어있음.

3. User ID (UID) : 계정의 유저 아이디.

    0은 root,

    1-99는 미리 정의된 계정들,

    100-999는 시스템 관리자, 시스템 계정,

    1000- 부터 실제 사용자들(사람들) 의 계정

4. Group ID (GID) : 계정의 그룹 아이디.

5. User ID Info : 사용자에 대한 추가 정보. 이를테면 유저의 full name 이나, 전화번호 같은 것들을 여기 기록함.

6. Home directory : 해당 사용자가 로그인했을 때 처음으로 접근하는 위치의 절대 경로.

    만약 이 경로가 존재하지 않는다면, 사용자가 로그인했을 때 / 위치로 가게 된다.

7. Command/shell : 해당 사용자가 사용하는 shell 의 절대 경로.

 

 

/etc/passwd 를 열어보면, 직접 넣지 않았음에도 불구하고 다양한 계정들이 존재하는 것을 볼 수 있다.

이들은 시스템이 필요해서 넣은, 시스템 계정이라고 한다.

 

리눅스에서 파일을 생성하거나 프로세스를 생성할 때 반드시 소유자를 명시하도록 되어있고,

해당 소유자의 권한을 승계하는 형태로 운영된다.

root가 만든 파일이면 root 권한을 갖고 root 의 소유파일이 된다.

root가 실행한 프로세스는 root 권한이 부여된다

 

각 시스템 계정을 만들어서 파일 생성과 프로세스 생성의 활동 범위(?)를 필요한 만큼으로 제한한다.

 

예를 들어보자.

어떤 프로세스가 /a 파일을 업데이트 하는데 실수로 /b 파일을 업데이트 하게되는 경우

시스템 계정의 권한을 갖고 있다면 에러가 나서 사용자가 알 수 있게 되겠지만

root 권한을 갖고 있다면, (/b 파일을 업데이트하는 것이

전혀 의도한 바가 아닌데도 불구하고) 에러없이 진행이 될 것이다.

 

아래 링크에서 더 자세한 설명을 볼 수 있다.

https://unix.stackexchange.com/a/197155

시스템 계정이 존재하는 이유를 해석해보자면,

많은 데몬들(프로세스들)은 (그들이 동작할 때 사용하는) 특정 하드웨어 디바이스나 특정 파일들만을 필요로 한다.

그래서 제한된 사용자 권한을 갖고 파일을 생성하거나 프로세스를 생성한다.

(위에서 말하는 시스템 계정이 제한된 범위를 만드는 용도로 사용되는 계정)

이렇게 하는 이유는 보안을 위해서이다.

혹여 프로그램 버그나 잘못된 설정등에 의해 전체 시스템이 파괴되거나 공격당하는 일이 없도록 한다.

왜냐하면 버그가 있는 프로그램은 제한된 권한만을 갖고 있을 것이고

중요한 파일을 덮어쓰거나, 프로세스를 모니터링 하지 못 할 것이기 때문.

 

참고로 시스템 계정들은 계정이 잠겨있어서 사용자가 로그인해서 사용할 수 없다.

 

 

 

참고

https://jhnyang.tistory.com/10

 

 

+ Recent posts