1581, 4/80 회원가입  로그인  
   x90c
   OpenVMS Tutorial

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=489 [복사]



___________________________________

입문자를 위한 OpenVMS OS 튜토리얼
___________________________________


  
:= Author : x90c (정경주)
:= Homepage : http://www.chollian.net/~jyj9782
:= Date : 2006년 2월 21일

:= p.s :
시간에 쫒겨서 빠뜨린점이 많을줄 압니다.
이 글로 시스템 해커님들이 새로운 OS 를
이해하는 초석이 되었으면 합니다.

그리고 좋은 문서를 많이 남겨주신 고대
vms 해커님들께 고개숙여 감사드립니다 (_ _)

=-----------------------------------------=
1. OpenVMS 의 역사

2. VMS vs Others

3. 시스템 다루기

        0X1 디렉토리 구조
        0X2 vms 권한(Privileges) 의 종류
        0X3 주요 시스템파일
        0X4 프로그램 실행법
        0X5 즐겨 쓰는 DCL 명령어
        0X6 프롬프트 바꾸기
        0X7 파일권한 설정
        0X8 시스템 정보 확인
        0X9 IBM notes 시스템
        0XA 컴파일러
        0XB Tips
                
4. 참고자료
=-----------------------------------------=




1. OpenVMS 의 역사

        - 1978 년 : 미국 DEC(Digital Equipment Corporation)사에서 첫 릴리즈.
        - 1980s ~ 90s 초반 : 운영체제 시장에서 중요한 입지를 차지.
        - 현재 : Compaq HP IBM 에서 지원 및 유지보수


        초기 vms 는 시스템프로그래머나 os 취미가들에 의해서만 소유되고 다뤄졌지만
        현재는 유닉스처럼 vms 또한 클라이언트/서버로서 훌륭한 범용 시분할시스템으로
        서의 역할을 하고 있다. 주로 기술적사용자, 복잡성해소, 소프트웨어관련 사업에
        이용되어지고 있다.
        

2. VMS vs Others

        - OpenVMS 는 유닉스가 아니다.
        - OpenVMS 는 대소문자를 구분하지 않는다.
        - OpenVMS 는 32비트 / 64비트 운영체제다.
        - OpenVMS 는 완전 선점형 멀티태스킹을 구현한다.
        - OpenVMS 는 COBOL 프로그래밍언어와 유사한 쉘명령 체계를 지원한다.
        - OpenVMS 는 개발에 필요한 다양한 컴파일러들을 지원한다.
        - OpenVMS 는 도움말서비스(HELP)를 통해 맨페이지처럼 명령어에 대한 정보를 제공한다.
        - OpenVMS 는 Alpha 와 VAX 라는 프로세서에서 운영된다. ( Alpha/VMS or VAX/VMS )
        
        

3. 시스템 다루기

0X1 디렉토리 구조



                        [000000]        <- 최상위 디렉토리
                           !
                           !
             +-------------+-------------+
             !             !             !
            [D1]          [D2]          [D3]
              !             !             !
        +----------+  +-----------+ +-----------+
        !          !  !           ! !           !
      [d1.da][d1.db] [d2.da] [d2.db][d3.da] [d3.db]


vms 도 다른 범용 운영체제들처럼 트리구조로 파일시스템을 구성한다. 조금 다른 점이
있다면 파일과 디렉토리를 명명하는 방법들이다. 위 그림에서 보듯이 최상위디렉토리를
유닉스에서는 / 로 명명하는데 vms 는 [000000] 를 사용한다. 그리고 디렉토리를 나타낼땐
[ ] 묶어줘야하는 규칙이 있다. 그렇다면 파일경로를 나타낼때도 마찬가지로 적용된다.
      
예를 들어 /sub/sub1-1/file1 파일의 경로를 vms 방식으로 고쳐보면 아래처럼 되겠다.
      
[sub1.sub1-1]file1
  
디렉토리와 디렉토리 사이를 나타내는 / 는 . 으로 바뀌었고 디렉토리는 [] 로 묶어주었다.
vms 는 미니컴퓨터용으로 개발된 운영체제인 만큼 여러 시스템이 클러스트(연결)되어서        
하나의 시스템으로서 동작하는게 일반적이다. 따라서 클러스트된 다른 vms 서버상의 디렉토리
나 파일을 명명할때는 해당 서버명을 경로앞에 아래와 같이 덧붙여주면 된다.

서버명$마운트된디스크명:[sub1.sub1-1]file1

