Self Join

RHCE 2009. 6. 2. 13:44

emp테이블에는 직원들의 매니저가 있는 칼럼이 있는데, 이름이 있는 것이 아니라, 사원번호로 존재한다. 매니저의 사원번호가 있는 칼럼은 mgr이다. mgr에 있는 사원번호를 토대로 empno 칼럼을 조회해서 이름을 알 수 있다. 이럴 때 같은 테이블에 있는 칼럼들이지만 조인해서 처리할 수 있는데 이렇게 조인하는 것을 Self Join이라고 한다.

Self Join은 같은 테이블에 대해 두 개의 alias를 작성(테이블 구분)함으로 FROM 절에 두 개의 테이블을 사용하는 것과 같이 한다.

SELECT worker.ename || '의 관리자는 ' || manager.ename || '이다.'
FROM emp worker, emp manager

//emp테이블 안에서 마치 두 개의 테이블이 있는 것처럼 worker와 manager로 나누었다.
WHERE worker.mgr = manager.empno;


WORKER.ENAME||'의관리자는'||MANAGER.E
-------------------------------------
SMITH의 관리자는 FORD이다.
ALLEN의 관리자는 BLAKE이다.
WARD의 관리자는 BLAKE이다.
JONES의 관리자는 KING이다.
MARTIN의 관리자는 BLAKE이다.
BLAKE의 관리자는 KING이다.
CLARK의 관리자는 KING이다.
SCOTT의 관리자는 JONES이다.
TURNER의 관리자는 BLAKE이다.
ADAMS의 관리자는 SCOTT이다.
JAMES의 관리자는 BLAKE이다.

WORKER.ENAME||'의관리자는'||MANAGER.E
-------------------------------------
FORD의 관리자는 JONES이다.
MILLER의 관리자는 CLARK이다.

[출처] Self Join|작성자 이경모


'RHCE' 카테고리의 다른 글

Default Editor 변경하기  (0) 2009.06.02
패스워드 만료 정책  (0) 2009.06.02
사용자 계정 삭제  (0) 2009.06.02
사용자를 다수의 그룹에 포함시킬 때...  (0) 2009.06.02
생성되는 사용자의 umask값 조정  (0) 2009.06.02
Posted by 으랏차
,

Default Editor 변경하기

RHCE 2009. 6. 2. 13:44
리눅스에서는 기본적으로 vi 에디터가 Default Editor로 설정되어 있다.
리눅스용 에디터는 vi이외에도 nano, emacs 등 여러 가지가 있는데 다른 에디터로 변경하려면 환경설정파일인 /etc/bashrc 파일에서 아래와 같이 설정해주면 된다.
EDITOR = /usr/bin/nano
export EDITOR

위 설정은 Default Editor를 nano로 변경한다는 의미이다.

'RHCE' 카테고리의 다른 글

Self Join  (0) 2009.06.02
패스워드 만료 정책  (0) 2009.06.02
사용자 계정 삭제  (0) 2009.06.02
사용자를 다수의 그룹에 포함시킬 때...  (0) 2009.06.02
생성되는 사용자의 umask값 조정  (0) 2009.06.02
Posted by 으랏차
,

패스워드 만료 정책

RHCE 2009. 6. 2. 13:43
패스워드는 기본값으로 만료되지 않는다. 이것은 사용자가 같은 패스워드를 영원히 사용할 수 있다는 것을 의미한다.
하지만 이러한 설정은 패스워드가 노출되거나 공격 당하더라도 그대로 계속 유지되는 보안상의 문제가 있다.
그렇기 때문에 한 패스워드를 일정기간동안만 사용할 수 있도록 만료 정책을 적용할 수 있다.
패스워드가 만료되도록 설정하는 것은 튼튼한 보안 정책의 일부분이다.
/etc/login.defs파일에서 만료 기본값 설정을 수정할 수 있다.
여기 설정된 정책이 앞으로 생성될 사용자에게 적용되는 것이다.

기존 사용자의 패스워드 만료기간을 설정하려면 chage 명령어를 사용한다.
`chage [사용자명]`을 입력해서 대화식으로 패스워드 만료기간을 설정할 수 있고, 아래의 특정 옵션을 사용해서 설정할 수 있다.
-m : 패스워드를 사용할 수 있는  최소 기간. (일)
-M : 패스워드를 사용할 수 있는 최대 기간. (일)
-i : 패스워드가 만료된 후에 계정을 잠그기까지 비활성화 상태 기간. (일)
-E ; 계정이 만료되는 날짜. (YYYY-MM-DD 형식)
-W : 경고 메시지가 시작하고 패스워드를 변경하기 전까지 기간. (일)
-l : 설정 목록 표시.

