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

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

 

1. /etc/passwd 파일 관리시 주의사항
(1) 사용하지 않는 계정은 반드시 지우도록 한다.
(2) 패스워드없이 로그인 가능한 계정이 있나 살펴본다.
(3) 일반사용자이어야 하는데 root사용자(User ID가 0인 사용자)가 되어 있지 않은가 살펴본다.
(4) 등록시키지 않은 사용자가 등록되어 있는 지 살펴본다.
(5) shadow suite를 사용하여 /etc/passwd파일의 암호부분을 일반사용자가 볼 수 없는 /etc/shadow
    파일에서 관리하도록 한다. 만약 초기에 shadow암호기법을 설정하지 않았다면 pwconv명령을 내려
    shadow 암호기법을 사용하도록 한다. 참고로 해제는 pwunconv이다.
(6) shadow suite를 사용했을 경우에는 pwck나 grpck 명령을 이용하여 무결성 검사를 수시로 한다.

2. shadow suite란?
(1) 개요: shadow suite란 사용자 관리 파일인 /etc/passwd 파일을 암호화하여 시스템을 보호하기
          위한 일종의 패키지이다. 이 패키지에는 암호화 파일인 shadow파일이외에도 많은 유틸리
          티와 편리한 기능을 제공한다.
(2) 설치확인
   1) 설명: 리눅스에서는 shadow-utils라는 이름을 가지고 rpm패키지로 설치된다.
   2) 확인
     rpm -qi shadow-utils
(3) Shadow Suite에서 제공하는 파일들
   1) 명령어: su, login, passwd, newgrp, chfn, chsh, id, useradd, userdel, usermod, groupadd,
             groupdel, groups,, pwck, grpck, lastlog, pwconv, pwconv 등이 있다.
   2) 환경설정파일: /etc/login.defs, /etc/default/useradd 등이 있다.
   3) 파일 목록의 확인
     rpm -ql shadow-utils

3. shadow suite의 기능
(1) user계정과 group을 암호화하여 별도의 파일에 관리한다.
(2) user계정과 group을 추가,수정,삭제하는 여러 유틸리티를 제공한다.
(3) 계정의 정지, 무효를 손쉽게 할 수 있다.
(4) login에 대한 기본사항을 /etc/login.defs라는 파일을 제공하여 손쉽게 설정할 수 있도록 한다.
(5) group의 패스워드설정도 가능하다.
(6) 8자이상의 패스워드도 가능하게 한다.
(7) user가 패스워드 설정시에 적절하게 통제할 수 있다.

4. 패스워드 설정에 대하여
(1) 좋은 패스워드
   1) 설명: 가장 좋은 패스워드는 다른 사람이 알아내기 힘든 패스워드이다. 요즘은 패스워드 변경
           시에 좋은 패스워드를 선택하도록 엄격히 관리되고 있다.
   2) 기본 패스워드 변경시 설정
    ㄱ. 특수문자를 반드시 포함하도록 한다.
    ㄴ. 대소문자를 섞어 쓰도록 한다.
    ㄷ. 공백도 같이 사용한다.
(2) 나쁜 패스워드
   1) 설명: 나쁜 패스워드를 사용하면 crack과 같은 프로그램을 이용하여 패스워드를 알아낼 수
           있다. 이를 막기 위해서는 다음과 같은 패스워드는 피해야 한다.
   2) 안좋은 패스워드 설정
    ㄱ. ID와 같은 패스워드
    ㄴ. 1234와 같이 숫자로만 되어 있고, 연번으로 되어 있는 패스워드
    ㄷ. 사용하는 시스템의 이름과 같은 패스워드
    ㄹ. 사용자의 전화번호, 생일, 자동차번호
    ㅁ. 영어사전에 나오는 단어
    ㅂ. 키보드위의 같은 선상에 있는 글쇠들의 연속(qwert,asdf 등)
    ㅅ. 동일한 글자의 연속(aaaa, bbbb 등)