한가지더 짚고 넘어갈게 있다.
      
상대경로를 지정하거나 디렉토리를 이동할때 어떤 기호로 지정하느냐의 차이가 존재한다.
유닉스의 .. 는 - 로 나타내며, 두 단계위의 상위디렉토리를 지목할땐 -- 를 사용해야한다.
그 이상일때도 마찬가지다.
          
      ../../../../ => ----
          


      
      
      

0X2 vms 권한(Privileges) 의 종류


vms 는 유닉스와 조금 다른 사용자권한설정 방식을 가지고 있다. 대부분의 유닉스는 UID 가 0인
계정을 슈퍼유저계정으로 하고 모든 파일에 대한 접근을 허용한다. 그렇지 않을 경우에는 일반
계정을 의미하고 제약적인 접근허가가 주어지게된다. 그러나 vms 는 다르다. 마치 윈도우 2000
서버에서 처럼 여러가지 기능별 권한목록이 있고 그것을 특정한 사용자에게 여러개의 권한을 동시
에 부여하여 해당 사용자에게 허용된 작업을 정의한다. 아래는 그 권한들의 목록이다.


======================================================================================
분류    |       권한명          |          설명 ( enable )              
======================================================================================
        |        NONE           | 아무권한도 없음
--------------------------------------------------------------------------------------
  일반  | MOUNT                 | 볼륨 QIO 를 마운트
  일반  | NETMBX                | 네트웍 연결을 생성
  일반  | TMPMBX                | 임시 메일박스 생성
--------/-----------------------------------------------------------------------------
  그룹  | GROUP                 | 같은 그룹의 프로세스들 제어
  그룹  | GRPPRV                | SYSTEM 보호항목을 거쳐 그룹 접근
--------/-----------------------------------------------------------------------------
devour  | ACNT                  | 계정 삭제
devour  | ALLSPOOL              | 스풀 장치들 할당
devour  | BUGCHK                | 전체 버그검사 오류로그 생성
devour  | EXQUOTA               | 디스크 쿼타 초과
devour  | GRPNAM                | 이름 테이블에 그룹의 논리적이름 삽입
devour  | PRMCEB                | permanent 일반 이벤트 플래그 클러스트 생석/제거
devour  | PRMGBL                | permanent 글로벌 섹션 생성
devour  | PRMMBX                | permanent 메일박스 생성
devour  | SHMEM                 | 공유메모리에 구조 생성/제거
--------/-----------------------------------------------------------------------------
시스템 | ALTPRI                | 할당시 기본 우선순위를 높음
시스템 | OPER                  | 관리자 명령 수행
시스템 | PSWAPM                | 프로세스 스왑모드 변경
시스템 | WORLD                 | 어떤 프로세스든 프로세스 제어
시스템 | SECURITY              | 보안관련 기능을 수행
시스템 | SHARE                 | 다른 사용자들에게 할당되어진 장치들에 접근
시스템 | SYSLCK                | 시스템-전역적인 자원들 잠금
--------/-----------------------------------------------------------------------------
  파일  | DIAGNOSE              | 장치 분석
  파일  | SYSGBL                | 시스템-전역 글로벌섹션 생성
  파일  | VOLPRO                | 볼륨 보호 갱신(override)
--------/-----------------------------------------------------------------------------
  전체  | BYPASS                | 보호를 따르지 않음 ( 파일권한영향 안받음 )
  전체  | CMEXEC                | 실행(executive) 모드로 전환
  전체  | CMKRNL                | 커널모드로 전환
  전체  | DETACH                | 임의 UIC 의 detached 프로세스 생성
  전체  | LOG_IO                | 논리적 I/O 요청 알림 (issue)
  전체  | PFNMAP                | 특정 물리적 페이지에 맵핑
  전체  | PHY_IO                | 물리적 I/O 요청 알림
  전체  | READ ALL              | 모든것에 대한 읽기허용
  전체  | SETPRV                | *** 모든 권한 활성화 *** ( 슈퍼유저 계정처럼..)
  전체  | SYSNAM                | 시스템 논리적 이름을 이름테이블에 삽입
  전체  | SYSPRV                | SYSTEM 보호항목을 거쳐서 객체에 접근
======================================================================================


일단 꼭 알아두고 넘어가야할 권한만 짚어보자.

