본문 바로가기
유용한_팁

FreeBSD 계정 수정하기

by 씨디맨 2007. 11. 4.
320x100

6.5. 계정을 수정하기

pw명령은 계정을 수정하는 강력하고도 유연한 도구입니다. 그러나, 새로운 게정을 생성할때는 adduser명령을, 계정을 삭제할때는 rmuser명령을 사용하는 것을 권장합니다.

chpass명령은 시스템 관리자나 평범한 사용자 모두 비밀번호, 쉘, 개인정보를 설정하게 합니다. 하지만, 특별히 비밀번호를 바꾸는 것은 passwd명령이 보다 일반적인 방법입니다.

6.5.1. adduser

adduser명령은 새로운 사용자를 추가하는 간단한 프로그램입니다. 사용자들의 passwd 그리고 group의 내용 뿐만 아니라, 홈 디렉토리를 생성하고, /usr/share/skel로부터 기본 설정화일(dotfiles)을 복사합니다. 또한, 사용자들에게 환영 메세지를 메일로 보낼 수도 있습니다.

초기 설정화일을 만들려면, adduser -s -config_create. 명령을 사용합니다. [1]다음, 일반적인 사용을 위해 루트(root)를 사용하는 것은 좋지 못하므로, adduser 기본값을 설정하고 먼저 사용자 계정을 생성합니다.

Example 6-1. adduser명령으로 사용자 추가하기

    # adduser -v
    Use option ``-silent'' if you don't want to see all warnings and questions.
    Check /etc/shells
    Check /etc/master.passwd
    Check /etc/group
    Enter your default shell: csh date no sh tcsh [sh]: tcsh
    Your default shell is: tcsh -> /usr/local/bin/tcsh
    Enter your default HOME partition: [/home]:
    Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: 
    Send message from file: /etc/adduser.message no 
    [/etc/adduser.message]: no
    Do not send message
    Use passwords (y/n) [y]: y
    
    Write your changes to /etc/adduser.conf? (y/n) [n]: y
    
    Ok, let's go.
    Don't worry about mistakes. I will give you the chance later to correct any input.
    Enter username [a-z0-9_-]: jru
    Enter full name []: J. Random User
    Enter shell csh date no sh tcsh [tcsh]: 
    Enter home directory (full path) [/home/jru]: 
    Uid [1001]: 
    Enter login class: default []: 
    Login group jru [jru]: 
    Login group is ``jru''. Invite jru into other groups: guest no 
    [no]: wheel
    Enter password []: 
    Enter password again []: 
    
    Name:	  jru
    Password: ****
    Fullname: J. Random User
    Uid:	  1007
    Gid:	  1007 (jru)
    Class:	  
    Groups:	  jru wheel
    HOME:     /home/jru
    Shell:	  /usr/local/bin/tcsh
    OK? (y/n) [y]: y
    Added user ``jru''
    Copy files from /usr/share/skel to /home/jru
    Add another user? (y/n) [y]: n
    Goodbye!
    #

요약하면, 위 작업은 기본 쉘(shell)을 tcsh (패키지들중에 있는 추가적인 쉘)로 바꾸고, 생성된 사용자에게 환영 메일을 보내지 않게 수정했습니다. 설정을 저장하게 되면, jru 계정을 생성하게 되고, jruwheel 그룹(나중에 이것은 중요하다는 걸 알게 됩니다.)에 속하게 됩니다.

Note: 입력한 패스워드는 화면에 출력되거나, "*"문자로 출력되지 않습니다. 두 번 연속으로 패스워드를 실수로 입력하지 않도록 조심해야 합니다. :-)

Note: 앞으로는 단순히 adduser명령을 인자(arguments) 없이 사용하고, 기본 설정을 계속 바꿔가면서 할 필요가 없습니다. 프로그램이 기본 설정을 바꿀려고 물어 오면, 프로그램을 종료 후에, -s옵션으로 다시 시작합니다.

6.5.2. rmuser

rmuser명령은 시스템에서 사용자를 삭제하고, 사용자 데이터베이스의 흔적들까지 삭제합니다.

rmuser명령은 아래 단계로 수행합니다.:

  1. 사용자의 crontab(1) 항목을 삭제합니다.(항목이 있을 경우)

  2. 사용자로부터 귀속된 모든 at(1) 작업을 삭제합니다.

  3. 사용자가 소유한 모든 프로세스들을 종료합니다.

  4. 시스템의 로컬 패스워드 화일로부터 사용자를 삭제합니다.

  5. 사용자들의 홈 디렉토리를 삭제합니다.(사용자의 소유로 된 경우)

  6. /var/mail로부터 사용자 소유의 들어오는 메일 화일을 삭제합니다.

  7. /tmp와 같은 임시 화일 저장 공간에 있는 사용자 소유의 모든 화일을 삭제합니다.

  8. 마지막으로, /etc/group에 있는 모든 그룹들에서 사용자의 이름을 삭제합니다.

    Note: 만약 그룹이 비어있게 되거나, 그룹의 이름이 사용자의 이름과 같으면, 그룹은 삭제됩니다; 이러한 그룹 명은 adduser(8)로 생성되는 각 각의 사용자들에게 유일한 그룹들 생성하기 위해서 그런 것입니다.

슈퍼유저 계정을 삭제하는 것은 심각한 문제를 일으키므로, rmuser명령으로 슈퍼유저 계정을 삭제할 수 없습니다.

기본적으로 대화식 모드로 사용되므로, 지금 하고 있는 설정들에 대해서, 확인 과정을 거칩니다.

Example 6-2. rmuser명령으로 대화식 계정 삭제

    # rmuser jru
    Matching password entry:
    jru:*:1000:1000::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
    Is this the entry you wish to remove? y
    Remove user's home directory (/home/jru)? y
    Updating password file, updating databases, done.
    Updating group file: trusted (removing group jru -- personal group is empty) done.
    Removing user's incoming mail file /var/mail/jru: done.
    Removing files belonging to jru from /tmp: done.
    Removing files belonging to jru from /var/tmp: done.
    Removing files belonging to jru from /var/tmp/vi.recover: done.
    #

6.5.3. pw

pw명령은 사용자와 그룹을 표시, 수정, 삭제, 생성하는 명령라인 유틸리티입니다. 또 시스템 사용자와 그룹 화일 편집기와 같은 기능도 수행합니다.

그 명령은 직접적으로 실행 가능하거나, 스크립트로 부터 사용할 수 있게 만들어졌습니다.

pw(8) 에 모든 정보가 있습니다.

6.5.4. chpass

chpass명령은 비밀번호, 쉘, 개인정보와 같은 사용자 데이터베이스 정보를 변경합니다.

오직 시스템 관리자, 슈퍼유저로서,만이 chpass명령으로 다른 사용자의 정보와 비밀번호를 바꿀 수 있습니다.

옵션이나 사용자 이름 없이 실행한 chpass명령은 사용자의 정보를 포함하는 편집기 화면을 보여줍니다. 편집기에서 나가고자 할때 사용자 데이터베이스의 정보가 바뀌게 됩니다.

Example 6-3. 슈퍼유저에 의한 대화식 chpass

    #Changing user database information for jru.
    Login: jru
    Password: *
    Uid [#]: 1000
    Gid [# or name]: 1000
    Change [month day year]:
    Expire [month day year]:
    Class:
    Home directory: /home/jru
    Shell: /usr/local/bin/tcsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

일반적인 사용자는 이 정보들의 몇몇 부분들만 바꿀 수 있고, 그들 자신의 정보만 수정할 수 있습니다.

Example 6-4. 일반 사용자들에 의한 대화식 chpass

    #Changing user database information for jru.
    Shell: /usr/local/bin/tcsh
    Full Name: J. Random User
    Office Location:
    Office Phone:
    Home Phone:
    Other information:

Note: chfn 그리고 chsh은 chpass명령의 단순한 링크입니다. ypchpass, ypchfn, 그리고 ypchsh도 마찬가지입니다. NIS가 자동으로 지원되므로, 명령 이전에 yp를 기술하는 것이 필요하지 않습니다.

6.5.5. passwd

passwd명령은 사용자가 자신의 비밀번호를 바꾸거나 슈퍼유저가 다른 사용자의 비밀번호를 바꾸는 일반적인 방법입니다.

Note: 사용자들은 콘솔(console)로부터 벗어나 있을때 다른 비인가된 사람이 비밀번호를 바꾸는 것을 방지하기 위해 비밀번호를 바꾸기전에 자신의 사용하던 비밀번호를 먼저 입력해야 합니다.

Example 6-5. passwd

    % passwd
    Changing local password for jru.
    Old password:
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done
    
    # passwd jru
    Changing local password for jru.
    New password:
    Retype new password:
    passwd: updating the database...
    passwd: done

Note: yppasswd는 단지 passwd명령의 링크입니다. NIS가 자동으로 지원되므로, 명령 이전에 yp를 기술하는 것이 필요하지 않습니다.

Notes

[1]

-s 옵션은 adduser 프로그램을 빠르게 실행하게 합니다. -v 옵션은 나중에 바꾼 기본 값을 사용할 수 있게합니다.

댓글