(3) 패스워드 변경시의 에러메시지
   1) BAD PASSWORD: it's WAY too short 또는 BAD PASSWORD: it is too short
       => 패스워드의 길이가 짧은 경우
   2) Sorry, passwords do not match
       => 두 번 입력한 패스워드가 동일하지 않은 경우
   3) BAD PASSWORD: it is based on your username
       => 패스워드에 ID가 들어있는 경우
   4) Password unchanged
       => 현재 패스워드와 동일하게 입력한 경우
   5) BAD PASSWORD: is too similar to the old one
       => 현재 패스워드와 유사하거나 숫자 하나정도만 바뀐 경우
   6) passwd: Authentication token manipulation error
       => 현재 패스워드와 틀리게 입력한 경우
   7) BAD PASSWORD: it is based on a dictionary word
       => 새로 변경할 패스워드가 사전에 들어간 단어가 포함되어 있는 경우
   8) passwd: Only root can specify a user name.
       => 다른 사용자의 패스워드를 변경하려고 시도한 경우
   9) BAD PASSWORD: it does not contain enough DIFFERENT characters
       => 여러 문자로 패스워드를 설정해야 하는데 한두문자로 패스워드를 설정한 경우
   10) BAD PASSWORD: it too simple
       => 패스워드가 너무 단순한 경우
(4) 패스워드 변경 성공시의 메시지
   passwd: all authentication tokens updated successfully

5. passwd 명령을 이용한 사용자 계정 관리하기
(1) 설명: passwd명령은 패스워드를 부여하거나 변경하는 것 이외에 계정을 정지시키거나 기간제한
          등 사용자를 관리할 수 있다.
(2) 사용법
   passwd option 사용자계정
(3) option
   -S : username에 대한 패스워드정보를 알 수 있다.
   -l : 사용자의 패스워드에 lock을 걸어 로그인을 막는다.
   -u : 사용자에게 걸려있는 패스워드를 푼다.
   -d : 사용자의 패스워드를 제거한다. 패스워드없이 로그인이 가능하다.
   -n : 패스워드 변경까지의 최단 날짜의 설정
   -x : 현재 패스워드의 유효기간을 지정한다.
   -w : 패스워드 만료 전 경고 날짜를 지정한다.
   -i : 패스워드 만료된 뒤에 사용자 계정사용이 불가능하게 하기까지의 기간을 설정한다.
(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
   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
       => 패스워드가 제거되어 아이디만으로도 로그인이 가능하다.
   5) [root@www /root]# passwd -n 1 -x 200 prehee
      Adjusting aging data for user prehee.
      passwd: Success
       => 현재 패스워드는 200일간 유효하고 다음 패스워드는 유효기간이 1일이다.
         (참고) /etc/shadow의 확인
               prehee:$1$xKvAva2S$EESTtQcJdCDLQp6Qixw22.:12080:1:200:7:::
   6) [root@www /root]# passwd -w 1 prehee
       => 만료 전 3일부터 경고를 보내준다.
         (참고) /etc/shadow의 확인
               prehee:$1$xKvAva2S$EESTtQcJdCDLQp6Qixw22.:12080:1:200:1:::
   7) [root@www default]# passwd -i 10  prehee
       => 패스워드 만료된 뒤에 사용자 계정사용이 불가능하게 하기까지의 기간을 설정한다.
          (참고) /etc/shadow의 확인
               prehee:$1$xKvAva2S$EESTtQcJdCDLQp6Qixw22.:12080:1:200:1:10::
   
6. UID 및 패스워드관련파일: /etc/login.defs
(1) 설명: 패스워드 제한 및 메일디렉토리 정의 등 사용자 제한에 관여하는 파일이다.
(2) 파일 내용
   [root@www root]# cat /etc/login.defs
   # *REQUIRED*
   #   Directory where mailboxes reside, _or_ name of file, relative to the
   #   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
   #   QMAIL_DIR is for Qmail
   #
   #QMAIL_DIR      Maildir
   MAIL_DIR        /var/spool/mail       // mail 디렉토리를 정의하였다.
   #MAIL_FILE      .mail

   # Password aging controls:
   #
   #       PASS_MAX_DAYS   Maximum number of days a password may be used.
   #       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
   #       PASS_MIN_LEN    Minimum acceptable password length.
   #       PASS_WARN_AGE   Number of days warning given before a password expires.
   #
   PASS_MAX_DAYS   99999        // 패스워드 최대 사용 기간
   PASS_MIN_DAYS   0            // 패스워드 변경최소 기간
   PASS_MIN_LEN    5            // 패스워드 최소 길이
   PASS_WARN_AGE   7            // 패스워드 소멸 이전 경고를 보여주는 날짜

   #
   # Min/max values for automatic uid selection in useradd
   #
   UID_MIN                   500      // UID 최소값
   UID_MAX                 60000      // UID 최대값

   #
   # Min/max values for automatic gid selection in groupadd
   #
   GID_MIN                   500     // GID 최소값
   GID_MAX                 60000     // GID 최대값

   #
   # If defined, this command is run when removing a user.
   # It should remove any at/cron/print jobs etc. owned by
   # the user to be removed (passed as the first argument).
   #
   #USERDEL_CMD    /usr/sbin/userdel_local

   #
   # If useradd should create home directories for users by default
   # On RH systems, we do. This option is ORed with the -m flag on
   # useradd command line.
   #
   CREATE_HOME     yes        // 홈디렉토리 생성여부

7. gpasswd
(1) 설명: 그룹에 패스워드를 설정하거나 그룹관리자를 지정할 수 있는 명령이다.
(2) 사용예
   gpasswd [options] group
(3) option
   -A : 그룹관리자를 지정한다. 루트관리자가 그룹관리자를 지정할 때 쓴다.
   -a : 그룹에 사용자를 추가한다. 그룹관리자가 일반사용자를 그룹에 포함시킬 때 사용한다.
   -d : 그룹에서 사용자를 제외시킬 때 사용한다. 그룹관리자가 일반사용자를 그룹에서 제외시킬 때
       사용한다.
   -r : 그룹패스워드를 제거한다. (리눅스에서 큰 의미 없음)
   -R : 그룹패스워드의 사용자제를 disable시킨다.(리눅스에서 큰 의미 없음)
   -M : 루트관리자가 그룹멤버를 지정할 때 사용한다. 루트만이 사용가능한 명령이다.
(4) 사용예
   1) [root@www root]# gpasswd -A posein terran
        => terran 그룹의 관리자로 posein을 지정한다. 참고로 posein이라는 사용자는 실제적으로
          terran 그룹의 일원이 아니여도 가능하다.
   2) [posein@www posein]$ gpasswd terran
      Changing the password for group terran
      New Password:
      Re-enter new password:
       => terran 그룹의 관리자인 posein 사용자가 그룹 패스워드를 지정하였다.
   3) [posein@www posein]$ gpasswd -a prehee terran
      Adding user prehee to group terran
       => prehee라는 사용자를 terran그룹에 속하도록 지정하였다.
   4) [posein@www posein]# gpasswd -d prehee terran
      Removing user prehee from group terran
       => prehee라는 사용자를 terran그룹에서 제외시킨다.
   5) [root@www root]# gpasswd -M prehee terran
       => prehee 라는 사용자를 terran 그룹의 멤버로 포함시킨다.
   6) [posein@www posein]$ gpasswd -r terran
       => terran 그룹의 그룹패스워드를 제거한다. newgrp명령을 이용하여 그룹에 합류할 수 있다.
   7) [posein@www posein]$ gpasswd -R terran
       => newgrp명령을 통한 gid변경을 불가능하게 한다.

(참고) 사실 리눅스에서 gpasswd를 통한 그룹패스워드의 부여의 의미는 없다. 그룹 패스워드를 설정
       한다고 해도 실제 사용하지는 않는다. 즉 -r과 -R 옵션은 큰 의미가 없다. 이 옵션을 사용해
       서 설정을 한다고 하더라도 2차그룹에 속해 있으면 newgrp명령을 사용할 수 있다. 다만 그룹
       관리 사용자를 지정하여 그 사용자가 그룹에 속할 사용자의 지정할 때는 사용가능하다.

