'user'에 해당되는 글 3건

  1. 2011.04.28 리눅스 계정관리 명령어 도움말
  2. 2010.04.11 Runas 이용한 관리자 권한으로 프로그램 실행
  3. 2009.06.19 오라클 User 생성 및 권한관리 (1)
2011. 4. 28. 11:32

리눅스 계정관리 명령어 도움말

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일로 지정한다.


출처 : http://uzoogom.com/

Trackback 0 Comment 0
2010. 4. 11. 18:17

Runas 이용한 관리자 권한으로 프로그램 실행

> 주제 : Runas를 이용하여 일반계정에서 관리자 권한 실행하기 

*개요

 - runas를 이용하면 서버로 직접 로그인 하지 않아도, Client에서 관리자 권한으로 관리 도구를 사용할 수 있다.
 - runas를 이용하면 여러가지 프로그램을 원하는 계정으로 실행할 수 있다.(관리도구나 메모장 등)
 - 실습을 위해 S1과 S2 서버가 구동되어 있어야 한다.

*학습 목표

 - runas 실행 방법 익히기
 - 문제발생시 해결


# runas를 이용하여 관리도구의 'Active Directory 사용자 및 컴퓨터'를 실행해 보자

 1. CMD창에서 'runas'의 사용법을 훑어보자.(시작 -> 실행 -> CMD -> runas /? 입력후 엔터)

 

*참고

 RUNAS [ [/noprofile | /profile] [/env] [/netonly] ] /user:<UserName> 프로그램
 : 명령어의 대괄호 안의 옵션은 생략 가능하지만, /user 부분은 반드시 입력해야 실행이 가능하다.

  

2. runas를 이용하여 XP1의 관리자계정으로 Active Directory 사용자 및 컴퓨터 프로그램을 실행해봤지만, 도메인 관리자 권한을 가진 사용자로 로그온을 하라는 경고 메시지가 나온다.

 

3. 경고메시지 확인후 프로그램은 실행되지만, 도메인 정보는 표시되지 않는다.

 

4. CMD창에 아까와는 다르게 S1(서버1)의 itstar.vm 도메인의 관리자계정을 입력해 주면, 프로그램이 실행되고 도메인 정보도 표시된다.

 

5. 이번에는 S2의 자식 도메인인 child.itstar.vm의 관리자계정으로 해주어도 실행된다.

 

6. 3개의 계정으로 실행되어진 'Active directory 사용자 및 컴퓨터' 결과를 확인해 보자.



출처 : http://www.cyworld.com/namacoel

Trackback 0 Comment 0
2009. 6. 19. 09:55

오라클 User 생성 및 권한관리

SYS 권한(privilege) 유포 확인 쿼리

1) DATABASE에 있는 SYS가 나눠준 모든 권한 보기

SQL> select * from dba_sys_privs;

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
HR                             UNLIMITED TABLESPACE                     NO
OE                             QUERY REWRITE                              NO
OE                             CREATE SNAPSHOT                          NO

;adm = with admin option으로 SYS가 HR에게 권한을 줄때 

EX) GRANT greate user TO hr with admin option을 받은 hr은 그 받은 권한만을 다른 대상에게 부여할 수 있다.

2) 모든 계정이 table에 대한 권한을 알아보려면.. 

SELECT  *   FROM  USER_TAB_PRIVS   --( 내가 가진 객체 권한 )

SELECT  *   FROM  USER_TAB_PRIVS_RECD  --( 내가 받은 권한 )

SELECT  *   FROM  USER_TAB_PRIVS_MADE  --( 모든 테이블의 권한 확인 )

SELECT  *   FROM  DBA_TAB_PRIVS  --( 모든 테이블 관련 권한 )


User의 생성 및 권한관리

    - User
      모든 Database객체는 특정 user의 소유로 되어 있으며 자신의 소유객체 외에 다른 소유의 객체는 권한이 있어야 접근이 가능
    - Oracle은 user로 Database 사용을 control
    - Database 생성시 자동으로 생성되는 User
      ① SYS
          DBA Role을 가지고 있으며 Data Dictionary Table의 소유자
      ② SYSTEM
          DBA Role을 가지고 있으며 Data Dictionary View의 소유자

