본문 바로가기

Dev/Dev:: Linux

[Day003] Linux 3일차 계정 및 그룹

● 계정 관리

   - 계정 : OS를 사용할 수 있는 허락받은 사용자


   1. useradd  - 계정 생성 명령

     형식) ]# useradd [옵션] 계정명    

       - 동일한 이름의 계정은 생성할 수 없다.

       - 옵션은 기본적으로 제공되는 정보를 사용하지 않고 다른 정보를 사용할 경우 적용


     ex)  ]# useradd kim

           ]# ls -l  /home   => kim 디렉토리 생성 확인 : kim 계정의 홈디렉토리

                => /home 디렉토리 하위에 계정명과 동일한 이름의 디렉토리가 자동 생성

           ]# groups  kim   =>  kim 계정의 그룹 포함 관계를 출력하는 명령

           kim  :  kim          =>  계정명 : 그룹명   -  kim 계정은 kim 그룹에 포함

                =>  계정명과 동일한 이름의 그룹을 생성하여 자동 포함 시킨다.

          ]# grep kim /etc/passwd   =>  /etc/passwd 파일에 kim 단어를 포함한 행 출력

           kim:x:501:501::/home/kim:/bin/bash     =>   계정 생성을 하면 한 줄 추가  

      ※ /etc/passwd : 리눅스 계정의 정보를 저장하고 있는 파일(데이타 구분자는 :를 사용한다.)



                  (1):(2):(3):(4):(5):(6):(7)  => 한 줄이 계정에 대한 정보를 표현

           1) 계정명

           2) 암호 - 원래 암호는 /etc/passwd  파일에 암호화 되어 저장 되었다.

                         /etc/passwd 파일은 모든 계정이 읽을 수 있다. 

              => 암호화 되어 있는 정보를 디코더(해독) 프로그램이 개발되어 보안이 위험

              => shadow 프로그램을 이용하여 암호만 따로 숨겨서 저장

(/etc/shadow 파일 - 관리자만 사용 가능)

           3) UID - 계정을 구분하는 고유번호

              0 : 관리자 계정  

          1 ~ 499 : 시스템 계정(시스템을 제어하는 계정) => 로그인 되지 않도록 생성하는 것이 원칙

         500~60000 : 일반 계정


           4) GID   - 그룹을 구분하는 고유번호이며 계정이 포함된 그룹번호가 표시

                  => 계정의 기본그룹(Default Group : 삭제되지 않는 그룹)                

               

           5) 설명문(Comment) - 계정에 대한 설명(생략 가능)

       

           6) 홈디렉토리 - 계정의 홈디렉토리를 표시


           7) 사용 Shell  - 계정이 로그인하여 사용하는 쉘의 종류를 표시 



 ]# grep kim /etc/shadow   

           kim:!!:15952:0:99999:7:::    =>  계정 생성을 하면 한 줄 추가

            =>   계정의 암호 관련 정보를 저장한 파일(관리자만 사용할 수 있다.) 


           ※ /etc/shadow - shadow 프로그램에 의해 계정의 암호 관련 정보를 저장


           (1):(2):(3):(4):(5):(6):(7):(8):  

            1) 계정명

            2) 암호 - 암호 되어 저장  => !로 시작되는 암호는 사용할 수 없는 암호

               (처음 생성된 계정은 !로 시작되는 암호를 가지고 있다. => 관리자는 반드시 계정 생성                 후 암호를 변경해야 된다.)

            3) 암호 변경날짜(일) - Unixtime 형식으로 표현된 날짜

(Unixtme 또는 Timestamp - 1970년 1월 1일을 기준으로 사용된 값)             

            4) 암호 최소지속시간(일) - 암호를 변경 후 최소 사용해야 되는 시간               

5) 암호 최대지속시간(일) - 암호를 변경 후 최대 사용할 수 있는 시간 => 보안상 변경하는 것을 추천

         6) 경고시간(일) - 암호 최대지속시간이 다가올 경우 경고메세지가 출력되도록 지정한 시간

         7) 암호 비활성화(Inactive) 시간(일) - 암호 최대지속시간에 초과된 경우 암호를 변경할 수             있도록 제공하는 유효시간

               => 비활성화 시간도 초과되면 더 이상 암호를 사용할 수 없다.(암호최대지속시간을 

변경한 경우 반드시 설정)

           8) 계정 비활성화(Expire) 날짜(년-월-일) - 계정을 사용하지 못하도록 날짜를 지정 



    ]# passwd  kim   =>  계정의 비밀번호를 변경(계정명이 생성되면 현재 로그인 계정) 

             => 비밀번호를 2번 입력(비밀번호 규칙 무시)