보통 일반권한중에 2가지(NETMBX, TMPMBX)는 기본으로 모든 계정에 주어지게 된다.
이 권한들은 네트웍접근을 가능하게 하고 메일박스를 사용할수 있게 해주는 권한이다.
이 권한들이 부여되어 있지 않은 계정이라면 해당 vms 시스템을 통한 네트웍 통신자원을
이용할수 없거나 메일을 보내고 받을수 없다. 또 꼭 알아두어야한 권한은 BYPASS 인데, 이 권한
을 가진 계정의 사용자에게는 파일에 대한 접근을 할때 주어진 파일의 보호(protection)에 상관
없이 무제한의 접근을 허용된다. root 사용자가 일반사용자의 파일에 별다른 권한의 영향없이
접근하는것처럼 말이다. 여기서 보호란 파일의 접근권한을 뜻한다. 마지막으로 하나더 중요한
권한을 짚어보자면 SETPRV 인데 이것은 모든 권한을 소유하는 특권이다.

권한의 설정과 확인하는 방법에 대해서는 "(5) 즐겨쓰는 DCL 명령어" 에서 다루겠다.









$0X3 주요 시스템파일의 이해

(p.s : 주요시스템 파일목록에 대해서 설명을 제공하려고 했으나 파일이 너무 많고 적당한 레퍼런스
       를 찾지못해 생략하였습니다. 다만 어떻게 시스템파일들이 모여있는 디렉토리에 접근하는지
       설명으로 때우겠습니다. ;; )
      
일단 디렉토리 사이를 이동하는 명령어는 SET DEFAULT 이동할디렉토리경로
      
이렇게 사용한다. 그렇지만 SET DEFAULT 는 너무 길기 때문에 심볼을 설정하여 SD 라는 것으로
대체하여 사용할수 있다. ( 심볼은 환경변수 같은것이니까 )

x90cX@VMS $ SHOW SYMBOL SD
  SD == "$SYS$SYSDEVICE:[BIN.MISC]CD.EXE/INHIB/AA/PARTIAL"
x90cX@VMS $

lamasX@GEIN $ SD SYS$SYSTEM                        <- 시스템파일 디렉토리로 이동
lamasX@GEIN $ DIR
..

...
...
CPIP$UUENCODE.EXE;1                    TCPIP$VERSIONS.EXE;1
TCPIP$WHOIS.EXE;1   TCPIP$XDM.EXE;1     TCPIP$XDMW.EXE;1    TCPIP$XDM_RUN.COM;1
TCPIP$XDM_XSESSION.COM;1                TDF$SET_TIMEZONE.EXE;1
TECO32_TV.EXE;1     TERMTABLE.EXE;1     TERMTABLE.TXT;1     TFF$MASTER.DAT;1
TFU.EXE;1           TNT$EXCLUDED_SYMBIONTS.DAT;1            TNT$HELPER.EXE;1
TNT$SERVER.EXE;1    TNT$UTILITY.EXE;1   TPCONS$SYMBOLS.STB;1
TPSERV.EXE;1        TPU.EXE;1           TYPE.EXE;1          UCX$LPD_SMB.EXE;1
UCX$TELNETSYM.EXE;1 UCX$UCP.EXE;1       UNIDATA2.DAT;1      UNLOCK.EXE;1
USB$UCM_CLIENT.EXE;1                    USB$UCM_CLIENT.EXE_OLD;1
USB$UCM_DEVICES.DAT;1                   USB$UCM_SERVER.EXE;1
UTC$CONFIGURE_TDF.EXE;1                 VERIFY.EXE;1        VMOUNT.EXE;1
VMS$CREATE_SYSDIRS.COM;1                VMS$OBJECTS.DAT;1
VMS$PASSWORD_HISTORY.DATA;1             VMS$PDF_CREATE_SYSDIRS.COM;1
VMSHELP.EXE;1       VMSMAIL_PROFILE.DATA;1                  VPM.EXE;1
VPM_SERVER.EXE;1    VUE$MASTER.EXE;1    WBM.EXE;1           WP.EXE;1
WRITEBOOT.EXE;1     WWPPS.EXE;1         XGCP.EXE;1          XMKERBEROS.EXE;1
ZIC.EXE;1

Total of 662 files.

Grand total of 2 directories, 764 files.
x90cX@VMS $

너무 많은 파일이다. 이 디렉토리는 유닉스나 리눅스의 /bin 이라고 할수 있다.
하지만 다른점이 있다면 /etc 에 들어갈법한 시스템 설정파일도 이곳에 존재한다는것이다.

