6.6. 리눅스 패스워드 & 섀도우 파일 형식

전통적인 유닉스 시스템에서는 단방향 암호화가 된 패스워드를 포함하여 사용자 계정 정보를 ``/etc/passwd'' 라는 텍스트 파일에 보관한다. 이 파일은 (예를 들어 ``ls''와 같은) 수많은 도구에 의하여 -- 예를 들어, 파일의 소유자 이름을 보여주기 위하여 사용자 번호와 사용자 이름을 매칭하는데 -- 사용되므로 누구든지 읽을 수 있도록 되어있다. 결과적으로 이는 어느 정도 보안상의 위험이 된다.

계정 정보를 저장하는 또 하나의 방법은, 내가 항상 사용하는 방법인데, 섀도우 패스워드 형식을 같이 사용하는 것이다. 이 방식은 전통적인 방식과 결합하여 /etc/passwd 파일은 호환성있는 형식으로 정보를 저장한다. 단, 패스워드는 (실제로 /etc/passwd 파일에 저장하지 않고) 대신 "x" 한글자만 넣어둔다. 두번째 파일인 ``/etc/shadow'' 파일이 암호화된 패스워드와 그 외의 정보, 즉 패스워드 유효기간 등을 저장한다. /etc/shadow 파일은 루트 계정에 의하여만 읽을 수 있기 때문에 보안상의 위험은 줄어들게 된다.

다른 리눅스 배포판은 섀도우 형식을 사용하기 위해서는 섀도우 패스워드 수트를 설치하도록 되어 있는데 비하여 레드햇에서는 간단히 할 수 있다. 두개의 형식을 바꾸기 위하여는 (루트로서) 다음과 같이 타이핑하면 된다:

  /usr/sbin/pwconv   섀도우 형식으로 변환
  /usr/sbin/pwunconv 전통형식으로 되돌아 감

섀도우 패스워드를 사용하는 경우에, ``/etc/passwd'' 파일은 계정 정보를 담고 있으며 그 모양은 다음과 같다:

smithj:x:561:561:Joe Smith:/home/smithj:/bin/bash

한 줄의 각 항목은 ":" 콜론 문자에 의하여 분리되며 그 내용은 다음과 같다:

사용자에게 쉘 계정을 제공하고 싶지 않을 때도 있다. 그럴 때에는 에러 메시지를 보여주고 사용자가 로그 오프 시켜버리는 스크립트를 만들어서 그 이름을 예를 들어 ``/bin/sorrysh'' 라고 한 뒤 이 스크립트를 그런 사용자의 디폴트 쉘로 지정하면 된다.

참고: 주의: 예를 들어, 웹 페이지를 갱신할 수 있도록 "FTP" 전송을 허용하여야 한다면 쉘 계정은 ``/bin/bash'' 로 해주어야 한다 -- 대신 사용자의 홈 디렉토리로 로그인하는 것은 막을 수 있도록 특별한 방법으로 셋업을 해주어야 한다. 이에 대한 자세한 내용은 7.1절 을 참조하시요.

``/etc/shadow'' 파일은 패스워드와 사용자 계정의 유효기간 등을 담고 있으며 그 모양은 다음과 같다:

smithj:Ep6mckrOLChF.:10063:0:99999:7:::

passwd 파일과 마찬가지로 섀도우 파일도 ":" 콜론 문자로 각 항목을 구분하며 각각은 다음과 같다: