RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제IT교육센터 정성재 강사

 

1. 사용자(User)에 대하여
(1) 개요
    사용자에는 일반계정 사용자와 root계정사용자가 있다. 일반적으로 root계정은 시스템운영에 있
   어서 모든 권한을 행사하므로 슈퍼유저(Super User)계정이라고 한다. 그러나, 꼭 root라는 계정만
   슈퍼유저가 되는 것은 아니다. 일반유저도 슈퍼유저의 권한행사가 가능하다
(2) 시스템 계정
   /etc/passwd 파일의 세번째필드가 UID값을 나타내는 데 그 값이 500번(일반적으로 100번이하)미만
  의 계정들을 보면 daemon, mail, lp, nobody라는 계정으로 되어 있다. 이러한 계정을 시스템 계정
  이라고 한다. 시스템 계정이 존재하는 이유는 해당 서비스로 인한 위험을 줄이기 위해서이다. 예를
  들면 games 이라는 것이 있다고 가정하자. game을 하게 되어서 High Score를 기록한다고 하면 이
  기록을 특정한 파일에 기록해야 한다. 만약 특정한 파일에 기록할 때 특정한 계정이 없으면 root로
  기록해야 한다. 단순히 점수만 기록하면 되는데 root권한으로 기록하게 되면 시스템상에 문제가 발
  생할 수도 있다. 그래서, 시스템서비스들도 계정으로 등록해서 관리한다.

2. 관련파일 : /etc/passwd, /etc/shadow
리눅스 시스템에서 가장 중요한 파일로 시스템에 로그인하여 자원을 이용할 수 있는 사용자의
목록을 저장하고 있는 파일이다. 이 파일에 기록된 사용자 정보는 그 사용자가 로그인하고, 로그아웃
할때까지 항상 시스템이 사용자를 감시하기 위한 근거가 되는 파일이다. /etc/passwd파일에서 id,
개인의 홈디렉토리등 기본적인 정보를 담고 있으며, /etc/shadow파일은 /etc/passwd파일에서의
패스워드부분을 다시 암호화하여 관리한다.
(1)/etc/passwd
   1) 기본구조 : 7개의 필드로 나누어 정보를 저장하고 있다.
     username:password:UID:GID:fullname:home-directory:shell
   2) 사용예
     posein:x:500:500:Jung Sung-Jae:/home/posein:/bin/bash
     (설명)
       posein : Username부분으로 일명 ID 또는 계정명이라고도 부른다.
       x : 암호화된 패스워드 필드, 이 부분을 /etc/shadow파일에서 담당한다.
       500 : 숫자화된 UserID 이다. 유닉스 내부에서는 ID를 숫자화하여 관리한다.
       500 : 숫자화된 GroupID 이다. 유닉스 내부에서는 Group도 숫자화하여 관리한다.
       Jung Sung-Jae : 일종의 부연설명이다. 사용자에 대한 정보를 기록되는 부분이다.
       /home/posein : 최초 로그인시 작업하는 디렉토리이다. 보통 개인 홈디렉토리라 부른다.
       /bin/bash : 로그인시 사용되는 쉘을 나타낸다.
(2)/etc/shadow : /etc/passwd파일에서 두번째 필드인 패스워드부분, 즉 'x'로 표기 되어 부분을
                 암호화하여 관리한다.
   1) 기본구조 : 9개의 필드로 구성되어 있다.
     username:password:last:may:must:warn:expire:disable:reserved
      =>
     username : 사용자이름, 즉 아이디를 말한다.
     password : encode된 패스워드
     last     : 최근의 패스워드를 바꾼 날(1970년 1월 1일부터 계산한 날수)
     may      : 패스워드를 바꾼 다음, 또 바꾸기 위해 기다리는 날 수(다음 패스워드로의 변경 유
               예 기간)
     must     : 다음 패스워드로 바꾸어야 할 때까지의 기간, 즉 현재 패스워드 유효기간
     warn     : 패스워드가 만료되기 전에 사용자에게 바꿀 것을 경고하는 기간
     expire   : 패스워드가 만료된 뒤, 사용자 계정사용이 불가능하기까지 기간
     disable  : 계정이 사용 불가능하게 된 날 (1970년 1월 1일부터 계산한 날수)
     reserve  : 남겨둔 예약된 공간
   2) 사용예
     zzang:$1$cWctEYZr$R/o4BEhpGI1i29or6Qrkp.:12255:0:99999:7:::

(실습) useradd명령을 통한 /etc/shadow파일의 변화를 살펴보자.
1. useradd 명령으로 사용자를 추가한뒤에 /etc/passwd파일과 /etc/shadow파일의 내용을 본다.
2. 그 다음에 passwd명령으로 추가한 사용자에게 패스워드를 부여한 뒤에 /etc/shadow파일의 내용
   을 살펴본다.

