http://wiki.kldp.org/Translations/html/SysAdminGuide-KLDP/x2129.html


The Linux System Administrators' Guide: 리눅스 시스템 관리자 가이드 Version 0.6.2

Chapter 9. 사용자 계정의 관리


계정 만들기

리눅스 커널은 사용자들을 단순히 숫자로만 다룬다. 각각의 사용자는 독특한 정수로 된 user id 혹은 uid로 구별되는데, 그 이유는 문자로 된 이름보다 컴퓨터가 접근하는데 쉽기 때문이다. 커널 밖의 별도의 데이터베이스는 username을 각각의 user id에 할당한다. 이 데이터베이스는 역시 추가적인 정보를 담고 있다.

계정을 만들기 위해서는 그 사용자의 데이터베이스에 사용자에 관한 정보를 추가시키고 사용자를 위한 home디렉토리를 만들어야 한다. 사용자를 교육시키고 그 사용자에 적합한 초기 환경을 만들어 주는 것 또한 필수적이다.

대부분의 리눅스 배포본은 새로운 계정을 만드는 프로그램을 통해 사용자를 추가시킨다. 거기에는 여러 가능한 프로그램이 있는데adduser와 useradd 라는 명령 중 택일하면 된다. 또한 GUI 방식으로 사용할 수 있는 도구도 있다. 이런 작업이 이루어지는 세부과정은 좀 까다롭지만, 이런 프로그램들은 모두 일을 자동으로 처리해 준다. 계정을 직접 수동으로 추가하는 방법에 대해서는 the section called 수동으로 계정 만들기에서 설명하겠다.

/etc/passwd와 이외의 정보 파일

유닉스 시스템에 있는 기본적인 사용자 데이터베이스는 /etc/passwd이며(password file이라고도 부른다), 여기에는 모든 유효한 username과 그들과 관련된 정보가 나열되어 있다. 사용자의 정보는 한줄로 이루어져 있으며, 이것은 다시 콜론으로 구분된 7개의 영역으로 나누어진다.

  • Username.

  • Password, 암호화되어 있다.

  • 숫자로된 user id.

  • 숫자로된 group id.

  • 사용자의 실제이름이나 계정에 관한 기타 설명.

  • 홈 디렉토리의 위치.

  • 로그인 쉘(또는 로그인시 실행할 프로그램).

이 파일의 형식은 passwd 매뉴얼 페이지에 보다 자세히 설명되어 있다.

어떤 사용자라도 시스템상에서 패스워드 파일을 읽을 수 있을 것이므로, 예를 들어 다른 계정의 이름을 알 수 있다. 이것은 두 번째 필드에 있는 패스워드가 모두에게 이용 가능하다는 것을 의미한다. 패스워드 파일은 패스워드를 암호화하여, 이론적으론 아무런 문제가 없다. 그러나 암호는 깨질 수가 있다. 특히 짧거나 사전에서 찾을 수 있는 쉬운 단어로 된 것이라면 쉽게 깨질 수 있다. 그래서 패스워드 파일에 암호를 가지는 것은 별로 좋은 방법이 아니다.

대부분의 리눅스 시스템은 shadow passwords를 가지고 있다. 이것은 패스워드를 저장하는 다른 방법이다. 암호화된 패스워드는 root만이 읽을 수 있는 /etc/shadow라는 분리된 파일에 저장된다. /etc/passwd 파일은 단지 두 번째 필드에 특별한 표시를 포함하고 있다. 어떤 프로그램은 사용자가 setuid 되었다는 것을 증명할 필요가 있으며 그렇게 함으로써 shadow password 파일에 접근할 수 있다. 패스워드 파일 내의 다른 필드만을 이용하는 보통의 프로그램들은 암호를 얻을 수 없다. [1]

사용자와 그룹 아이디 번호 골라내기

대부분의 시스템에서는 사용자와 그룹 아이디 번호가 무엇인지 중요하지 않다. 그러나 네트워크 파일시스템(NFS)을 사용할 경우 모든 시스템상에서 같은 uid와 gid를 가질 필요가 있다. 이것은 NFS 역시 사용자를 uid 번호와 동일하게 간주하기 때문이다. 만약 NFS를 사용하지 않는다면 당신은 당신의 계정 만들기 도구가 자동적으로 그것들을 고르도록 만들어도 된다.