⑴ User 생성 및 변경
    - User 생성 구문
       create user user명 identified by 패스워드명    

       SQL > show user          -- 현재 접속된 사용자명
       SQL > create user ocp identified by ocp;

    - User 변경 구문
       password 변경은 해당 user 혹은 dba Role안의 alter user 권한을 가지고 있는 user만 변경이 가능하다.

       SQL> alter user tonkjsp identified by tonkjsp1;
       SQL> conn tonkjsp/tonkjsp1
                연결되었습니다. 

⑵ 권한(Privilege)
    - 특정 SQL문을 수행 할 수 있는 권리.
    - Oracle의 모든 명령문은 그에 대한 권한이 있어야만 가능하다.
    - 권한에는 database에서 객체를 정의할 수 있는 System권한과 정의된 객체에 대한 특정 작업을 부여 할 수 있는 객체 권한이 있다.
    - System 권한에서 Any라는 옵션은 다른 계정 소유의 객체에게도 수행 할 수 있다.
       Drop any Table table명
    - 권한   

   - 권한 부여 및 회수

   ① system 권한 부여
       grant
               system 권한 [, system권한 ..., rol명... , role명 , .... ]
       to
               {user명 | role명  | public } , [{user명 | role명 | public } .... ]
               [with admin option] 

       SQL> grant create session, create table to user;
       SQL> grant create session to user1 with admin option 

   ② 객체 권한 부여
       grant
              객체 권한  [, 객체권한 ..., ] || all
              on 대상객체, 대상객체, ....
      to
             {user명 | role명 | public} [,{user명 | role명 | public } ... ]
             [with grant option] 

       SQL> grant execute on dbms_pipe
       SQL> to public ;
       SQL> grant upate(ename, sal) on emp
       SQL> to user1
       SQL> with grant option;        

   ③ system 권한 회수
        REVOKE
        system권한[, system권한.., role명, role명]
        from
        {user명 | role명 | public } [,{user명 | role명 | public } ...] 

        SQL> revoke create table from user1;

   ④ 객체 권한 회수
        REVOKE
        객체권한 [, 객체권한 ..,]  | ALL
        ON 대상객체, 대상객체, ....
        FROM
        {user명 | role명 | public } [,{user명 | role명 | public} ...]        

        SQL> revoke execute on dbms_pipe from winter;     

    ※ public , all,  with admin option , with grant option

     ① public
         특정 user가 아닌 모든 user에게 권한 부여 

     ② all
        객체 권한에 명시하는 것으로 해당 객체의 모든 권한을 부여 

     ③ with admin option
         권한 상속 

     ④ with grant option
        권한 상속, cascade ,,,,,, 

⑶ Role
    - 권한의 모음 , 권한을 묶어서 수많은 권한들을 편리하게 제어할 수 있는 기능 
    - 수행하는 명령문이 기존의 권한 부여 및 취소하는 명령과 동일
    - system권한 ,객체권한 모두, 같이 묶을 수 있다. 
    - role에 포함된 권한 설정을 변경하면 해당 role을 포함한 계정도 즉시 변경됨.
      그럼으로 구너한 설정 변경에 대한 조치를 취할 필요가 없다. 
    - 소유되지 않으면 schema  객체가 아니다. 
    - dba 관리자가 생성하면 아무 계정이나 자신의 권한을 포함시킬 수 있다. 
    - create role권한이 있으면 다른 계정이라도 role을 생성할 수 있으나 자신의 객체가 되지 않고 공동으로 사용하게 됨.

      SQL> conn system/manager
               연결되었습니다.
      SQL> create role arole;
               롤이 생성되었습니다.
      SQL> create role broke;
               롤이 생성되었습니다.
      SQL>  grant drop any table, select any table to arole;
                권한이 부여되었습니다.
      SQL> conn tonkjsp/tonkjsp1
                연결되었습니다.
      SQL> grant select on staff to broke;
                권한이 부여되었습니다.


=== User Managerment ===              

 - sys 사용자    : Database 내의 모든 권한을 갖구 있다.
 - system 사용자 : DBA, pw : manager     
 - scott 사용자 : pw : tiger, 사용자별 공간, 리소스 제한, 패스워드 관리, 세션관리 등
 - table, view, trigger등 database object는 사용자별로 생성, object 소유자는 해당 object를 생성한 사용자
                                      