3. 일반계정사용자를 슈퍼유저로 전환
/etc/passwd에서 root권한자의 UID와 GID를 살펴보자. 둘 다 0으로 설정되어 있다. 일반사용자도
UID와 GID를 0으로 변환하며 슈퍼유저가 된다.

4. useradd명령을 이용한 사용자 고급관리
(1) 사용법
   useradd option
(2) option
   -D : 사용자추가시 기본적으로 반영되는 정보를 출력한다. 기본이 되는 파일은 /etc/default/user
       add이다. 이 파일의 설정을 변경하려면 이 옵션과 함께 아래의 옵션등을 사용해야 한다.
   -g : 기본 그룹을 지정한다. 여기에서 지정하는 값은 /etc/group내에 있어야 한다.
       ( 리눅스 7버전에서 변경하면 /etc/default/useradd파일에 변경된 값이 반영은 되나 사용자
        추가시에는 적용되지 않고 있다.)
      예) useradd -D -g new_gruop_name or GID
   -b : 신규사용자의 홈디렉토리의 상위디렉토리를 변경한다.
      예) useradd -D -b directory
   -f : INACTIVE행과 관련된 옵션으로 패스워드 유효기간이 만료된 후에 언제 이 계정을 사용할 수
       없도록 할 것인지를 하루단위로 설정한다. 기본값은 취소되지 않는다.
      예) useradd -D -f number_of_day
   -e : 사용자의 계정이 만료되어서 사용할 수 없게 되는지를 설정한다. Shadow password를 쓸 때만
       사용된다. 기본적으로는 계정이 만료되지 않는다. 관련파일은 /etc/login.defs이다.
      예) useradd -D -e YYYY-MM-DD
   -s : 사용자의 기본쉘을 변경할 때 쓰인다.
      예) useradd -D -s /bin/csh
(3) 사용예
   1) [root@house /root]# useradd -D
      GROUP=100              // 기본 Group, 시스템에서 처리하는 기본값으로 사용자의 이름으로
                               기본 그룹을 생성한다.
      HOME=/home             // 홈디렉토리의 위치 (/home/username)
      INACTIVE=-1            // 패스워드가 기한이 지난 뒤 사용자 계정이 무효가 되기까지의 기간
                              (0,-1이 상관없음을 뜻함. 리눅스 버전에 따라 값이 다름)
      EXPIRE=                // 패스워드 유효기간
      SHELL=/bin/bash        // 기본 Shell
      SKEL=/etc/skel         // Skeleton Directory. 즉 사용자생성시 기본골격을 나타냄.
   2) useradd -D -d /home -s/bin/csh
      => 사용자의 홈디렉토리를 /home2로 바꾸고, 기본쉘은 /bin/csh로 전환한다. 변화된 내용은
       /etc/default/useradd 파일에 기록된다.

5. passwd명령을 이용한 사용자 고급관리
(1) 설명: 기본적으로 passwd명령은 패스워드를 부여하거나 패스워드를 변경하는 명령이지만 루트권
          한자는 좀 더 많은 기능을 할 수 있다. 대체적으로 계정을 사용하지 못하게 할 때 유용하
          게 쓰인다.
(2) 사용법
   passwd option 사용자계정
(3) option
   -S : username에 대한 패스워드정보를 알 수 있다.
   -l : 사용자의 패스워드에 lock을 걸어 로그인을 막는다.
   -u : 사용자에게 걸려있는 패스워드를 푼다.
   -d : 사용자의 패스워드를 제거한다. 패스워드없이 로그인이 가능하다.
(4) 사용예
   1) [root@house /root]# passwd -S posein
      Changing password for user posein
      Password set, MD5 encryption
       => 현재 패스워드 정보를 보여준다.
   2) [root@house /root]# passwd -l jjj
      Changing password for user jjj
      Locking password for user jjj
      passwd: Success
       => 패스워드에 lock을 건다. 보통 /etc/shadow 파일의 두번째 필드가 패스워드 부분인데 이
         부분의 맨 앞에 '!'가 붙는다.
   3) [root@house /root]# passwd -u jjj
      Changing password for user jjj
      Unlocking password for user jjj
      passwd: Success
   4) [root@www /root]# passwd -d prehee
      Changing password for user prehee
      Removing password for user prehee
      passwd: Success
       => 패스워드가 제거되어 아이디만으로도 로그인이 가능하다. /etc/shadow 패스워드 필드의
        내용이 전부삭제된다. 다시 패스워드를 부여하려면 passwd 명령으로 부여해야 한다.
(5) 주의점
   1) 설명: 'passwd -d  사용자계정'을 이용해서 사용자의 패스워드를 제거해서는 절대안된다. 해당
           사용자가 패스워드없이 로그인 가능하기 때문이다. 또한 'passwd -S 사용자계정'하면
           패스워드가 Locking이라고 정보를 보여주지만 정확한 의미의 Locking이 아니다. 이 부분
           이 현재 문제점이다.
   2) 확인예
     [root@www root]# passwd -d prehee
     Removing password for user prehee.
     passwd: Success
       => prehee라는 사용자의 패스워드가 삭제되었다. 즉 패스워드없이 해당시스템에 로그인할 수
         있게 된다.
     [root@www root]# passwd -S prehee
     Password locked.
       => 정보를 확인하면 'passwd -l 사용자계정'했을 때와 같이 패스워드가 locked 되었다고 나오
        지만 실제로는 locked된 것이 아니라 제거가 된 것이므로 주의해야 한다.

6. usermod
(1) 설명: 사용자의 쉘, 홈디렉토리, UID등을 변경할 수 있는 명령
(2) 사용법
   usermod option 사용자계정
(3) option
   -d : 사용자의 홈디렉토리를 변경한다. 옮겨질 디렉토리는 미리 생성되어야 한다. -m을 사용하면
       홈디렉토리의 파일과 디렉토리도 같이 옮겨주므로 이 경우에는 디렉토리를 생성하지 않아도
       된다.
   -g : 사용자의 그룹을 변경한다.
   -s : 사용자의 쉘을 변경한다.
   -u : 사용자의 UID값을 변경한다.
   -e : 계정만기일을 변경한다.
   -c : 사용자의 간단한 정보를 입력하거나 변경한다.
   -G : 추가로 다른 그룹에 속하게 할 때 쓰인다.
   -p : /etc/shadow의 2번째필드인 암호화된 패스워드값을 변경할 때 쓴다. 이 옵션 사용할 때는
       암호화된 값으로 값을 지정해야 한다.
   -l : 사용자아이디를 변경한다.
   -L : 사용자의 패스워드에 LOCK을 걸어 로그인을 막는다.
   -U : 사용자의 패스워드에 걸린 LOCK을 푼다.
(4) 사용예
   1) 홈 디렉토리변경 : 디렉토리는 미리 생성되어 있어야 한다. 기본적으로 -m을 사용하면 디렉토리
                     를 생성하지 않아도 된다. 전체환경을 그대로 옮겨주므로 꼭 -m옵션과 같이
                     사용하도록 한다.
    ㄱ. 사용법
      usermod -d 새로운_홈디렉토리경로 username
    ㄴ. 사용예
      usermod -d /home2/posein -m posein
       => posein이라는 사용자의 홈디렉토리를 /home2/posein으로 변경하고 -m옵션은 내용도 새로운
         위치로 옮겨준다. 단, /home2 라는 디렉토리는 미리 생성되어 있어야 한다.
   2) 기본그룹 변경하기 : 사용자가 속한 그룹을 변경한다. 기존의 그룹에 속해 생성된 것들은
                       chgrp명령을 사용하여 소유그룹을 변경해야 한다.
    ㄱ. 사용법
       usermod -g [group_name or GID] username
    ㄴ. 사용예
       usermod -g 601 posein
        => posein이라는 사용자의 그룹을 601로 변경한다. 속한 그룹은 변경되지만 기존에 미리
          생성된 디렉토리나 파일들의 소유그룹은 변경되지 않는다. 그러므로 chgrp명령으로
          변경해야 한다.
   3) 쉘변경
    ㄱ. 사용법
       usermod -s 새로운_쉘경로 username
      (참고)사용가능한 쉘의 확인은 /etc/shells에서 확인한다.
    ㄴ. 사용예
      a. usermod -s /bin/csh posein
           => posein이라는 사용자의 쉘을 /bin/csh로 바꾼다.
      b. usermod -s /bin/false posein
           => posein이라는 사용자의 쉘을 /bin/false로 바꾸지만 실질적으로 존재하는 쉘이
             아니므로 일시적인 사용자의 계정을 제한할 때 쓰인다.
  4) UID 변경
    ㄱ. 사용법
       usermod -u UID username
    ㄴ. 사용예
       usermod -u 500 posein
        => posein이라는 사용자의 UID를 500으로 바꾸라는 뜻이다. 이 때 홈디렉토리에 있는 사용자
          소유의 모든 파일과 디렉토리도 자동으로 반영되나, 홈디렉토리 외부에 있는 자신의 파일은
          chown명령으로 변경해야 한다.
   5) 계정만기일(expiration Date)변경
    ㄱ. 사용법
       usermod -e MM/DD/YY username
    ㄴ. 사용예
       usermod -e 04/30/02 posein
        => posein이라는 사용자의 계정을 2002년 4월 30일까지로 지정한다. 확인은 /etc/shadow
         에서 한다.
   6) 사용자에 대한 간단한 정보를 입력한다.
    ㄱ. 사용법
       usermod -c '입력할 내용' 계정명
    ㄴ. 사용예
       usermod -c 'System Manager' posein
        => posein이라는 사용자에게 'System Manager'라는 정보를 넣는다. 확인은 /etc/passwd나
          finger 명령을 이용한다.
   7) 추가로 그룹 지정한다.
    ㄱ. 사용법
       usermod -G 새로운_그룹명
    ㄴ. 사용예
       usermod -G wheel posein
        => posein이라는 사용자를 'wheel'이라는 그룹에 추가로 속하게 한다.
   8) 사용자 아이디 변경
    ㄱ. 사용법
       usermod -l 새로운아이디 원래아이디
    ㄴ. 사용예
       usermod -l prehee posein
        => posein이라는 아이디를 prehee로 변경한다.

7. groupmod
(1) 설명: 기존 그룹의 이름이나 GID를 변경할 때 사용하는 명령
(2) 사용법
   groupmod option  새로운그룹 현재그룹
(3) option
   -n : 기존 그룹의 이름을 바꾼다.
   -g : 기존 그룹의 GID를 바꾼다.
(4) 사용예
   1) groupmod -n injaebu insabu
     => insabu라는 그룹의 이름을 injaebu로 변경(insabu=> injaebu)
   2) groupmod -g 555 injaebu
     => injaebu라는 그룹의 GID를 555로 바꾼다.

8. finger
(1) 설명: 사용자에 대한 정보를 보여주는 명령으로 /etc/passwd에 저장된 내용을 읽어온다.
(2) 사용법
   finger [ID]
(3) 사용예
   1) [posein@house posein]$ finger
       => 현재 접속한 사용자의 정보를 출력한다.
   2) [posein@house posein]$ finger ID
       => 'ID'를 가진 사용자의 정보를 출력한다.
   3) [posein@house posein]$ finger @aaa.com
       => @aaa.com 호스트에 있는 모든 사용자들의 정보를 출력한다. 단 finger 서비스의 설정이
         되어있는 서버만 가능하다. 현재 거의 모든 서버에서 이 서비스는 하지 않는다.
(4) 참고
   1) 설명: finger가 사용자의 정보를 출력해주는 명령이지만, 현재 이 명령이 많이 쓰이는 경우는
           최신의 커널정보를 알아볼 경우에 쓰인다.
   2) 사용예
     [posein@www posein]$ finger @ftp.kernel.org
     The latest stable version of the Linux kernel is:           2.4.20
     The latest prepatch for the stable Linux kernel tree is:    2.4.21-pre7
     The latest beta version of the Linux kernel is:             2.5.67
     The latest snapshot for the beta Linux kernel tree is:      2.5.67-bk6
     The latest 2.2 version of the Linux kernel is:              2.2.25
     The latest 2.0 version of the Linux kernel is:              2.0.39
     The latest prepatch for the 2.0 Linux kernel tree is:       2.0.40-rc6
     The latest -ac patch to the stable Linux kernels is:        2.4.21-pre7-ac1
     The latest -ac patch to the beta Linux kernels is:          2.5.67-ac1
     The latest -dj patch to the beta Linux kernels is:          2.5.60-dj2

9. chfn
(1) 설명: 사용자의 정보를 입력하거나 변경한다.
(2) 사용법
   chfn [id]
(3) 사용예
   1) chfn => 자신의 정보를 변경한다.
   2) chfn posein => posein이라는 사용자의 정보를 변경한다. 이 경우에는 root사용자만이
                    가능하다.

10. chage
(1) 설명: 사용자의 패스워드 만료에 대한 정보를 보여주거나 제한한다.
(2) 사용법
    chage [option] 사용자명
(3) option
   -l : 사용자계정에 대한 정보를 보여준다.
   -m : 패스워드 변경의 최소 날짜를 지정한다.
   -M : 패스워드 변경의 최대 날짜를 지정한다. 이 값이 지정하면 패스워드 만기일짜가 나타난다.
   -I : 패스워드 만료후에 실제 패스워드에 LOCK를 설정하기까지의 날짜를 설정한다.
   -E : 계정이 만기되는 날짜를 지정한다. MM/DD/YY 형태로 지정한다.
   -W : 패스워드 변경을 요구하는 경고날짜를 지정한다.
(4) 사용예
   1) [root@www root]# chage -l posein
      Minimum:        0
      Maximum:        99999
      Warning:        7
      Inactive:       -1
      Last Change:             4월 03, 2003
      Password Expires:       Never
      Password Inactive:      Never
      Account Expires:        Never
       => posein 사용자의 패스워드 및 계정 정보를 보여준다.
   2) [root@linux245 root]# chage -M 100 posein
       => 패스워드 만기를 최대 100일로 한다.
   3) [root@linux245 root]# chage -E 09/30/03 posein
       => 계정만기를 2003년 9월 30일로 지정한다.



- 사용자 추가하기(2) - 실습


1. 리눅스 서버를 구축하고 사용자를 추가하려고 한다. 인사부 100명, 총무부 150명, 자재부 100명
   정도 된다. 그냥 useradd를 하게 되면 /home디렉토리밑에 350명의 사용자가 위치하게 되어 관리상
   어려움이 발생할 것같아 다음과 같은 조건으로 사용자를 생성하려고 한다.
[조건]   1. 인사부직원은 insa라는 그룹에 속하도록 하고 홈디렉토리는 /home/insa 디렉토리에
            생성되도록 한다.
          2. 총무부직원은 chongmoo라는 그룹에 속하도록 하고 홈디렉토리는 /home/chongmoo 디렉
            토리에 생성되도록 한다.
          3. 자재부직원은 jaje라는 그룹에 속하도록 하고 홈디렉토리는 /home/jaje 디렉토리에
            생성되도록 한다.


  => (방법)
    1. 그룹을 생성한다.
      groupadd insa
      groupadd chongmoo
      groupadd jaje

    2. 디렉토리를 생성한다.
      mkdir /home/insa
      mkdir /home/chongmoo
      mkdir /home/jaje

    3. 계정을 추가한다.
      (1) 일반적인 방법 : prehee 이라는 사용자가 인사부일 경우 다음과 같다.
         useradd prehee -d /home/insa/prehee -g insa
          => 이러한 방법으로 350명을 추가하면 매우 어렵다.
      (2) /etc/default/useradd 파일 이용
        1) 설명: 각 부서별 유저를 추가하기 전에 /etc/default/useradd값을 바꾸면 조금 더 쉽게
                할 수 있다.
        2) 예
          ㄱ. 일반적인 설정
             [root@www root]# useradd -D
             GROUP=100
             HOME=/home
             INACTIVE=-1
             EXPIRE=
             SHELL=/bin/bash
             SKEL=/etc/skel
          ㄴ. 인사부에 속한 사용자를 위한 /etc/default/useradd 파일변경
             [root@www root]# useradd -D -b /home/insa -g insa
             [root@www root]# useradd -D
             GROUP=516
             HOME=/home/insa
             INACTIVE=-1
             EXPIRE=
             SHELL=/bin/bash
             SKEL=/etc/skel
               => 그룹값과 홈디렉토리경로가 바뀌었음을 알 수 있다. 물론 설정변경시에 편집기를
                 이용하여 직접변경해도 된다.
          ㄷ. 사용자추가
             [root@www root]# useradd posein
               => 사용자추가시에 '사용자계정'만 입력하면 된다.
          ㄹ. 같은 방법으로 총무부 사용자들과 자재부 사용자들을 추가하면 된다.
         3) 확인: prehee라는 사용자로 로그인한 후에 확인해보자.
           Red Hat Linux release 8.0 (Psyche)
           Kernel 2.4.18-14 on an i686
           login: prehee
           Password:
           [prehee@www prehee]$ pwd
           /home/insa/prehee
           prehee@www prehee]$ ls -ld ~
           drwx------    3 prehee   prehee       4096  4월 12 01:18 /home/insa/prehee
              => 결과를 보면 홈디렉토리는 변경되지만 그룹이 변경되지 않음을 알 수 있다. 현재
                리눅스버그인 것 같다. 이 경우에는 일단 사용자를 전부추가한 뒤에 그룹변경명령
                인 chgrp명령을 다음과 같이 내려서 변경하도록 한다.

                  예) [root@www /]# chgrp insa -R /home/insa
                         => 총무부와 자재부도 같은 방법으로 그룹변경을 한다.

출처 : 대전국제IT교육센터 정성재 강사

 

1. su(substitute user)
(1) 설명: 그대로 해석하면 대리유저라는 뜻으로  실제로 login하는 것은 아니고 다른 사용자의
          권한으로 shell을 실행하는 것이다. 즉, 시스템에 접속한 상태에서 재로그인없이 다른
          사람 계정으로 접속한다.
(2) 사용법
   su [option] [사용자계정]
    => 사용자계정을 입력하지 않으면 root로 login하게 된다. su를 이용해 다른 사용자로 사용하다가
      exit를 입력하면 su를 실행하기 전 사용자로 돌아가게 된다.