(p.s: 이 주제로 다음 문서를 쓴다면 이 시스템파일에 대한 설명만으로 가득 채워도 될듯합니다.
      이 부분을 빠뜨리고 튜토리얼 문서를 쓴다는게 참 민망스럽습니다. 어째든 :x )


      
      
      
      
      
      
      
      
$0X4 프로그램 실행법

유닉스나 리눅스에서는 실행하고자 파일이 있는 디렉토리로 이동한뒤 "./파일명" 을 통해 간단히
실행하였다. vms 는 조금 다르다. "./" 도 사용하지 않을뿐 아니라 어떤 프로그램을 작동하느냐
에 따라 다른 명령을 이용해야한다. 실행파일의 확장자는 대게 .EXE 또는 .COM 인데 .EXE 는
VMS 의 일반적인 실행이미지이고 .COM 은 도스의 COM 파일과는 달리 DCL 스크립트 파일이다. 즉
리눅스의 쉘스크립트와 비슷하게 생각할수 있다.

PLAY_VMS.EXE;1


위 프로그램을 실행하려면 아래와 같은 명령어를 사용해야한다.

$ RUN PLAY_VMS

확장자와 버전번호는 생략이 가능하다.

그렇다면 .COM(DCL 스크립트파일)은 어떻게 실행하는지 살펴보자.


ADDUSER.COM;1

이라는 스크립트가 존재한다고 가정한다면..


$ @ADDUSER

즉 골뱅이(at mark) 를 프로그램이름 앞에 붙여주면 된다.

만약 버전 번호가 다른 같은 파일명의 여러 파일이 있을때 2번째 버전을 실행하고 싶다면
버전번호까지 모두 붙여주면 된다 ( RUN PLAY_VMS.EXE;2 )


자 익숙해지는데 시간이 걸린다. RUN 과 @ 를 기억해두자!








$0X5 즐겨쓰는 DCL 명령어


        DIR [경로] - 디렉토리/파일 목록표시
        SD [경로] - 디렉토리 이동
        COPY [원본파일경로] [사본파일경로] - 파일 복사
        DEL [삭제할 파일명] - 파일 지우기
        DEL /DIRECTORY [삭제할 디렉토리명] - 디렉토리 지우기
        REN [원본파일명] [새파일명] - 파일명 변경
        EDIT [파일명] - 텍스트 에디터
        VI [파일명] - 너무나 잘아는 VI 에디터
        LINK [오브젝트파일명] - 링커
        HELP [알고싶은 명령어] [알고싶은 옵션] - 도움말 서비스
        PHONE - 리눅스의 토크데몬같은것!
        DUMP [파일명] - 헥사덤프
        DIFFERENCES [파일 1] [파일 2] - 파일비교
        DELETE/INTRUSION_RECORD - 침입시도에 대한 기록 비우기
        SPAWN - 새프로세스 생성(like fork())
        LOGOUT - 현재 프로세스 종료 ( 만약 로그인한 프로세스에서 로그아웃시도시 터미날 종료 )
        SET CONTROL - CTRL+C / CTRL+Y 인터럽트 활성화/비활성화
        SET DEFAULT [이동할 디렉토리] - 디렉토리 이동 ( 약칭 : SD )
        SET HOST [서버명] - 다른 메인프레임으로 접속
        SET PASSWORD - 새 비밀번호 설정
        SET PROMPT - 쉘 프롬프트 변경
        SET TERMINAL - 현재 터미날 정보변경
        
        (p.s : SHOW 로 열람할수 있는 자원에 대해서는 이 문서의 다른 장에서 다뤘으므로 다루지 않은
                   몇가지만 열거하겠습니다)
                  
        SHOW ACCOUNTING - 현재 보안/계정 이 활성화되었는지 정보를 보여줌
        SHOW INTRUSION - 현재 계정에 접속 실패한 시도의 기록을 보여줌 ( 침입시도 )
        SHOW NETWORK - 연결가능한 모든 네트워크 노드 목록을 보여줌
        SHOW USERS - 로그인중인 사용자 목록 보여줌
        SHOW TERMINAL - 현재 터미날 정보표시
        STOP - 서브프로세스 종료 ( LOGOUT 을 대신 사용할수 있음 )
        TYPE - 파일내용 보기
        
        ..
        RUN [실행할 프로그램 파일명] - 컴파일된 프로그램 실행
        @[DCL 스크립트 파일명] - DCL 스크립트 처리
        MAIL - 메일시스템 접속 ( EMAIL 을 주고 받을수 있음 like mail )
        
        