`chage -m 100 visitor`의 형식으로 사용하면 된다.
(visitor사용자의 패스워드 최소 기간을 100일로 설정

'RHCE' 카테고리의 다른 글

Self Join  (0) 2009.06.02
Default Editor 변경하기  (0) 2009.06.02
사용자 계정 삭제  (0) 2009.06.02
사용자를 다수의 그룹에 포함시킬 때...  (0) 2009.06.02
생성되는 사용자의 umask값 조정  (0) 2009.06.02
Posted by 으랏차
,

사용자 계정 삭제

RHCE 2009. 6. 2. 13:43
userdel 명령어는 시스템에서 사용자 계정을 삭제한다.
사용자 홈 디렉토리에 아직 필요한 정보가 있을 수 있으므로 `usermod -L`명령으로 삭제하지 않고 우선 잠궈두는 것이 현명한 방법이다.

userdel 명령어를 사용하여 계정을 삭제할 때 -r 옵션을 사용하면 사용자 홈 디렉토리와 메일박스까지 모두 삭제하게 된다.
해당 홈 디렉토리를 삭제하지 않고 계정을 삭제하면 시스템에 다음 사용자를 추가할 때 파일 소유권 문제가 생길 수 있으므로 가능하면 -r 옵션을 붙여주는 것이 좋겠다.

그리고 사용자 소유의 파일이 남아 있는지 확인하는 것이 좋다.
`find / -uid 500`
사용자 uid 500의 사용자가 소유한 파일을 찾는 명령이다.

'RHCE' 카테고리의 다른 글

Default Editor 변경하기  (0) 2009.06.02
패스워드 만료 정책  (0) 2009.06.02
사용자를 다수의 그룹에 포함시킬 때...  (0) 2009.06.02
생성되는 사용자의 umask값 조정  (0) 2009.06.02
할당량 구현  (0) 2009.06.02
Posted by 으랏차
,
회사에 영업팀, 인사팀, 웹팀이 있다고 가정하자.
팀원은 영업팀은 joshua과 alex, 인사팀은 dax와 bryan, 웹팀은 zak와 ed 으로 구성되어 있다.
이 때 영업팀은 sales, 인사팀은 hr, 웹팀은 web로 그룹 이름이 구성되어 있고, 사용자 이름은 이름과 동일하게 구성되어 진다.
팀원들은 소속팀 그룹에 포함이 되어야 하고, 이들을 관리하는 manager는 모든 팀 그룹에 소속되어야 한다.
이럴 때 usermod 명령을 이용하여 그룹에 포함시켜주면 되는데 이 때 각팀원들은
usermod -G 소속그룹명 사용자명을 해주면 되지만,(사용자이름과 동일한 기본 그룹은 놔두고 2차 그룹에 포함시켜야 하므로 -g가 아닌 -G를 쓴 것이다.) manager인 경우에는 다르다.

`usermod -G sales manager`
`usermod -G hr manager`
`usermod -G web manager`

위와 같이 명령을 세 번 내려주면 아지막 web 그룹에만 소속이 된다.
즉, 2차그룹에 추가를 시켜주는 것이 아니라 2차 그룹을 한번 지정해주면 그 다음부터는 2차 그룹이 변경이 된다는 것이다.
그러므로 위와 같이 각각 적어주는 것이 아니라 그룹을 한꺼번에 적어줘야 한다.

`usermod -G sales,hr,web manager`

이렇게 하면 manager가 sales, hr, web에 모두 소속될 수 있는 것이다.
이 때, sales, hr, web와 같이 쉼표 사이에 공백이 있으면 실행이 되지 않으므로 공백이 없이 쉼표 다음에 바로 그룹이름을 입력하여야 하는 것을 명심하자.

위와 같은 방법 외에도 -a옵션을 쓸 수 있다.
-a 옵션을 쓰면 추가로 그룹을 넣어줄 수 있지만 한 개씩만 추가가 가능하다.
즉, 위의 경우는

`usermod -a -G sales manager`
`usermod -a -G hr manager`
`usermod -a -G web manager`

이렇게 명령을 내려줘야 한다는 것이다.

사용자에 그룹을 한 개 추가할 때는 -a 옵션을 쓰는게 편하나 여러 개를 추가할 때는 그룹을 한꺼번에 쓰는게 편하다.

'RHCE' 카테고리의 다른 글

패스워드 만료 정책  (0) 2009.06.02
사용자 계정 삭제  (0) 2009.06.02
생성되는 사용자의 umask값 조정  (0) 2009.06.02
할당량 구현  (0) 2009.06.02
ACL (Access Control List)  (0) 2009.06.02
Posted by 으랏차
,
현재 존재하고 있는 사용자의 umask값을 조정해주려면 사용자의 홈디렉토리에 숨겨져 있는 .bashrc파일에 umask값을 지정해주면 된다.

앞으로 생성되는 사용자에 umask값을 지정해주려면 여러가지 방법이 있을 수 있지만,
/etc/skel 디렉토리를 이용하면 된다.

/etc/skel은 사용자 생성시 그 사용자의 홈디렉토리에 /etc/skel 디렉토리의 내용이 복사가 되는 것이다.

사용자의 쉘 환경설정은 .bashrc파일을 참조하기 때문에 /etc/skel 디렉토리에 .bashrc에 원하는 umask값을 지정해주면 앞으로 생성되는 사용자에게 그 umask값이 지정된다는 말이다.

'RHCE' 카테고리의 다른 글

사용자 계정 삭제  (0) 2009.06.02
사용자를 다수의 그룹에 포함시킬 때...  (0) 2009.06.02
할당량 구현  (0) 2009.06.02
ACL (Access Control List)  (0) 2009.06.02
보안 문맥  (0) 2009.06.02
Posted by 으랏차
,

할당량 구현

RHCE 2009. 6. 2. 13:42
사용자에게 용량제한, 파일 개수의 제한을 둘 수 있다.
quota 패키지를 사용해서 제한을 둘 수 있다.
그러면 diskhog라는 사용자에게 1024K 보다 더 큰 공간을 사용할 수 없도록 설정하고 용량이 512K를 넘으면 경고메시지가 나오게 설정하는 것을 예제로 배워 나가보자.

1. quota패키지 설치 확인.
   quota패키지가 시스템에 설치 되어 있는지 먼저 확인한다.
   `rpm -qa | grep quota
   명령을 실행해서 존재한다면 'quota-3.13-1.2.3.2.el5'와 같은 형식의 패키지가 있을 것이고,
   없다면 검색이 되지 않늘 것이다.
   만약 없다면 RPM파일을 다운받아서 설치하도록 하자. yum으로 설치해도 된다.

2. /etc/fstab 설정 변경.
   /etc/fstab 파일에 quota를 적용할, 즉 사용자 할당량을 구현할 파티션의 옵션부분에
   default와 함께 usrquota를 추가한다.
   여기서는 /home에 적용한다.

3. Remount
   /etc/fstab의 /home의 옵션을 변경했으니 mount를 다시 해준다.
   `mount -o remount /home`

4. 데이터베이스 생성 및 업데이트
   quota를 구현하기 위해서는 적용할 파티션에 대한 데이터베이스가 생성이 되어 있어야 한다.
   이미 생성이 된 데이터베이스가 있다면 업데이트를 해줘야 quota가 적용 되겠다.
   데이터베이스 파일은 aquota.user나 aquota.group 이라는 이름으로
   해당 파티션 최상위 디렉토리에 저장된다.
   사용자 할당량 구현할 때는 aquota.user파일이 생성되고, 그룹 할당량을 구현할 때는
   aquota.group파일이 생성됨을 기억하자.
   생성 및 업데이트 명령은 quotacheck 명령이다.
   여기서는 `quotacheck /home`을 내려주면 된다.
   위와 같은 명령을 내리면 /home 디렉토리에 aquota.user 파일이 생성 및 업데이트가 되는데
   quotacheck에는 아래와 같이 옵션이 있다고 한다.
   -a : 디스크 사용량 할당 활성화, 마운트된 파일 시스템 확인.
   -u : 사용자 계정 디스크 사용량 할당 정보 체크
   -g : 그룹 디스크 사용량 할당 정보 체크
        사용자 할댱량 구현이 아닌 그룹 할당량은 이 옵션을 쓰면 된다.
        즉, 만약 /home에 그룹할당량을 구현할 때는
        `quotacheck -g /home`라고 하면 된다는 말이다.
   -v : 사용량 할당 확인 작업의 진행을 상세한 정보로 보여줌.
   -c : 디스크 사용량 할당 파일 생성.
   -m : file system이 동작 중인 상태에서 강제로 quotacheck
   -f : 디스크 사용량 할당이 비활성화 시에 강제로 quotacheck 시도
   위에서 내린 명령처럼 `quotacheck /home` 해도 되는데, 위의 옵션을 이용해서
   ` quotacheck -acugfmv`을 입력하면 /home에 자동으로 데이터베이스가 업데이트 된다.
   /etc/fstab에 설정된 usrquota옵션을 체크해서 /home을 자동으로 찾는 것 같다.

5. quotaon
   데이타베이스를 생성/업데이트 했다면 quota를 시작할 수 있다.
   사용자 할당 세부 설정을 하기 이전에 quota를 먼저 시작해도 된다.
   `quotaon /home`

6. 사용자 할당 세부 설정.
   edquota명령을 이용해서 사용자에게 사용량, 파일 개수를 제한한다.
   `edquota diskhog`
   위와 같은 명령을 내리면, 아래와 같이 설정 화면이 vi 편집기를 통해 보여진다.
   Disk quotas for user diskhog (uid 722):
   Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda7                        48          0          0         15        0        0
   blocks는 현재 사용용량을 표시한다.
   soft는 경고 메시지를 보낼 용량을 표시한다.
   즉 여기에 적은 용량이 넘으면 경고 메시지가 사용자에게 보여진다.
   여기서는 예제의 조건에 맞게 512정도로 적으면 된다.
   hard는 최대 용량을 표시한다. 여기서는 1024K를 넘으면 안되므로 1024를 적으면 된다.
   용량 단위는 K바이트이다.
   inodes는 현재 파일, 디렉토리의 사용 개수를 표시한다.
   soft, hard는 위와 마찬가지이고 다른 점은 여기는 용량이 아니라 파일의 개수라는 것이다.
   * diskhog의 quota설정을 똑같이 다른 사용자에게도 적용하려면
     `edquota -p diskhog 적용할 사용자명`과 같이 명령을 내리면 된다.
   할당량 세부 설정은 위와 같이 edquota명령을 사용해서 설정해줄 수도 있고,
   setquota명령을 사용할 수도 있다.
   `setquota -u diskhog 512 1024 0 0 /home`
   이런식으로 말이다!

7. 할당량 확인
   현재 시스템에서 할당량 제한이 적용된 현황을 확인할 수 있다.
   `repquota /home`
   위와 같이 명령을 내리면 아래와 같이 결과가 나타난다.
   User            used    soft    hard  grace    used  soft  hard  grace
-------------------------------------------------------
root      --  154252       0       0              8     0     0      
scv       --      64       0       0             16     0     0      
drone     --      48       0       0             12     0     0      
probe     --      48       0       0             12     0     0      
myungsik  --      48       0       0             12     0     0      
sehun     --      48       0       0             12     0     0      
guest     --      48       0       0             12     0     0      
movie     --     188       0       0             39     0     0      
admin     --      48       0       0             12     0     0      
student   --   11464       0       0            215     0     0      
visitor   --      52       0       0             13     0     0      
joshua    --      52       0       0             13     0     0      
alex      --      52       0       0             13     0     0      
dax       --      48       0       0             12     0     0      
bryan     --      48       0       0             12     0     0      
zak       --      48       0       0             12     0     0      
ed        --      48       0       0             12     0     0      
manager   --      48       0       0             12     0     0      
diskhog   --       48      512   1024            15     0     0      

맨 아래에 diskhog를 보면 1024k가 넘지 않도록 잘 설정되어 있다.
soft, hard에 0이 입력이 된 것은 quota를 사용하지 않는 의미이다

[출처] 할당량 구현|작성자 이경모

'RHCE' 카테고리의 다른 글

사용자를 다수의 그룹에 포함시킬 때...  (0) 2009.06.02
생성되는 사용자의 umask값 조정  (0) 2009.06.02
ACL (Access Control List)  (0) 2009.06.02
보안 문맥  (0) 2009.06.02
chcon / restorecon  (0) 2009.06.02
Posted by 으랏차
,

ACL (Access Control List)

RHCE 2009. 6. 2. 13:42
ACL(Access Control List)은 디렉토리 및 파일에 특정 사용자, 그룹에 특정 권한을 넣어 줄 수 있는 기능이다.

ext3 파일 시스템에서는 파일 및 디렉토리에 대한 접근 권한을 소유자, 소유그룹, 기타사용자로 제어 한다.
이러한 상태는 기타 사용자 중에 A라는 사용자에게만 특정 접근 권한을 주고 싶은데 그런 작업은 불가능하다는 얘기다.
물론, A사용자를 소유그룹에 넣어주고 소유 그룹에 특정 권한을 넣어줄 수는 있으나, 이런 이유로 소유 그룹에 넣어줄 수는 없는 상황이 있을 수 있기 때문에 그 또한 어려울 수 있다.
예를 들어보자.
insa라는 인사팀 디렉토리가 있는데, 이 디렉토리는 인사팀원들만 읽고 쓸 수 있다.
여기에 프로젝트팀원 중 한 명에게 insa 디렉토리를 읽을 수 있는 권한을 주어야 하는데, 프로젝트팀원을 인사팀 그룹에 넣을 수는 없는 일이다.
타 팀원을 인사팀 그룹에 넣을 경우, insa디렉토리 말고도 인사팀의 다른 소유 디렉토리를 읽을 수 있는 위험이 있고, 여러 가지 혼선이 있을 수 있기 때문이다.

이럴 때 ACL을 사용하면 문제는 해결 되는 것이다.
아래 문제를 풀면서 ACL에 대해 이해해보자.

문제> 회사에는 Amy, Arthur, Ann 이라는 세 명의 회계사가 있고, Austin이라는 디렉터가 있다.
       (Amy, Arthur, Ann, Austin은 모두 acct라는 그룹에 속해 있다.)
       Amy 소유의 디렉토리를 Arthur, Ann은 읽고 쓸 수 있고, Austin은 디렉터이기 때문에
       읽기만 할 수 있게 설정하려고 한다. ACL을 이용해 설정하자.
      
   먼저 root로 로그인해서 /acct라는 디렉토리를 Amy 소유, acct그룹 소유로 만들고
   권한은 755로 설정한다.
   이 상태에서는 Amy는 읽고 쓰기가 가능하고 acc그룹과 기타 사용자는 읽을 수만 있다.
   여기서 acc그룹의 Arthur, Ann 만 읽고 쓰기가 가능하게 만들려면 ACL을 이용한다.
   `setfacl -m u:Arthur:rwx /acct`
   `setfacl -m u:Ann:rwx /acct`
   ACL을 이용해 /acct 디렉토리에 Arthur과 Ann 사용자가 읽고 쓰기가 가능하게 만든 것이다.
   여기서 setfacl을 이용해 /acct의 설정을 변경하는 작업은 root사용자와 Amy만 가능하다.
   `getfacl /acct`
   위 명령은 현재 /acct 디렉토리에 적용 되어 있는 ACL을 확인하는 것이다.
  
   # file: .
   # owner: Amy
   # group: acct
   user::rwx
   user:Arthur:rwx
   user:Ann:rwx
   group::r-x
   mask::rwx
   other::r-x

   Arthur, Ann에 rwx가 적용되어 있는 것을 확인할 수 있다.
   이제 Arthur, Ann 사용자로 /acct디렉토리에 파일, 디렉토리를 생성하면 생성가능하다.
   그리고 ACL이 적용 안되어 있는 Austin 사용자는 쓰기가 불가능하다.

`setfacl -m d:u:student:rwx /test`
위 명령은 현재 /test 앞으로 생성될 디렉토리 및 파일에 student 사용자의 읽고 쓰는 권한을 준다는 명령이다.
자세히 보면 앞에 d:가 붙어 있다. default의 앞자를 쓴 것 같다.
그러니까 Default로 생성되는 파일과 디렉토리에 적용되는 설정을 의미한다고 이해하면 될 것 같다.

ACL관련 명령을 간략히 정리하면,
setfacl은 ACL 설정 명령, getfacl은 설정된 ACL 확인 명령이라고 할 수 있다.

ACL은 ACL옵션이 적용된 파티션에만 쓸 수 있다.
CentOS 5.2에서는 리눅스 설치시 만들어지는 파티션에는 ACL이 자동으로 적용되어서 마운트 되지만, 리눅스를 설치한 후 만든 파티션을 일반적으로 마운트하면 ACL이 적용되지 않는다.
`tune2fs -l 디바이스명`
위 명령을 치면 Default mount Option 부분에 user_xattr acl 이라고 되어 있는 것은 Default로 acl 옵션이 적용된 것이다.
그러나 none으로 되어 있는 것은 /etc/fstab에 옵션 부분을 Default 대신에 acl로 설정해주어야 한다.
acl 옵션을 위처럼 부팅 시 마운트할 때마다 ACL이 적용되도록 /etc/fstab에 넣어줘도 되나, `tune2fs -o acl 디바이스명` 명령을 이용하면 해당 디바이스의 Default mount Option에 영구적으로 설정이 된다.
(/etc/fstab에 옵션으로 acl을 기입해줄 경우 Default mount Option에는 들어가지 않는다.)

ACL이 적용된 파일이나 디렉토리를 ACL이 적용 안된 파티션으로 옮기면 ACL 설정이 없어짐을 기억하자.
또한 mv로 이동하면 ACL설정은 유지되나 cp로 복사하면 ACL설정은 사라진다.
물론 cp에 -p 옵션을 붙이면 ACL설정은 유지된다.

'RHCE' 카테고리의 다른 글

생성되는 사용자의 umask값 조정  (0) 2009.06.02
할당량 구현  (0) 2009.06.02
보안 문맥  (0) 2009.06.02
chcon / restorecon  (0) 2009.06.02
system-config-selinux 설치.  (0) 2009.06.02
Posted by 으랏차
,

보안 문맥

RHCE 2009. 6. 2. 13:41
보안 문맥이란 SELinux가 활성화 되면 현재 로그인해 있는 사용자 정보, 실행 중인 프로세스 목록, 파일 시스템 안에 파일 목록에 보안과 관련된 속성이 추가 되는데 이것을 보안 문맥 (security contexts)라고 한다.

보안 문맥을 확인하는 명령은 `ls -Z`이다.
예를 들어 `ls -Z /root/anaconda-ks.cfg`와 같이 명령을 내리면 아래와 같은 결과가 출력된다.

-rw-------  root root system_u:object_r:user_home_t    /root/anaconda-ks.cfg

위에서 'system_u:object_r:user_home_t' 부분이 보안 문맥을 나타내는 것이다.
형식은 user:role:type:sensitivity:category 의 형식으로 되어 있는데 위 문맥은 user:role:type 까지만 나와 있다. 각 구문의 의미는 아래와 같다.

user : 시스템에 로그인 되어 있는 사용자 종류를 표시한다.
       사용자가 root로 로그인 하면 root라는 값을 갖고, 일반 사용자가 로그인 하면
       user_u라는 값을 갖는다.
       일반사용자가 su를 사용해서 root로 전환해도 처음 로그인한 사용자의 값이
       적용되기 때문에 user_u 값을 가질 것이다.
       일반 파일이나 디렉토리는 root나 user_u값을 갖지만 프로세스는 system_u값을 갖는다.
role : 특정 파일, 프로세스 또는 사용자 목적을 정의한다.
      파일이나 디렉토리는 object_r이라는 role을 가지고, 프로세스는 system_r이라는 role을
      갖는다.
type : 파일 및 디렉토리 또는 프로세스의 데이터 성질을 지정한다.
       설정된 규칙은 어떤 프로세스 종류가 어던 파일 종류를 사용할 수 있는지 결정한다.

mv로 파일이나 디렉토리를 이동하면 그 보안 문맥은 그대로 유지되나 cp로 복사를 할 경우, 복사된 파일이나 디렉토리는 복사된 디렉토리의 보안문맥설정을 상속받아서 바뀔 수 있으니 기억하자.

그러면 syslogd의 로그 파일인 /var/log/cron의 보안문맥을 이동, 복사함으로 이해해보자.
먼저 /var/log/cron의 보안 문맥을 확인해보자.
`ls -Z /var/log/cron`

아래와 같은 보안 문맥이 설정 되어 있다.
-rw-------  root root system_u:object_r:var_log_t      /var/log/cron

mv명령으로 이동할 시 보안 문맥이 변하는지를 확인하기 위해 /var/log/cron파일을 /tmp 디렉토리로 이동시킨다.

/tmp로 이동된 cron파일의 보안 문맥을 확인하면 아래와 같이 변하지 않는다.
`ls -Z /tmp/cron`
-rw-------  root root system_u:object_r:var_log_t      /tmp/cron

이번에 cp를 이용해서 홈디렉토리로 복사한다.
`cp /tmp/cron ~/`
`ls -Z ~/cron`
-rw-------  root root root:object_r:user_home_t        /root/cron

위처럼 user부분이 system_u에서 root로 바뀐 것을 확인할 수 있다.
이처럼 파일이 시스템에서 이동될 때 보안 문맥은 파일의 보안 문맥을 그대로 유지하지만 파일이 복사되면 복사된 파일은 상위 디렉토리의 보안 문맥을 상속받는다.

그렇다면, 보안문맥이 바뀐 cron파일을 원래 있던 디렉토리인 /var/log에 이동해보자.
이동했으니 홈 디렉토리에 있던 기존 보안 문맥을 그대로 유지할 것이다.
그리고 syslog를 재시작하면 gui환경이라면 작업표시줄에서 avc: denied 라는 오류 메시지가 보일 것이다.
그러므로 다시 원래의 보안 문맥으로 돌려보자.
/var/log/cron파일 같은 경우는 `restorecon /var/log/con` 명령을 내리면 다시 원래의 보안 문맥으로 복구 된다.

* 실행 중인 프로세스의 보안 문맥을 확인 하려면 `ps -eZ | grep 프로세스명`을 치면 된다.

[출처] 보안 문맥|작성자 이경모

'RHCE' 카테고리의 다른 글

할당량 구현  (0) 2009.06.02
ACL (Access Control List)  (0) 2009.06.02
chcon / restorecon  (0) 2009.06.02
system-config-selinux 설치.  (0) 2009.06.02
watch 명령에 대해...  (0) 2009.06.02
Posted by 으랏차
,

chcon / restorecon

RHCE 2009. 6. 2. 13:40
1. chcon
   chcon은 파일의 보안문맥을 변경하는 명령이다.
   user를 바꿀 때는 -u,
   role을 바꿀 때는 -r,
   type을 바꿀 때는 -t를 입력하고 해당 구문을 적어주면 된다.
  
   에를 들어 test라는 파일의 보안 문맥이 root:object_r:user_home_t 이라고 가정하자.
   여기서 user를 프로세스가 가지고 있는 값인 system_u로 바꿔보자.
  
   `chcon -u system_u test`
  
   위와 같이 명령을 내려 주면 system_u:object_r:user_home_t 로 바뀌게 되는 것이다.
   단, chcon을 사용할 때는 -u나 -r, -t에 해당하는 정확한 값을 알아야 한다.
   위에 -u의 프로세스에 해당하는 system_u라고 지정한 것처럼 정확한 값을 입력해야지,
   엉뚱한 'afdfdsa, ㅁ니러' 와 같은 값을 넣어주면 안된다는 말이다.

   chcon에는 또 --reference라는 옵션이 있는데 이 옵션을 사용하면 특정 파일에 적용된
   보안 문맥을 그대로 다른 파일에 적용할 수 있다.
  
   예를 들어 test라는 파일의 보안 문맥이 root:object_r:user_home_t 같이 설정되어 있고,
   passwd라는 파일에는 root:object_r:etc_t 와 같이 설정되어 있다고 가정하자.
   test의 설정을 passwd에 그대로 적용하고 싶을 때는 아래와 같이 명령을 내리면 된다.

   `chcon --reference test passwd`
  
   이렇게 입력하면 test파일의 보안 문맥이 passwd에 적용되는 것이다.

2. restorecon
  restorecon은 정확한지는 모르겠지만 상위 디렉토리에 맞게 보안 문맥을 변경해주는
  명령인 것 같다.
  test라는 파일을 홈 디렉토리에서는 root:object_r:user_home_t 였으나 /etc 디렉토리로
  이동한 후 `retorecon test` 명령을 내리니 /etc 디렉토리의 기본 보안 문맥인
  system_u:object_r:etc_t 로 변경된 것을 확인할 수 있었다.

[출처] chcon / restorecon|작성자 이경모

'RHCE' 카테고리의 다른 글

ACL (Access Control List)  (0) 2009.06.02
보안 문맥  (0) 2009.06.02
system-config-selinux 설치.  (0) 2009.06.02
watch 명령에 대해...  (0) 2009.06.02
파티션 재생성에 대해...  (0) 2009.06.02
Posted by 으랏차
,