※ 일반계정은 관리자가 알려준 비밀번호로 최초 로그인 후 자신의 비밀번호를 반드시 변경해야 된다.

     ]$ passwd   => 기존 비밀번호 입력 후 새로운 비밀번호 2번 입력

(비밀번호 규칙에 위배되면 재입력) 


※ 가상콘솔 환경으로 이동

             [ctrl] + [alt] +[f1]~[f6]  =>  6개의 가상콘솔 이동

             [ctrl] + [alt] +[f7]   =>  x-window 복귀 

 - 계정 생성 관련 파일 => useradd 명령시 참조하는 파일

]# vi  /etc/login.defs    =>   암호 유효기간 및 홈디렉토리 생성 유무등의 기본정보를 저장한 파일  

   ...

         PASS_MAX_DAYS   99999        =>  암호 최대지속시간 : 99999 >> 30 변경  

         PASS_MIN_DAYS    0               =>  암호 최소지속시간

         PASS_MIN_LEN      5               =>  비밀번호 최소길이(5초과)

         PASS_WARN_AGE   7               => 비밀번호 변경 관련 경고날짜

         CREATE_HOME     yes     =>  계정 생성시 홈디렉토리 자동 생성 유무

         UMASK      077     =>  계정 홈디렉토리의 기본 생성권한을 조절하기 위한 데이타



  ]# vi  /etc/default/useradd     =>   홈디렉토리 생성 위치 및 사용 쉘등을 지정하는 파일   

          GROUP = 100       => 계정이 포함될 수 있는 최대 그룹수

          HOME = /home     => 홈디렉토리 생성 위치 지정

          INACTIVE = -1      => 암호 최대지속시간 종료 후 암호 변경하도록 제공해 주는 시간(-1 


>> 5 : 비밀번호 변경 기간 5일 제공) 

          EXPIRE =              => 계정 사용 유효기간 지정("년-월-일" 형식)   

          SHELL = /bin/bash    =>  계정 사용 쉘 지정

          SKEL = /etc/skel     =>  계정의 홈디렉토리 안에 붙여넣기 될 파일이 존재하는 

   디렉토리 지정

          CREATE_MAIL_SPOOL=yes    => 메일 스풀기능 사용 유무 지정 

 

  ※ ]# useradd -D  명령으로 /etc/default/useradd 변경 가능

         ]# useradd lee

         ]# grep lee /etc/shadow

         lee:!!:15952:0:30:7:5::


 - useradd 옵션 => 기본 설정파일의 정보를 활용하지 않고 다른 값으로 계정을 생성할 경우 사용


         ex)  ]# useradd -u 1000 kim    =>  -u : UID 지정

               ]# useradd -d /home/kkk  kim   =>  -d : 홈디렉토리 지정          

               ]# useradd -M -s /bin/false  kim   =>  -M : 홈디렉토리 생성 불가  

 -s : 사용 쉘 지정(/bin/false : 로그인 불가)

                    => 시스템 계정 생성 경우

       ]# useradd -g  root  kim    =>  -g  :  계정의 기본그룹을 지정

(kim 계정은 root 그룹(기본그룹)에 포함)   

      ]# useradd -G  root  kim     =>   -G : 기본그룹외에 다른 그룹에 추가적인 포함(kim 계정은                                                             kim 그룹(기본그룹) 및 root 그룹에 포함)

     ]# useradd -f 3 -e 2013-12-31 kim    =>  -f : inactive 시간 지정    -e : expire 날짜 지정


   2. usermod   =>  계정의 정보를 변경하는 명령

     형식) ]# usermod 옵션 계정명   

         => 옵션은 useradd  옵션과 동일

     ex) inactive 시간을 10일로 변경

          ]# usermod -f 10 kim


   3. userdel   =>  계정 삭제 명령

      형식) ]# userdel [-r] 계정명


      ex) ]# userdel  kim    =>  kim 계정만을 삭제

            ]# userdel  -r  lee    =>  lee 계정 및 lee 소유 파일 삭제

            ]# ls -l /home    =>  kim 디렉토리 존재, lee 디렉토리 삭제

       ※ 파일(디렉토리)의 소유자(소유그룹)가 UID(GID)로 표시되는 경우 해당 소유자

(소유그룹) 가 존재하지 않기 때문 

           => 소유자(소유그룹) 변경



     ※ chage : 계정의 암호 관련 정보를 확인하거나 변경하는 명령

         형식)  ]# chage  옵션  계정명               

          ex) ]# chage -l kim    =>  -l : 암호 관련 정보를 확인



                ]# chage -M 30 kim    =>  -M : 암호 최대지속시간 변경

                ]# chage -I  5  kim     =>   -I(대문자 I) : inactive 시간 변경

                ]# chage -E 2013-12-31 kim   =>  -E : Expire 날짜 변경