$0X6 프롬프트 바꾸기

새로운 시스템을 접하면 한번쯤 자신만의 쉘 프롬프트를 멋지게 꾸며보고 싶어질것이다.
매번 같은 $ 마크는 시스템의 사용을 지루하게 만들지도 모른다. vms 에서는 명령어 하나로
간단히 프롬프트를 바꿀수 있다.

DCL 명령중에 프롬프트를 바꾸는 명령은 설정명령으로 분류된다. 설정명령은 SET 키워드를 사용
하는데 PROMPT 를 설정하는 방법은 아래와 같다.

$ SET PROMPT="$ "

'$' 이것이 일반사용자의 기본 프롬프트 설정이다.

그럼 나만의 프롬프트를 설정해보자.


$ SET PROMPT="x90cX@VMS $ "
x90cX@VMS $

yo  ~

나만의 프롬프트가 생겼다. 이것은 로그아웃을 할때 사라지는 설정이다. 따라서 매 로그인시마다
이 프롬프트를 고정으로 사용하고 싶다면 홈디렉토리에 있는 LOGIN.COM 파일을 열어서 적절한 위치
에 아래처럼 명령어를 추가해주면 된다.

$ SET PROMPT="x90cX@VMS $ "

(p.s: DCL 스크립트안에서 사용할때 위의 첫글자 $ 를 꼭 넣어줘야한다)








$0X7 파일권한 설정

모든 디렉토리와 파일에는 권한이 주어진다. 이 권한을 보호(Protection)라고 한다.
자 ~ 그럼 파일시스템에 접근하는 주체들의 분류와 디렉토리나 파일에 어떤 권한이 부여될수 있는지
알아보자.


        >> 주체 :
                - 시스템 ( SYSTEM )
                        : 그룹 번호 0-8 이며 물리적/논리적 I/O 특권이 있는 사용자
                        ( 일반적으로 시스템 관리자, 시스템 프로그래머, 운영자 )
                - 소유자 ( OWNER )
                        : 파일을 생성한 사용자

                - 그룹 ( GROUP )
                        : 같은 그룹에 소속된 모든 사용자

                - 월드 ( WORLD )
                        : 리눅스의 OTHER 와 같은 개념으로, 위의 3가지 분류에 속하지
                          않은 모든 나머지 사용자

        >> 권한 :
                - 읽기 (READ, R)
                - 쓰기 (WRITE, W)
                - 실행 (EXECUTE, E)
                - 삭제 (DELETE, D)
                : 유닉스랑 다르게 삭제권한이 별도로 존재한다는 점을 알아두자.


이제 임시로 텍스트파일을 생성하여 보호를 확인하고 재설정하는 작업을 해보자.

(파일을 생성할때에는 vi 나 edit 같은 텍스트에디터를 사용해도 되지만 CREATE
명령어를 사용하면 간단하다.)

x90cX@VMS $ CREATE HACK.TXT
lalala
(CTRL+Z)
Exit
x90cX@VMS $ DIR HACK.TXT;1

...

HACK.TXT;1

Total of 1 file.
x90cX@VMS $ TYPE HACK.TXT;1
lalala
x90cX@VMS $ DIR/SECURITY HACK.TXT;1                <- 권한을 확인하는 옵션 /SECURITY

..

HACK.TXT;1           [MEMBER,X90C]                   (RWED,RWED,RE,)

Total of 1 file.
x90cX@VMS $

위 파일은 MEMBER 그룹, X90C 사용자로 버전번호 1로 생성되었으며 파일명 HACK.TXT
권한은 아래와 같다.

권한을 살펴볼때 아래 순서를 기억해둘 필요가 있다.

[시스템],[소유자],[그룹],[월드]

만약 비어있다면 권한이 없는것이다.

위 파일을 살펴보면, "(RWED,WRED,RE,)"

        => 시스템 = RWED ( 전체권한 )
        => 소유자 = RWED ( 전체권한 )
        => 그룹 = RE ( 읽기/실행 )
        => 월드 = 권한없음


자 소유자와 시스템에게만 모든권한을 주고 모든 권한을 뺏어보자.

x90cX@VMS $ SET PROT HACK.TXT;1 /PROT=(SYSTEM=RWED,OWNER=RWED,GROUP="",WORLD="")
x90cX@VMS $ DIR /SECURITY HACK.TXT;1

..