* 사용자 생성 (system 계정에서)
  create user oratest identified by oratest;  //user:oratest pw:oratest
                                      
  create oratest indetified by oratest  
  default tablespace appl_data   // 해당 사용자 아이디가 사용할 테이블 등의 오브젝트들을 생성하고자 할때 할당되는 테이블스페이스
  temporary tablespace temp;     // 해당 사용자 아이디가 Sort, Group by 등의 작업을 수행하고자 할때 사용되는 테이블스페이스
                                      
  create oratest indetified by oratest  
  default tablespace appl_data        
  temporary tablespace temp           
  quota 15M on appl_data
  quota 10M on system;
                                      

* 변경
  alter user oratest identified by studyhard; (암호바꾸기)
                                      
  alter user oratest default tablespace users; (테이블스페이스 바꾸기)
                                      
  alter user oratest                    
  default tablespace users            
  quota 20M on users;                 
                                      

* 제거
  drop user oratest;                    
  drop user oratest cascade; (객체가 들어 있을때)

* user 보기 - 딕셔너리
  select * from dba_users;              
  select * from user_users;             

* 사용자 공간 할당 모니터링- 딕셔너리
  select * from user_ts_quotas;         
  select * from dba_ts_quotas;          
                                    
* 사용자 세션 모니터링 및 중단
  select sid, serial#, username, program from v$session;
  alter system kill session '13, 25060'; (sid, serial#)
                                      
  col program format A20;               
                                      

----------------------------------------------------------------------------------------
=== Password Managerment ===          
                                      
 - account locking : 횟수이상 틀리면 락 걸음.
 - password aging and expiration : password 유효기간 설정.
 - password history : 이전에 사용했던 password 다시 사용못함.
 - password complexity verification : 복잡성 체크

                                      
* account locking
 careate profile my_profile limit      
         failed_login_attempts 4  (4번 기회)
         password_lock_time 30;  (30일동안)
 alter user scott profile my_profile; (적용)
 alter user scott account unlock; (락걸렸을때 해제)
 alter user scott accout lock; (걍 잠구기)

                                       
* password aging and expiration
 create profile my_profile limit       
        failed_login_attempts 4  (4번 기회)
        password_lock_time 30  (30일동안)failed
        password_life_time 60  (유효 60일)
        password_grace_time 3  (유예기간 3일)
                                       
 alter user scott profile my_profile; (적용)
 alter user scott password expire; (걍 잠구기)

                                       
* password history
 create profile my_profile limit       
        password_reuse_time 60 (60일 동안 사용할수 없음)
        password_reuse_max unlimited;  
 alter user scott profile my_profile; (적용)

 create profile my_profile limit       
        password_reuse_max 3           
        password_reuse_max unlimited;  
 alter user scott profile my_profile; (적용)
                                       

* password complexity verification :스크립트(utlpwdmg.sql)사용
 - 스크립트 위치 : /oracle\Ora81\RDBMS\ADMIN\utlpwdmg.sql
 - sys 계정에서 해야한다.              
     
                                       
* 최종                                
 careate profile my_profile limit      
        failed_login_attempts 4  (4번 기회)      
        password_life_time 60  (패스워드 사용일수)
        password_reuse_time 60 (60일 동안 사용할수 없음)
        password_reuse_max unlimited   
        password_verify_function verify_function (암호검증_
        password_lock_time 1/24 (로그인 시도시 실패 후 account lock걸려있는 기간)
        password_grace_time 0; (첫번째 로그 성공후 password 소멸 전에 변경 할 수 있는 유예기간)

                                       
* profile 초기화
 careate profile my_profile unlimited  
        failed_login_attempts unlimited  (4번 기회)      
        password_life_time unlimited  (패스워드 사용일수)
        password_reuse_time unlimited (60일 동안 사용할수 없음)
        password_reuse_max unlimited   
        password_verify_function null (암호검증_
        password_lock_time unlimited  (로그인 시도시 실패 후 account lock걸려있는 기간)
        password_grace_time unlimited; (첫번째 로그 성공후 password 소멸 전에 변경 할 수 있는 유예기간)
                                       

* password 딕셔너리
 select resource_name, limit from dba_profiles
      where profile="my_profile' and resource_type = 'password';
                                       
 
 ----------------------------------------------------------------------------------------
 === 시스템 권한 === 
                  
 - create session : 궈한을 받은자(grantee) 데이타베이스 접속할 수 있게
 - create table : 테이블, 인덱스 생성, (unlimited tablespace 같이 준다.)
 - unlimited tablespace : 테이블스페이스에서 블록을 할당
 - select any table : 어떤 schema로 된 snapshot이라도 검색할 수 있다.
                                       
* 권한 주기 - system 권한에서
 create user acc_user identified by acc1030;
 grant create session to acc_user; (세션주기)
 grant create session to public; (전체 유저에게)
 grant create table, unlimited tablespace to acc_user;(table 생성 권한주기)
 
                                       
* 권한 회수
 revoke create session from acc_user; (권한 회수)
                                       
 
* 사용자가 다른사용자에게 권한주기 with admin option이 있어야 함
 connect system/manager                
 create user a_user identified by a1030;
 create user b_user identified by b1030;
 grant create session to a_user with admin option;
 connect a_user/a1030;                 
 grant create session to b_user with admin option;
                                       
* 딕셔너리                            
 select * from dba_sys_privs;          

                                       
----------------------------------------------------------------------------------------
=== object privileges ===                 
 
* 권한 주기
 connect scott/tiger                   
 grant select on emp to acc_user; (select 권한 주기)
 grant insert on emp to acc_user; (insert 권한 주기)
 grant update (sal) n emp to acc_user; (sal 컬럼 update 권한 주기)
 connect acc_user/acc1030;             
 select * from scott.emp;              
                                       
* 권한 회수
 revoke update on emp from acc_user;   
                                       
* 사용자가 다른사용자에게 권한주기 with admin option이 있어야 함
 - 시스템 권한은 계층적이다.           
 - revoke 할때 cascade 된다.           
                                       
* 딕셔너리                            
 user_tab_privs : 사용자가 소유자, 부여자 또는 권한을 받은 자인 경우의 오브젝트에 대한 권한.
 user_tab_privs_made : 사용자가 소유하고 있는 오브젝트에 대한 모든 권한
 user_tab_privs_recd : 사용자가 권한을 받은 자인 경우의 오브젝트에 대한 권한.
 user_col_privs : 사용자가 소유자, 부여자 또는 권한을 받은 자인 경우 열에 대한 권한
 user_col_privs_made : 사용자가 소유하고 있는 오브젝트의 열에 대한  모든 권한
 user_col_privs_recd : 사용자가 권하을 받은자인 경우의 열에 대한 권한
                                       
                                       
 ----------------------------------------------------------------------------------------
 
 === Roles ===                         
 
 - 권한들의 묶음                       
 - System권한, Object 권한 모두 구성되어 질수 있다.
 - Enable/Disable 될 수 있다.          
 - Role은 Password를 가질 수 있다.     
                                       
* 생성                                
 create role clerk_role not inentified; (암호 필요 X)
 create role clerk_role indentified by xyz901; (암호 필요)
                                       
* rolls에게 권한부여                 
 grant create session, create table to clerk_role;
                                       
* 사용자에게 부여                     
 grant clerk_role to sctt, other_role; 
                                       
* role 활성화/비활성화                
 set role clerk_role identified by xyz901; (clerk_role만 활성화, 나머진 비활성화)
 set role all excpt acct_role; (acct_role 빼구 모든 role 활성화)
 set role none; (모두 비활성화)        
                                       
* 예제                                
 create user pay_clack identified by pay_clerk;
 create user manager identified by manager;
 create user president identified by president;
                                       
 grant create session to pay_clerk, manager, president; (접속 권한 주기)
 grant create role to scott;(roll 생성 권한 주기)
                                       
 conn scatt/tiger;                     
 create role pay_clerk_role not identified;
 create role manager_role not identified;
 create role president_role not identified;
                                       
 grant select on emp to pay_clerk_role, manager_role;
 grant update(sal, comm) on emp to pay_clerk_role;
 grant update(mgr, depno) on emp to manager_role;
 grant pay_clerk_role, manager to president_role;
 grant pay_clerk_role to pay_clerk;    
 grant manager_role to manager;        
 grant preident_role to presidet;      
                                       
* 딕셔너리
 role_sys_privs  : role에 부여된 시스템 권한에 대한 정보
 role_tab_privs  : role에 부여된 테이블 권한에 대한 정보
 role_role_privs : 다른 role에 부여된 role에 대한 정보
 session_roles   : 현재 사용자에게 활성화된 role에 대한 정보
 user_role_privs : 사용자에게 부여된 role에 대한 정보
 dba_sys_privs   : 사용자 및 role에 부여된 시스템 권하에 대한 정보
 dba_roles       : 데이터베이스에 존재하는 모든 role에 대한 정보


Trackback 0 Comment 1
  1. 최윤호 2010.05.31 14:27 address edit & del reply

    좋은 정보 감사합니다^^