● 그룹 관리 

  - 그룹 : 계정들의 모임(집합)

  - 그룹 사용 이유 : 파일 권한을 보다 쉽게 부여 하기 위해

                           계정을 보다 편리하게 관리 하기 위해  

     => 그룹에 계정을 포함 또는 삭제하는 명령이 중요


  1. groupadd  -  그룹 생성 명령        

    형식)  ]# groupadd  [옵션]  그룹명      

      ex)  ]# groupadd test

            ]# grep test /etc/group   =>   Group 정보를 저장하고 있는 파일

            test:x:501:

              => 그룹명:암호:GID:계정명,계정명,....  

                                          -------------

                                                   └ /etc/passwd에 표시된 기본그룹은 제외  

            ※ 그룹암호 : 예전 그룹으로 로그인 할 경우 사용한 암호지만 현재는 사용되지 않는다.

                 =>  shadow 프로그램에 의해 암호는 /etc/gshadow  파일에 저장

       - 그룹은 useradd 명령에 의해 자동 생성 된다.  

         ex)  ]# useradd kim

               ]# grep kim /etc/group

               kim:x:502:

 

   2. groupmod  -  그룹 정보 변경(그룹명 또는 GID 변경)

      형식)  ]# groupmod 옵션 그룹명


   3. groupdel  -  그룹 삭제

      형식)  ]#  groupdel 그룹명

      ex)  ]# groupdel test

             ]# groupdel root    =>   root 그룹 삭제 불가 : 계정의 기본그룹은 삭제되지 않는다.

      - userdel 명령을 사용하면 그룹이 자동으로 삭제된다.

          ex)  ]# userdel -r kim

                ]# grep kim /etc/group   =>  kim 그룹은 존재하지 않는다.



● 계정과 그룹 관계

   - 계정을 그룹에 포함 시키거나 없애는 방법

   - useradd 명령, usermod 명령 또는 gpasswd 명령 사용


   ex)  ]# useradd  aaa   =>  aaa 계정 생성 후 aaa 그룹(자동생성)에 포함

             - /etc/passwd 및 /etc/group를 확인


          ]# groups  aaa     =>  계정이 포함된 그룹 확인

          aaa  :  aaa                 그룹명 : 계정명,계정명,...


          ]# id  aaa            =>  계정이 포함된 그룹 확인

          uid=502(aaa)    gid=502(aaa)    groups=502(aaa)


          ]# groupadd test    =>  그룹 생성(/etc/group 확인)


          ]# useradd -g test  bbb   =>  bbb 계정 생성 후 test 그룹에 포함


          ]# id  bbb

          uid=503(bbb)    gid=503(test)    groups=503(test)


          ]# useradd -G  test  ccc  =>  ccc 계정 생성 후 ccc 그룹(자동생성), test 그룹에 포함       

          ]# id  ccc

          uid=504(ccc)    gid=504(ccc)    groups=504(ccc),503(test)


]# usermod -G  root,ccc  aaa   =>  aaa 계정을   root 그룹 및  ccc 그룹에 추가 포함


          ]# id  aaa

          uid=502(aaa)    gid=502(aaa)    groups=502(aaa),0(root),504(ccc)


          ]# gpasswd  -a  ccc  root    =>  root 그룹에 ccc 계정 추가(-a)


          ]# id  ccc        

          uid=504(ccc)    gid=504(ccc)    groups=504(ccc),0(root),503(test)


          ]# gpasswd  -d  ccc  test    =>  test 그룹에서 ccc 계정 삭제(-d) 


          ]# id  ccc

          uid=504(ccc)    gid=504(ccc)    groups=504(ccc),0(root)


          ]# gpasswd -M  aaa,ccc  test   =>  test 그룹에 aaa,ccc 계정 모두 추가(-M)

 

          ]# id  aaa

           uid=502(aaa)    gid=502(aaa)    groups=502(aaa),0(root),503(test),504(ccc)


          ]# id ccc 

           uid=504(ccc)    gid=504(ccc)    groups=504(ccc),0(root),503(test)


          ]# gpasswd -A  aaa  test    =>  test 그룹의 관리자로 aaa 계정을 임명


                => aaa 계정은  gpasswd  명령을 이용하여 test 그룹에 계정 추가 또는 삭제 가능


          ]# gpasswd  test     =>  그룹에 암호를 변경


         ※ 그룹관리자 정보 및 그룹 암호는 /etc/gshadow 파일에서 확인 가능        


         ※ /etc/passwd 및 /etc/group 파일을 수정하여 사용해도 된다.