HACK.TXT;1           [MEMBER,X90C]                   (RWED,RWED,,)        <- 바뀐권한 확인!

Total of 1 file.
x90cX@VMS $


이것은 디렉토리에도 같게 적용된다.


                  





                  
$0X8 시스템 정보 확인

현재 내가 사용하고 있는 시스템이 어떤 상태인지 어떤 자원들을 할당하고 또 운영하는지 열람하는 키워드
SHOW 의 알아두면 편리한 몇가지 자원목록을 알아보자. 자원목록은 SHOW 의 인자로써 주어진다.

더 많은 목록을 열람하고 싶다면 $ HELP SHOW !


$ SHOW
                SYSTEM - 프로세스 목록
                PROCESS - 현재 프로세스 정보
                DEFAULT - 현재 디렉토리 경로 ( 기본디렉토리 )
                CLUSTER - 클러스트되어 있는 서버 목록
                DEVICE - 물리적 장치목록
                LOGICAL - 마운트되어진 논리적 장치목록
                QUEUE - 스케쥴링중인 작업 목록
                TIME - 현재 시스템 시각
                SYMBOL * - 전체(*) 심볼 ( 심볼은 리눅스의 환경변수와 유사한 개념이다 )
                MEMORY - 메모리 상태정보



                
                
                
                

$0X9 IBM notes 시스템

OpenVMS 에는 IBM 이 개발한 공개 포럼 시스템이 존재한다. 이 시스템은 해당 서버와 클러스트
되어 있는 여러 vms 서버하의 사용자들이 모두 공통된 텍스트 기반의 게시판에 접속하여 글을
작성하고 또 답글을 달면서 정보를 교류할수 있게 해준다. 이 시스템의 이름은 notes !
마치 추억속 pc 통신의 bbs 를 보는듯하다.

이 notes 시스템의 몇가지 명령어에 대해서 살펴보자. 세부 명령어는 HELP 라는 명령어가 자체
적으로 Notes> 쉘상에서 제공된다.

notes 에 접속해보자.

x90cX@VMS $ notes
(화면 클리어됨 그리고 제일처음으로 만들어져있는 주제목록(게시판) 카테고리가 보여짐)

Notes>
Copyright  . Hewlett-Packard Development Company, L.P 1986, 2004. All Rights R?
────────────────────────────────────────
                        Directory of Notebook class MAIN

Entry Name           Unseen  Last new note     Topics  Update status
>BBS                       6  21-FEB-2006 18:30     74
CAFE                    417  24-JAN-2006 04:02     88
..
More...

이것이 메인화면.

이제 어떤 주제의 게시판에 들어갈지 결정한다음 OPEN 명령어를 이용해 게시판을 열어보자.

Notes> OPEN BBS
(최근갱신게시물이 표시된다)
Notes> DIR        <- DIR 명령어를 이용하면 게시물의 목록으로 나갈수 있다.

────────────────────────────────────────
                                    BBS board
Created: 23-AUG-2002 13:10          74 topics         Updated: 21-FEB-2006 18:30

Topic  Author               Date         Repl  Title
    59  CLUSTER_A::X90C         3-MAR-2005     3  Hack :)
    60  CLUSTER_B::HAX0R         6-APR-2005     1  kingdom!
    ..
    
여기서 우린 어떤 게시물을 읽을지 엔터를 눌러가며 한페이지 한페이지를 넘겨서 고를수 있다.
따로 설명이 필요없을듯 하다. 그 다음 위에 보이는 59번 "Hack :)" 게시물을 열람하고 싶다면
READ 명령어를 이용하면된다.

Notes> READ 59
(이제 게시물이 보여지고.. 게시물역시 엔터를 눌러서 다음페이지로 넘길수 있다)

다시 게시물목록을 살펴보자면 DIR ..

다른 게시판으로 가고 싶을땐 현재 열린 게시판을 닫아야한다.

Notes> CLOSE
(화면 클리어되고 다시 notes 를 작동시켰을때 보았던 게시판 카테고리가 나온다)


글을 작성해서 올리고 싶으시다면 글을 올리고 싶은 게시판을 OPEN 명령어로 열고
WRITE 라는 명령어를 이용해 글을 올릴수 있다

안타깝게도 PC통신의 BBS 와는 달리 파일을 업로드하는 기능은 제공되지 않는다.


깔끔하고 또 같은 vms 클러스트 미니컴퓨터 사용자들이 정보를 공유할수 있는 훌륭한
시스템이다.

:>