만약 NFS를 사용한다면 당신은 계정의 정보를 동시성을 가지도록하는 메카니즘을 개발해야 한다. 다른 대안은 NIS 시스템이다. (Olaf kirch의 Linux network administrators' guide를 보라.)

하지만 당신은 uid 번호(그리고 문자로 된 usernames)를 다시 사용하는 것을 피해야 할 것이다. 왜냐하면 uid나 username의 새로운 소유자가 기존의 소유자 파일(혹은 메일, 혹은 무엇이든)에 접근할 지도 모르기 때문이다.

초기 환경: /etc/skel

home 디렉토리에 새 계정이 만들어지면 /etc/skel 디렉토리로부터 파일이 초기화된다. 시스템 운영자는 /etc/skel에서 파일을 만들 수 있으며 그것은 사용자를 위한 멋진 기초 환경을 제공할 것이다. 예를 들어 /etc/skel/.profile을 만들어 에디터 환경을 몇몇 에디터에게 변할 수 있게 설정하여 새 사용자에게 친숙하게 할 수 있다.

그러나 /etc/skel 을 가능한한 작게 유지하는 것이 좋다. 왜냐하면 현존하는 계정들의 파일을 업데이트하는 것이 거의 불가능할 것이기 때문이다. 예를 들어 친숙한 에디터의 이름이 바뀐다면, 모든 현존하는 사용자들은 그들의 .profile을 편집해야 할 것이다. 시스템 운영자는 스크립트를 이용하여 그 과정을 자동적으로 처리하도록 만들 수 있지만, 누군가의 파일에 손상이 가는 것이 불가피할 것이다.

언제라도 가능하면 전체적인 설정은 /etc/profile 같은 전체 파일에 두는 것이 낫다. 이런 방법으로 사용자 자신의 설정을 손상시키는 일 없이 업데이트를 가능케 할 수 있다.

수동으로 계정 만들기

새 계정을 수동적으로 만드려면 다음의 과정을 밟으면 된다 :

  • /etc/passwd를 vipw로 편집하고 새 계정을 위한 뉴 라인을 추가한다. 형식에 주의하라. 에디터로 직접 편집하지 마라! vipw는 파일을 잠궈서 다른 명령이 동시에 그것을 업데이트하려 하지 않을 것이다. 로그인이 불가능하도록 패스워드 필드를 `*'로 채워야 한다.

  • 역시 새 그룹을 만드려고 한다면, 같은 방법으로 vigr를 이용하여 /etc/group를 편집한다.

  • mkdir 명령으로 home디렉토리에 계정을 추가한다.

  • /etc/skel에서 새 home디렉토리에 파일을 카피한다.

  • 소유권한과 접근권한을 chown과 chmod로 수정한다. -R 옵션은 가장 유용하다. 정확한 접근 권한은 한 사이트에서 다른 사이트까지 바뀌나, 보통 다음의 명령은 맞는 명령이다.

    cd /home/newusername
    chown -R username.group .
    chmod -R go=u,go-w .
    chmod go= .

  • passwd 명령으로 암호를 설정하라.

마지막으로 암호를 정한 후에 계정은 작동할 것이다. 당신은 다른 모든 과정이 다 수행될 때까지 암호를 설정해서는 안된다. 그렇지 않으면 당신이 파일을 카피하는 동안에도 의도하지 않게 계정은 로그인 될 지도 모른다.

때때로 사람이 사용하지 않는 모조 계정 [2] 을 만들어야 할 때가 있다. 예를 들어 anonymous FTP 서버를 설정하기 위해서는(계정 없이도 누구나 자료를 다운받을 수 있도록), ftp라는 계정을 만들 필요가 있다. 이런 경우, 대개 위의 마지막 과정인 암호 설정을 할 필요가 없다. root는 어떤 사용자도 될 수 있으므로 아무나 root가 되지 않는 한, 그들이 계정을 사용할 수 없도록 암호를 설정하지 않는 것이 좋다.

+ Recent posts