RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'groupmod'에 해당되는 글 1

출처 : 대전국제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
                         => 총무부와 자재부도 같은 방법으로 그룹변경을 한다.

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/10   »
  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)