$0X10 컴파일러

C JAVA BASIC PERL DCL ..

vms 는 널리 쓰이는 여러 컴파일러를 제공한다.

물론 시스템의존적인 부분은 달라 세부적으로 들어간다면 다른 유닉스에서 접근하는것보다
조금 까다로울수도 있다. 당연한 얘기지만 문법은 같다..

이제 어떻게 소스를 컴파일하고 또 링크하는지 알아보자.


소스를 작성할때는 짧은 소스일경우에 vi(유닉스의 그것..) 나 edit(vms 에디터)를 이용하면
되고, 만약 파일이 크다면 ZIP 으로 압축한뒤 업로드한다음 압축해제하고 작업하면 더 편할것이다.

자 그럼 간단한 헬로월드 C 소스를 작성해서 컴파일하고 링크하는 예제를 보자.

x90cX@VMS $ VI FOOBAR.C
(화면 클리어되고 익숙한 VI 에디터가 보여짐)
#include <stdio.h>

int main()
{
        printf("Hello World!!\n");
}

:wq
"SYS$USERS:[USERS.X90C]foobar.c" [New File] 5 lines, 44 characters written
x90cX@VMS $ DIR FOOBAR.C

Directory CLUSTER_1$DKA100:[USERS.X90C]

FOOBAR.C;1

Total of 1 file.
x90cX@VMS $ CC FOOBAR.C                <- CC 컴파일러를 사용!
x90cX@VMS $ DIR FOOBAR

Directory CLUSTER_1$DKA100:[USERS.X90C]

FOOBAR.C;1          FOOBAR.OBJ;1

Total of 2 files.
x90cX@VMS $ LINK FOOBAR.OBJ        <- 오브젝트를 링킹할땐 LINK!
x90cX@VMS $ DIR FOOBAR

Directory CLUSTER_1$DKA100:[USERS.X90C]

FOOBAR.C;1          FOOBAR.EXE;1        FOOBAR.OBJ;1

Total of 3 files.
x90cX@VMS $ RUN FOOBAR.EXE
Hello World!!                                        <- yo ~
x90cX@VMS $


이젠 베이직 소스를 한번 사용해봅시다.

x90cX@VMS $ VI FOOBAR.C
(화면 클리어되고 익숙한 VI 에디터가 보여짐)
PRINT "HELLO WORLD"
INPUT A
:wq
"SYS$USERS:[USERS.X90C]foobar.c" [New File] 3 lines, 29 characters written
x90cX@VMS $ BASIC FOOBAR.BAS
x90cX@VMS $ DIR FOOBAR

Directory CLUSTER_1$DKA100:[USERS.X90C]

FOOBAR.BAS;1

Total of 1 file.
x90cX@VMS $ BASIC FOOBAR.BAS                        <- 베이직 소스 컴파일 ( 신기하다.. 왠 컴파일이냐 -_-; )
x90cX@VMS $ DIR FOOBAR

Directory CLUSTER_1$DKA100:[USERS.X90C]

FOOBAR.BAS;1        FOOBAR.OBJ;1

Total of 2 files.
x90cX@VMS $ LINK FOOBAR.OBJ                                <- 만들어진 오브젝트파일을 링킹!!
x90cX@VMS $ DIR FOOBAR

Directory CLUSTER_1$DKA100:[USERS.X90C]

FOOBAR.BAS;1        FOOBAR.EXE;1        FOOBAR.OBJ;1

Total of 3 files.
x90cX@VMS $ RUN FOOBAR.EXE                                <- booster~
HELLO WORLD
?
x90cX@VMS $


그다지 어렵지 않게 컴파일하고 링킹과정을 수행할수 있었다.

자세한 사항은 메뉴얼을 참고하자.




0XB Tips


Tip 1) 관리자 계정 기본 패스워드 목록

SYSTEM : MANAGER
FIELD : SERVICE
DEFAULT : DEFAULT
SYSTEST : UETP
DECNET : DECNET

Tip 2) 프로세스 권한 할당 요청        ( 권한 할당하는 권한이 있어야 사용가능 =p )

$ SET PROC/PRIV=권한명

Tip 3) 프로세스 권한 열람

$ SHOW PROC/PRIV

Tip 4) 사용자 계정 레코드열람        ( 일반적으로 파일접근 권한은 일반계정에 주어지지 않음 )

$ TYPE SYS$SYSTEM:RIGHTSLIST.DAT

Tip 5) 관리자가 계정생성시 기본 비밀번호