8. 관련파일
(1) /etc/group
   1) 설명: 그룹의 정보를 관리하는 파일이다. 그룹을 추가하면 이 파일에 기록되고 그룹을 삭제하
           면 이 파일의 목록에서 삭제된다. 4개의 필드로 구성되어 있다.
   2) 구성예
     groupname:x:GID:member_list
      => (설명)
        groupname: groupadd명령등으로 추가시킨 그룹명이다.
        x : group의 패스워드를 나타내는 부분이지만 기본적으로 그룹패스워드도 /etc/gshadow에서
           관리되므로 여기서는 그냥 'x'라고만 나타난다.
        GID : 시스템에서 부여받는 group ID 이다.
        member_list : 속해있는 멤버의 리스트를 보여준다. 보통 2차 그룹멤버들의 아이디가 보이게
                     된다. 여러명이 존재할 수도 있다.
   3) 사용예
     terran:x:507:prehee
(2) /etc/gshadow
   1) 설명: /etc/shadow와 비슷한 파일로 그룹의 암호를 관리하는 파일이다.
   2) 구성예
     groupname:password:admin:member
      => (설명)
        groupname : 그룹명을 나타낸다.
        password : 그룹의 패스워드를 나타낸다. 보통 암호화되어 기록된다.
        admin : 그룹관리자를 나타낸다. 여러명이 존재할 수도 있다.
        member : 그룹의 멤버를 나타낸다. 보통 2차로 속한 사용자의 아이디가 기록되며 여러명이
                존재할 수도 있다.
   3) 사용예
     terran:nLggKXgdf.KJE:posein:prehee

9. newgrp
(1) 설명: 자신의 소속된 그룹을 바꾼다.
(2) 사용법
    newgrp [새로운_그룹]
    => 보통 'newgrp 2차_그룹'하게 되면 2차 그룹에 속하게 된다. 이 상태에서 새로운 그룹명을
      입력하지 않고 newgrp 라고만 치면 원래 gid로 변환된다.
(3) 사용예
   [prehee@www prehee]$ id
   uid=509(prehee) gid=509(prehee) groups=509(prehee)
    => prehee 라는 사용자는 자기 자신의 아이디와 동일한 그룹에 속해있다.
   [prehee@www home]$ cd /home
   [prehee@www home]$ ls -l
     -- 생략 --
   drwxrwx---    3 siztank  terran       4096  1월 28 21:36 siztank
     -- 생략 --
    => siztank라는 사용자가 terran이라는 그룹에 속해있다. 이 상태에서는 prehee 라는 사용자는
      siztank라는 디렉토리로의 접근이 불가능하다. 그룹권한이 부여되어 있기 때문에 최소한 terra
      n 이라는 그룹에 속해 있어야 접근이 가능하다.
   [posein@www posein]$ gpasswd -a prehee terran
   Adding user prehee to group terran
    => posein이라는 terran 그룹관리자가 있는데 이 관리자가 prehee라는 사용자를 gpasswd 명령을
     사용하여 prehee라는 사용자를 그룹에 포함시켰다고 가정하자.
   [prehee@www prehee]$ newgrp terran
     => 이 때 prehee라는 사용자는 newgrp이라는 명령을 이용하여 terran 그룹에 속하도록 로그인
       그룹을 바꿀 수 있다.
   [prehee@www prehee]$ id
   uid=509(prehee) gid=507(terran) groups=509(prehee)
    => gid가 변경된 것을 알 수 있다.
   [prehee@www home]$ cd ~siztank
   [prehee@www siztank]$ pwd
   /home/siztank
    => siztank라는 디렉토리에 접근이 가능하다.
(4) 참고
   ㄱ. 설명: 사실 단순히 접근이 목적이라면 이 명령은 사용하여 그룹을 변경할 필요는 없다. 이 명
            령은 그룹관리자가 그룹에 속하게 한 뒤 당장 소속되어 있는 그룹을 바꿀 필요성이 있을
            때만 필요하다. 접근이 안된다고 하더라도 다시 로그인하면 자동으로 2차그룹에 속해진
            다. 그러나, 그룹을 변경하는 것은 그 사용자가 파일을 생성했을 때 그 파일의 소속 그
            룹과 밀접한 관련이 있다.
   ㄴ. 사용예
     a. [prehee@www prehee]$ id
        uid=509(prehee) gid=509(prehee) groups=509(prehee),507(terran)
         => 기본 그룹은 prehee 라는 것을 알 수 있다.
        [prehee@www prehee]$ touch aaa
         => aaa라는 빈 파일을 생성해본다.
        [prehee@www prehee]$ ls -l
        합계 0
        -rw-rw-r--    1 prehee   prehee          0  1월 28 21:56 aaa
         => 빈 파일의 그룹소유권이 prehee라는 것을 알 수 있다.
     b. [prehee@www prehee]$ newgrp terran
         => 소속 그룹을 terran으로 변경하였다.
        [prehee@www prehee]$ id
        uid=509(prehee) gid=507(terran) groups=509(prehee),507(terran)
         => gid가 terran그룹인 507번으로 바뀌었음을 알 수 있다.
        [prehee@www prehee]$ touch bbb
         => bbb라는 빈파일을 생성해본다.
        [prehee@www prehee]$ ls -l
        합계 0
        -rw-rw-r--    1 prehee   prehee          0  1월 28 21:56 aaa
        -rw-r--r--    1 prehee   terran          0  1월 28 21:57 bbb
         => bbb파일의 소속 그룹이 terran임을 알 수 있다.