(3) option
   - : 이 옵션이 없이 su 명령만 실행시키면 자신의 환경변수의 값을 가지고 다른 사람의 권한만 갖
      지만 이 옵션을 사용하여 su명령을 실행시키면 그 사용자의 환경변수의 내용까지 완벽하게 사
      용한다. 즉, 루트권한사용시 이 옵션을 사용해야만 시스템명령어(예를 들면/sbin 디렉토리의
      명령어인 fdisk같은)를 사용할 수 있다.

(참고1) 'su'와 'su -'의 비교


현재디렉토리상태 su인 경우 su -인 경우
[posein@www posein] [root@www posein] [root@www /root]


(설명) su명령을 옵션없이 사용하면 기존의 일반사용자인 posein의 환경을 그대로 가져간다. 따라서,
      루트권한자로서의 역할을 전부수행하지 못하고, 단순히 파일이나 디렉토리의 접근권한만 행사
      한다. 따라서, 완벽한 루트권한자로의 역할을 수행하려면 'su -'로 해야한다.

(실습) 'su'명령인 상태와 'su -'상태에서 각각 현재 설정된 패스의 상태를 알 수 있는 ehco $PATH
      를 해보아라. (물론 현재의 셀상태는 리눅스에서 사용하는 bash셀이어야 한다.)
(참고2) 루트권한자에서 일반사용자로 'su'시에는 패스워드를 묻지 않고 바로 전환된다.

2. useradd
(1) 설명: 사용자를 추가하는 명령어로 adduser와 같다.물론 option도 동일하다. root권한자만 가능
         한 명령이다.
(2) 사용법
   useradd [option] 사용자계정
(3) option
  -p : 사용자의 암호를 추가시에 지정할 수 있다. (리눅스에서는 지원안됨)
  -d : 홈디렉토리를 지정할 때 쓰인다. 최종디렉토리만 생성한다.
    예) useradd posein -d /home2/posein 이라고 명령을 내렸을 경우 /home2이라는 디렉토리가 생성
       되어 있을 경우에만 홈디렉토리가 생성되므로 미리 /home2라는 디렉토리를 생성해야 한다.
  -g : 그룹을 지정할 때 쓴다. 지정할 그룹이 미리 생성되어 있어야 한다.
  -G : 기본그룹이외에 추가로 그룹에 속하게 할 경우에 쓴다.
  -c : 사용자추가시 사용자에 대한 설명을 설정한다.
  -s : 사용자추가시 사용자가 사용할 쉘을 지정한다.
  -D : /etc/default/useradd에 설정된 유저추가와 관련된 기본 사항들을 보여준다.
(4) 사용예
   1) posein이라는 유저추가하기
     [root@www /]# useradd posein
  (참고3) useradd명령은 단순히 사용자만 추가하는 것이 아니라 리눅스에서는 유저추가시 메일계정
        (/var/spool/mail/'사용자계정')도 자동으로 생성되고 또한 사용자의 홈디렉토리도 자동으로
        생성된다. 홈디렉토리는 /home/'사용자계정'이다.
   2) useradd -p '암호' posein
     => 사용자추가와 동시에 암호도 지정한다. (권장하지 않고 또한 현재 리눅스에서는 지원되지
       않는다.)
   3) useradd marine -d /home/terran/marine -g terran
     => marine이라는 사용자를 추가하면서 홈디렉토리의 경로도 지정하고 해당그룹도 지정한다.
       물론 해당 디렉토리(/home/terran)과 해당그룹(terran)은 미리 생성되어 있어야 한다.
        예) 위의 명령실행전에 아래와 같은 명령을 내려 미리 디렉토리와 그룹을 생성한다.
           mkdir /home/terran
           groupadd terran
   4) useradd -c "System manager" posein
     => posein이라는 사용자에게 "System manager"라는 정보를 입력한다.
       정보의 확인은 /etc/passwd 또는 finger명령으로 확인한다.
   5) [root@www /root]# useradd -D
      GROUP=100
      HOME=/home
      INACTIVE=-1
      EXPIRE=
      SHELL=/bin/bash
      SKEL=/etc/skel
(5) 참고: 관련파일(/etc/default/useradd, /etc/passwd)
    useradd명령은 /etc/default/useradd파일의 내용을 참고로 해서 사용자를 추가한 뒤에 기록은
   /etc/passwd 파일에 한다고 보면된다. 다시말하면 /etc/default/useradd파일의 내용을 참고로
   홈디렉토리, 기본그룹, 쉘 등을 설정하여 /etc/passwd 파일에 기록한다.

(6) 응용문제: useradd명령을 이용하여 아래와 같은 조건을 만족하는 marine이라는 계정을 생성
             하여라.

     [조건]
      - 기본그룹: terran
      - 추가그룹: zerg
      - 기본쉘  : /bin/csh

     [정답]
      useradd marine -g terran -G zerg -s /bin/csh

