운영체제/Linux / / 2018. 6. 17. 20:39

[리눅스] /etc/passwd,/etc/shadow,/etc/group파일 이란?

반응형

리눅스 파일과 프로그램에는 모두 소유자가 있어야 한다.


사용자 ID (UID) 라는 고유의 식별자를 가지며 이러한 사용자는 반드시 특정 그룹에 속해야 한다.

그룹은 시스템 관리자가 정의한다.


사용자는 여러개의 그룹에 속할 수 있고 그룹 ID (GID) 라는 식별자로 구분된다.


파일, 프로그램의 접근성은 UID,GID에 따라 달라진다.


일반 사용자 - 자신이 소유하거나 실행 권한이 주어질 때에만 접근 가능.

루트 사용자 - 시스템의 모든 파일과 프로그램에 대한 소유권이 없어도 모두 접근 가능.


/etc/passwd 파일


이 파일에는 사용자 로그인 계정, 암호화된 비밀번호, UID, 기본 GID, 이름(GECOS), 홈 디렉토리, 로그인 쉘이 저장되어 있는 파일


최신 리눅스 시스템에서는 아래 패스워드처럼 x라는 문자가 있는데 이는 시스템에서 shadow 패스워드가 사용되고 있음을 나타낸다.

모든 일반 사용자 또는 시스템상의 모든 사용자 계정은 패스워드가 반드시 있어야 한다.


사용자이름 : 패스워드 : 사용자 ID : 그룹 ID : GECOS : 디렉토리 쉘


ex) username:x:501:501:userid:/home/userid:/bin/bash

* 사용자 id uid = 0이면 루트 사용자

* GECOS 는 사용자에 대한 여러가지정보를 입력하는 곳이다. ( 여러개의 정보는 ,로 입력하고 사용자 상세정보, 성과 이름, 전화번호 등.. 입력하며 필수항목은 아니다)


/etc/shadow 파일


이 파일에는 사용자 계정에 대한 암호화된 패스워드를 저장하고 있고 패스워드 설정 기간이나 유효성 정보도 들어있다.

/etc/passwd 파일에 있는 각각의 암호화되어 있는 패스워드를 구분하기 위해 shadow 파일을 사용하기 시작했다.


해킹이 위험해지면서 아래 방법으로 shadow파일을 사용한다.

passwd파일에 암호화된 패스워드를 저장하지 않고 모든 사용자들이 읽을 수 있게 하고, 대신 shadow파일에 패스워드를 저장하여 루트사용자나 특별권한이 있는 프로그램에 의해서만(ex 로그인 프로그램) 읽을 수 있도록 한다.


그러면 passwd파일 자체를 루트 권한에 의해서만 읽기가 가능하도록 하면 안되나? 쉽지 않은 문제다.

오랜 기간 패스워드 파일을 공개해 왔기 때문에 시스템 소프트웨어들이 그에 맞추어 진화를 했다. 기존 방식을 바꾸면 일부 소프트웨어가 동작하지 않을 수 있다.


로그인 이름 :

암호화된 패스워드 :

1970년 1월 1일을 기준으로 최근에 패스워드를 변경한 날까지의 기간(일) :

패스워드를 변경한 후에 다시 변경이 가능한 날까지 남은기간(일) :

변경해야만 하는 패스워드의 유효기간(일) :

패스워드가 만료되기 전 사용자에게 미리 경고하는 기간(일) :

계정 정지 기간이 도래하기 전 패스워드를 변경할 수 있는 남은기간(일) :

1970년 1월 1일 기준, 계정이 정지된 날까지의 기간(일) :

예약항목


ex) loginname:en_password:12830:0:99999:7:::


* 유닉스 시간 : 1970년 1월 1일


1970년 1월 1일, UTC 기준 0시는 유닉스 시스템의 시작점이 되는 시점이다.

이 특정 시점을 유닉스 시간(UNIX Epoch) 라고 한다.


이 시점을 기준으로 여러 곳에서 이 시간을 초단위로 측정하고 있다. 즉, 1970년 1월 1일 00:00:00 이후 흐른 시간을 초 단위로 계산한 것이다.


유닉스 시간에서는 윤초는 무시된다. 

유닉스 계열 운영체제나 여러 다른 운영체제, 그리고 파일형식들에서 사용된다. 윤초 처리방식때문에 시간을 선형으로 표현하지 못하며, 

협정 세계시의 윤초를 표현 할수 없다.


유닉스 시간은 대다수의 유닉스 운영체제에서  date+%S 를 명령행에 입력하여 확인할 수 있다.


32비트로 표현된 유닉스 시간은 231 - 1 지난 후인 2038년 1월 19일 03:14:08 UTC에 2038년 문제를 발생시키고

이는 산술 오버플로와 관련있는 문제이다.


/etc/group 파일


이 파일에는 그룹 목록이 있으면 한 줄에 한 그룹이 표시된다.

각 그룹은 4개의 기본 항목으로 구성된다.

시스템에 접속한 사용자는 적어도 한 개의 그룹에 속한다.

그룹을 추가하려면 passwd 파일을 열어서 기본 그룹ID(GID) 에 추가하면 된다.


Group name : 그룹 이름

Group password : (선택사항) 소속되지 않은 사용자를 가입시킬때 설정하여 사용할 수 있음.

Group ID : 그룹 이름에 대응하는 번호

Group members : 콤마로 그룹원을 구분하는 그룹원 목록


ex) bin:x:1:root.bin,daemon

- bin 그룹 gid = 1 그룹원 root.bin,daemon



닷 파일 (일종의 숨김파일) - 파일명 앞에 . 이 있는 파일


.bashrc <- sh 초기화 파일, (로그인 할때) bash 설정 파일.  [개인]


-- 모든 사용자

/etc/profile

/etc/bashrc


반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유