10. 사용자 및 그룹 무결성 검사 명령
(1) 개요: 리눅스 및 유닉스 계열은 Shadow Password suite라는 것을 사용한다. 이 패키지는 /etc/
          passwd의 패스워드 부분을 /etc/shadow에서 하도록 해주는 역할 등을 한다. 내부적으로
          사용자 및 그룹관리할 때, 사용자관리는 '/etc/passwd'와 '/etc/shadow'파일에서 담당하고
          그룹관리는 '/etc/group'와 '/etc/gshadow'에서 한다. 사용자 및 그룹관리에서 사용자
          또는 그룹을 두 개의 파일에서 담당하니 그 두 개의 파일사이에 문제점이 있는지 없는지를
          검사할 필요가 있다. 그래서, Shadow Password Suite 패키지에서 이 두 파일간의 무결성
          검사 명령어를 제공하는데 이 무결성 검사 명령이 사용자관리(/etc/passwd와 /etc/shadow)
          는 pwck 가 하고 그룹관리(/etc/group와 /etc/gshadow)는 grpck가 합니다.
(2) 관련명령어
   1) pwck
    ㄱ. 설명: pwck는 password check의 약어로 /etc/passwd파일과 /etc/shadow파일을 검사한다.
    ㄴ. 하는일
      a. filed의 설정 검사
      b. 사용자와 그룹아이디 설정 검사
      c. 기본 그룹의 존재 유무 검사
      d. 홈디렉토리가 존재 유무 검사
      e. 로그인쉘이 존재 유무 검사
      f. 패스워드가 없는 계정의 존재 유무 검사
    ㄷ. 사용법
       pwck
    ㄹ. 사용예
       [root@www root]# pwck
       user adm: directory /var/adm does not exist
       user gopher: directory /var/gopher does not exist
       user ftp: directory /var/ftp does not exist
       user wnn: directory /home/wnn does not exist
       user apache: directory /var/www does not exist
       user webalizer: directory /var/www/html/usage does not exist
        => pwck는 /etc/passwd와 /etc/shadow파일을 검사하여 문제성이 있는 소지를 보여준다. 이
          예는 /etc/passwd파일에 계정이 존재하는 데 관련 디렉토리가 없다는 메시지이다.
   2) grpck
    ㄱ. 설명: grpck는 group password check의 약어로 /etc/group과 /etc/gshadow파일의 검사한다.
    ㄴ. 하는일
      a. field의 설정 검사
      b. 그룹아이디와 이름의 설정 검사
      c. 사용자와 관리자의 설정 검사
    ㄷ. 사용법
       grpck
    ㄹ. 사용예
      a. [root@www root]# grpck
         => 특별한 이상이 없으면 변화가 없다.
      b. (가정) 이상을 만들어 본다. 원래 terran이라는 그룹이 있다고 가정하고 임의로 /etc/group
               에서 vi편집기로 terran => terra로 바꾸어 본다.
        [root@www root]# grpck
        no matching group file entry

        delete line `terran::posein:prehee'
          => /etc/gshadow에 맞지 않는 부분이 있다고 삭제한다고 나온다.

Trackback
Reply

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

Trackback
Reply

출처 : 대전국제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인 사용자
              도 찾아주므로 주의해야 한다.

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