GAME:GAME
MASTER:MASTER
HACK:HACK
HAX0R:HAX0R
..


Tip 6) 텔넷도구로 다른 서버의 31337 포트에 접속

$ TELNET/PORT=31337 <접속할 호스트주소>


Tip 7) 프로그램 옵션 지정방법

위 텔넷 예제에서 알수 있듯이 /옵션명=값 방식으로 프로그램 인자를 지정할수 있다.
이 인자에 대한 정보는 HELP 도움말 서비스를 이용하면 자세히 알수 있다. 특이한것은..

TELNET /PORT=31337  ..
TELNET/PORT=31337 ..

옵션행의 띄워쓰기는 무시해도 된다는 점이다.


Tip 8) 시스템 용어

SUBPROCESS (서브프로세스) : 자식프로세스
DCL : Digital Command Language 약어로 쉘스크립트와 비슷한 개념
MCR : 잘 사용되지 않으며 부가적인 계정으로 로그인하면 프롬프트가 '>' 를 볼수 있다.
JOB : 프로세스나 그룹이 서브프로세스를 통해서 수행중인 태스크
SPAWN : 'SPAWNING' 의 줄임말로 서브프로세스 생성하는 명령어
PID : 프로세스 식별자
IMAGE : RUN 명령어로 실행가능한 EXE 파일
UIC : User Identification Code 로 사용자식별코드 ( like gid, uid )
          ( 참고로 [그룹.멤버] 쌍으로 관리된다 )
          

          
          




4. 참고자료

        >> Beginners Guide to VAX/VMS Hacking - File By ENTITY / Corrupt Computing Canada (c) 1989
           (http://www.textfiles.com/hacking/VMS/ccc-2.txt)
          
        >> A Historical Look at the VAX: The Economics of Microprocessors [Part I]
           (http://www.realworldtech.com/page.cfm?ArticleID=RWT012406203308)

        >> http://en.wikipedia.org/wiki/OpenVMS_filesystem
        





  Hit : 17688     Date : 2006/02/23 11:44



    
ckdmsghcoh 집적 작성맞나요? 주석좀 붙여주시지 ,.,.,.,.,. 2006/02/24  
blackcoder 당연히 직접작성임.. 2006/02/24  
pr0sp3r x90c // 고생했습니다. :) 2006/02/25
Demas None 2007/04/08
1521   * 윈도우 해킹의 기본원리 *     HackerMapia
02/21 18361
1520   [펌+편집] [C언어] TEXT에 색을 입히자!! TEXT COLOR SET !!![7]     U_SoRang
12/15 18334
1519   네 트 워 크 강 좌[17]     소유
10/05 18167
1518   [정리] 해커스쿨 F.T.Z trainer 정리 6 ~ 10[2]     초콜렛나인
03/01 18100
1517   [간단] WireShark - 간단한 패킷에서 파일 추출 방법입니다.[1]     푸른하늘
05/08 17802
  OpenVMS Tutorial[4]     x90c
02/23 17687
1515   텔넷 에서 FTP 리눅스 명령어정리[5]     괴도js
08/02 17346
1514   시스템 리소스 99%에 도전하자!![18]     DarkSlayer
09/10 17119
1513   리눅스 명령어 마스터 3[13]     소유
09/04 16933
1512   webhacking.kr 2번[1]     프라이드
09/28 16858
1511   정보통신 인터넷 용어..(모르시는 분들만..+참고..)[19]     H.R.T
12/29 16858
1510   chenkim4의 중국해킹 기법 8가지 편[1]     chenkim4
08/28 16760
1509   라우터 간단한 명령어 및 기본설정[2]     Mach
04/29 16715
1508   소켓 프로그래밍[5]     소유
09/11 16664
1507   리눅스 Mysql 설치하기. centos6.4 - minimal // mysql 5.6.11 소스      nsh009
05/10 16661
1506   리눅스 명령어 마스터 4[13]     소유
09/05 16553
1505   초짜를 위한 파이썬[2]     asdzxc301
12/18 16534
1504   윈도우xp관리자 비밀번호 간단히 해킹하기![14]     whqkdnf000
02/26 16529
1503   C로 만든 사격게임(주석달아놨음)[13]     whqkdnf000
01/15 16445
1502   [정리] 해커스쿨 F.T.Z trainer 정리 1 ~ 5[11]     초콜렛나인
03/01 16245
[1][2][3] 4 [5][6][7][8][9][10]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org