3. passwd
(1)설명: 등록된 사용자의 비밀번호를 지정하거나 변경하는 명령어이다. passwd만 치면 현재 로그인
         사용자의 패스워드가 변경된다.
(2) 사용법
    passwd [사용자계정]
(3) 사용예
   1) [posein@www posein]$ passwd
        => 현재 로그인한 posein 사용자 본인의 패스워드를 변경한다.
   2) [root@www /root]# passwd posein
        => posein이라는 사용자의 패스워드를 변경한다.

4. userdel
(1) 설명: 사용자를 삭제하는 명령이다.
(2) 사용법 : userdel [option] 사용자계정
(3) option
    -r : 사용자의 홈디렉토리까지 제거한다.
(4) 사용예
   1) [root@www /root]# userdel posein
       => posein이라는 사용자의 계정을 삭제한다.
     (참고4) 사용자를 제거한다고 해서 그 사용자가 사용하던 홈디렉토리까지 제거되는 것이 아니므
           로 일일이 삭제해주거나 -r옵션을 사용하여야 한다. 또한 E-mail을 사용하고 있던 경우에
           는 E-mail파일도 지워야 한다.
             예) rm -rf /home/posein
                 rm -rf /var/spool/mail/posein
   2) [root@www /root]# userdel -r posein
       => 사용자의 계정뿐만아니라 사용하던 홈디렉토리와 홈디렉토리안의 모든 파일 및 디렉토리,
         메일계정도 제거한다.

5. groupadd
(1) 설명: 새로운 그룹을 만드는 명령으로 생성된 그룹의 확인은 /etc/group에서 한다.
(2) 사용법
   groupadd [option] 그룹명
(3) option
   -g GID : 생성과 동시에 GID를 부여하고 싶을때 사용
   (참고) GID 0~499까지는 루트나 bin,mail등의 시스템 레벨계정에서 사용하기 위해 예약되었으므
         로 500번이상을 사용해야 한다.
   -r     : -g 옵션과 함께 쓰이며 0~499번지내의 번호를 그룹번호로 사용시 쓴다.
    (참고)어떤 사용자가 속한 그룹을 알고 싶을때는 groups ID
(4) 사용예
    [root@www /root]# groupadd terran
      => terran이라는 그룹을 생성한다

6. groupdel
(1) 설명 : 생성된 그룹을 삭제하는 명령이다. 참고로 제거할 그룹에 속한 사용자가 없어야 한다.
(2) 사용법
   groupdel 그룹명
(3) 사용예
    [root@www /root]# groupdel terran
     => terran이라는 그룹을 삭제한다.

7. id
(1) 설명: 시스템에 등록된 ID를 보여준다. uid, gid, group를 보여준다.
(2) 사용법
   id [option] [사용자계정]
(3) option
   -g : 그룹 ID만을 출력한다.
   -G : 추가 그룹들만 출력한다.
   -u : 사용자 ID만을 출력한다.
   -n : 보통 g나 u옵션과 같이 사용되며 번호대신에 이름으로 출력한다.
(4) 사용예
   1) [posein@www posein]$ id
      uid=501(posein) gid=501(posein) groups=501(posein)
        => 기본적을 uid, gid, group을 출력한다.
   2) [posein@www posein]$ id prehee
       uid=514(prehee) gid=515(prehee) groups=515(prehee)
        => prehee라는 사용자의 ID정보를 출력한다.
   3) [posein@www posein]$ id -un
      posein
       => uid대신에 이름으로 출력한다.

8. groups
(1) 설명: 해당사용자가 속한 그룹을 보여준다.
(2) 사용법
   groups [사용자계정]
(3) 사용예
   1) [posein@www posein]$ groups
      posein
       => 현재 로그인된 사용자가 속한 그룹을 표시해준다.
   2) [root@www /root]# groups marine
      marine : terran zerg
       => marine이라는 사용자가 속한 그룹을 표시해준다. 현재 terran, zerg라는 그룹에 속해있는
         것을 알 수 있다.


사용자 관련명령어(실습)


1. 관리자가 9명의 사용자를 추가하려고 한다. 9명은 인사부 3명(posein, xitem, yooain), 총무부 3명(zzang, kcy1977, prehee), 자재부 3명(powerlim, dreamlee, minory)이다. 그냥 useradd 명령을 내리면 전부 /home 디렉토리밑으로 계정이 생성되어 관리하기가 불편할 것 같아 다음과 같은 조건으로 사용자를 생성하려고 한다.


