주식회사 누리아이티

정보자산의 보안강화를 위한 다계층 인증SW (BaroPAM) 전문기업.

▶ Tuxedo/기술자료

Tuxedo Admin 계정이 아닌 계정에서 서버 프로세스의 기동/종료

누리아이티 2012. 2. 24. 09:40

Tuxedo Admin 계정이 아닌 계정에서 tmboot/tmshutdown의 기능 제한을 위한 Wrapping 프로그램(tmstart.c)을 작성한다.
Wrapping 프로그램은 C 언어을 이용 tmboot/tmshutdown command를 "tmboot -s servername or tmboot -i server-id or tmshutdown -s servername or tmshutdown -i server-id”만 실행되도록 별도의 실행파일을 만든다.
 
1.Tuxedo 관리자 이외의 계정으로 "tmboot, tmshutdown"을 실행
- 프로그램명 : tmstart, tmstop
- 프로그램 source 파일(tmstart.c) 
  #include <stdio.h>
  #include <stdlib.h>
  
  int main(int argc, char *argv[]) {
      char *tux_dir, cmdstr[1024];
      int  i = 0;
  
      memset(cmdstr, 0x00, sizeof(cmdstr));
  
      if (argc != 3) {
          printf("Usage : %s -s Servername or %s -i Server-id\n\n", argv[0], argv[0]);
          exit(-1);
      }
      if ((tux_dir = getenv("TUXDIR")) == (char *)0) {
          printf("env variable TUXDIR Not Set !!\n");
          exit(-1);
      }
      sprintf(cmdstr, "%s/bin/", tux_dir);
      if (strcmp(argv[0], "tmstart") == 0) {
          strcat(cmdstr, "tmboot ");
      } else if (strcmp(argv[0], "tmstop") == 0) {
          strcat(cmdstr, "tmshutdown ");
      } else {
          printf("Usage : %s -s Servername or %s -i Server-id\n\n", argv[0], argv[0]);
          return(-1);
      }
      if ((strncmp(argv[1], "-i", 2) == 0) || (strncmp(argv[1], "-s", 2) == 0)) {
          strcat(cmdstr, argv[1]);
          strcat(cmdstr, " "    );
          strcat(cmdstr, argv[2]);
      } else {
          printf("You can use -i or -s options only !\n\n");
          return(-1);
      }
      return(system(cmdstr));
  }
 
- C 프로그램 컴파일
  > cc -v -o tmstart tmstart.c
 
- 실행파일 복사(tmstop)
  > cp tmstart tmstop
 
- 실행파일 권한부여(+s)
  Tuxedo Admin 계정이 아닌 계정에서 서버 프로세스를 Start, Stop할 때 boot된 서버 프로세스가 Tuxedo Admin 계정으로 실행되도록 Effective User를 Tuxedo Admin 계정으로 설정한다.
  > chmod +s tmstart tmstop
  권한을 부여한 tmstart, tmstop 실행파일을 $TUXDIR/bin 디렉토리에 위치 시킨다.
 
 
2.설정 절차
- Tuxedo 관련 환경변수 설정
export TUXDIR=/tuxedo
export BASDIR=/home/tuxadmin
export TUXCONFIG=$BASDIR/env/tuxconfig
export LIBPATH=$TUXDIR/lib:$LIBPATH
export PATH=$TUXDIR/bin:$PATH

- 프로그램 실행(서버 프로세스 기동)
> tmstart -s 서버명 or tmstart -i 서버ID

- 프로그램 실행(서버 프로세스 종료)
> tmstop -s 서버명 or tmstop -i 서버ID


3.주의 사항
- Tuxedo Admin 계정으로 작업(컴파일, 권한부여)해야 한다.
- tmstart, tmstop 실행 파일에 +s 권한 부여해야 한다. 
  [tuxadmin@devapp01:/tuxedo/bin]ls -al tms*
  -rwsrwsr-x    1 tuxadmin tux            8185 Apr 08 10:34 tmstart
  -rw-rw-r--    1 tuxadmin tux            1066 Apr 08 10:34 tmstart.c
  -rwsrwsr-x    1 tuxadmin tux            8185 Apr 08 10:34 tmstop
   실행 파일에 권한을 부여하지 않으면 오류가 발생하며, 오류 메시지는 다음과 같다.
   tmboot: CMDTUX_CAT:1113: ERROR: Must be the administrator to execute this command
- TUXDIR, TUXCONFIG, PATH, LIBPATH 환경변수를 설정해야 하며, 환경변수를 설정하지 않으면 오류가 발생하며, 오류 메시지는 다음과 같다.
  tmshutdown: internal error: CMDTUX_CAT:1360: ERROR: configuration file not found