[조건]   1. 인사부직원은 insa라는 그룹에 속하도록 하고 홈디렉토리는 /home/insa 디렉토리에
            생성되도록 한다.
          2. 총무부직원은 chongmoo라는 그룹에 속하도록 하고 홈디렉토리는 /home/chongmoo 디렉
            토리에 생성되도록 한다.
          3. 자재부직원은 jaje라는 그룹에 속하도록 하고 홈디렉토리는 /home/jaje 디렉토리에
            생성되도록 한다.


  => (방법)
    1. 그룹을 생성한다.
      groupadd insa
      groupadd chongmoo
      groupadd jaje

    2. 디렉토리를 생성한다.
      mkdir /home/insa
      mkdir /home/chongmoo
      mkdir /home/jaje

    3. 계정을 추가한다.
      (1) 인사부직원
         useradd posein -d /home/insa/posein -g insa
         passwd posein
         useradd xitem -d /home/insa/xitem -g insa
         passwd xitem
         useradd yooain -d /home/insa/yooain -g insa
         passwd yooain
      (2) 총무부직원
         useradd zzang -d /home/chongmoo/zzang -g chongmoo
         passwd zzang
         useradd kcy1977 -d /home/chongmoo/kcy1977 -g chongmoo
         passwd kcy1977
         useradd prehee -d /home/chongmoo/prehee -g chongmoo
         passwd prehee
      (3) 자재부직원
         useradd powerlim -d /home/jaje/powerlim -g jaje
         passwd powerlim
         useradd dreamlee -d /home/jaje/dreamlee -g jaje
         passwd dreamlee
         useradd minory -d /home/jaje/minory -g jaje
         passwd minory
     
      (설정예)
      [root@www root]# groupadd jaje
      [root@www root]# mkdir /home/jaje
      [root@www root]# useradd powerlim -d /home/jaje/powerlim -g jaje
      [root@www root]# passwd powerlim
      Changing password for user powerlim.
      New UNIX password:
      Retype new UNIX password:
      passwd: all authentication tokens updated successfully.

     (테스트)
      Red Hat Linux release 8.0 (Psyche)
      Kernel 2.4.18-14 on an i686
      login: powerlim
      Password:
      [powerlim@www powerlim]$ pwd
      /home/jaje/powerlim
      [powerlim@www powerlim]$ ls -ld ~
      drwx------    4 powerlim jaje         4096  4월  9 17:44 /home/jaje/powerlim

(복습)

1. 관리자가 9명의 사용자를 추가하려고 한다. 9명을 그룹별로 나누고, 홈디렉토리도 그룹별(terran, protoss, zerg)로 나누려고 한다. terran(marine, scv, medic) 3명, protoss(dragoon, zealot, probe) 3명, zerg(drone, hydra, lurker) 3명이다. 홈디렉토리는 각각 /home/terran, /home/protoss, /home/zerg 디렉토리밑에 생성되도록 해본다.

 
2. 특정 그룹에 속한 사용자들 찾아보도록 한다. 그룹에는 기본그룹(1차그룹)이 있고 추가로 속하는
   2차그룹이 있다. 리눅스에서는 모든 사용자는 기본그룹에 속해있어야 한다. 위의 복습예제를 했을
   경우 zerg라는 그룹에 속한 사용자들을 찾아보자.

  => (방법)
    1. 2차 그룹으로 등록된 사용자들 찾아보기
      1) 설명: 그룹과 관계된 파일이 /etc/group이다. 이 파일의 4번째필드에 2차그룹으로 등록된
              사용자들이 나열된다.
      2) 예
        [root@www root]# grep zerg /etc/group
        zerg:x:507:marine
          => marine이라는 사용자가 zerg라는 그룹에 속해있음을 알 수 있다. marine이라는 사용자
            의 기본그룹은 다른 그룹에 속해있다.
    2. 1차 그룹으로 등록된 사용자들 찾아보기
      1) 설명: /etc/group, /etc/passwd 파일과 grep명령을 이용하면 쉽게 찾을 수 있다.
      2) 방법
        ㄱ. 먼저 /etc/group 찾고자하는 그룹의 GID를 확인한다.
        ㄴ. grep 명령을 이용하여 /etc/passwd에서 추출해낸다.
      3) 사용예
        ㄱ. zerg의 GID 알아내기
           [root@www root]# grep zerg /etc/group
           zerg:x:507:marine
             => 507번임을 알 수 있다.
        ㄴ. grep 명령을 이용하여 /etc/passwd에서 찾아낸다.
           [root@www root]# grep 507 /etc/passwd
           medic:x:507:505::/home/terran/medic:/bin/bash            // 이 사용자는 아니다.
           drone:x:508:507::/home/zerg/drone:/bin/bash
           hydra:x:509:507::/home/zerg/hydra:/bin/bash
           lurker:x:510:507::/home/zerg/lurker:/bin/bash
           zergling:x:514:507::/home/zergling:/bin/bash
            => grep명령은 특정문자열을 가지고 찾아주는 것이라서 위와 같이 UID가 507인 사용자
              도 찾아주므로 주의해야 한다.

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/01   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)