FreeBSD 핸드북 : 직렬 통신 : 터미널들 : 설정
Previous: 케이블과 포트
Next: 연결을 디버깅하기

14.2.3. 설정

이번 섹션에서는 터미널에서 로긴 세션이 가능하도록 FreeBSD시스템을 설정하는 법을 설명합니다. 여기서는 이미 터미널이 연결되어있는 직렬포트를 지원하도록 커널을 설정했다는 가정을 합니다. 그리고 그것을 연결시켜 놓고요.

nutshell에서는 로긴이름과 login프로그램의 시작을 담당하고 있는 getty프로세스를 시작하기 위해서 제어와 초기화를 담당하고 있는 init프로세스에게 알려 주어야 할 필요가 있습니다.

그렇게 하기 위해서 /etc/ttys파일을 수정해주어야만 합니다. 첫째로 su명명어를 이용해서 root가 되세요. 그다음 다음과 같이 /etc/ttys를 수정해 주세요.

  1. /etc/ttys에 기존의 내용에 없는 직렬포트를 위한 /dev/디렉터리의 진입점을 넣어줍니다.
  2. 포트에 실행되는 /usr/libexec/getty를 써주고 /etc/gettytab로 투터 적절한 getty형태를 써줍니다.
  3. 기본 터미널 형태를 써줍니다.
  4. 그 포트를 ``on''으로 설정합니다.
  5. 포트가 ``secure''한지 써줍니다.
  6. init이 /etc/ttys파일을 강제로 다시 읽도록 합니다.

추가적인 단계로써 단계2에서 /etc/gettytab의 진입을 만듦으로써 사용했던 getty 형태를 임의로 변경하고 싶을 수 있을 것입니다. 이 문서에서는 어떻게 그것을 하는지 설명하지 않습니다. 더 자세한 정보를 원하신다면 gettytab(5)와 getty(8)의 맨페이지를 참고 하십시오.

이섹션의 나머지 부분에서는 이 단계들에 대해서 자세히 설명합니다. 우리가 필요한것을 표현하기 위해서 수행하는 예제를 들것입니다. 예제에서는 시스템에 두대의 터미널을 접속할 것입니다. : 이것을 Wyse-50과 VT-100터미널 에뮬레이팅 소프트웨어인 Procomm터미널을 실행하는 오래된 286 IBM PC입니다. Wyse를 두번째 직렬포트에 접속하고 286을 6번째 직렬포트에 접속합니다. ( 여기서 포트는 멀티포트 직렬카드에 있는 것입니다.)

/etc/ttys파일에 대한 더 자세한 정보는 ttys(5)의 맨페이지를 참고하세요.

14.2.3.1. /etc/ttys에 entry추가하기

첫째로 /etc/ttys파일에 없는 것이라면 entry를 추가할 필요가 있습니다.

/etc/ttys파일은 FreeBSD시스템에 있는 로긴을 허용하기 원하는 모든 포트들을 나열합니다. 예를 들어 첫번째 가상콘솔 ttyv0의 entry가 이 파일에 있습니다. 이 entry를 사용하는 콘솔에 로그를 할 수 있습니다. 이 파일은 다른 가상 콘솔들, 직렬포트 그리고 pseudo-ttys의 entry도 포함하고 있습니다. hardwired 터미널을 위해서 /dev부분 없이 직렬포트의 /dev entry도 나열합니다.

FreeBSD시스템을 설치를 하면 /etc/ttys파일은 처음 4개의 직렬포트들의 entry를 포함 하고 있을 것입니다.: ttyd0 부터 ttyd3 까지. 이 포트 중의 하나에 터미널을 붙이기 원한다면 entry를 추가할 필요가 없습니다.

우리의 예제에서 Wyse-50을 직렬포트(이미 파일내에 존재하는 ttyd1)에 연결했습니다. 6번째 직렬포트에 연결된 286 PC를 위해서 entry를 추가할 필요가 있습니다. 아래에 /etc/ttys파일에 새로운 내용을 추가한 것이 있습니다.

ttyd1   "/usr/libexec/getty std.9600"   unknown off secure
ttyd5

14.2.3.2. getty 형태 알려주기

다음으로 터미널에 로긴했을때 실행하게 될 프로그램을 다루도록 써야할 필요가 있습니다. FreeBSD에서는 /usr/libexec/getty라는 표준 프로그램이 이 일을 합니다. 이것이 login:프롬프트를 제공합니다.

getty프로그램은 명령행에서 하나의 추가적인 인수를 취합니다. 이것은 getty 형태입니다. getty형태는 터미널 선상에서 특성을 알려줍니다. 이 특성은 bps나 rate 그리고 parity같은 것입니다. getty 프로그램은 이런 특성을 /etc/gettytab로 부터 읽어들입니다.

/etc/gettytab는 옛것과 새것의 많은 터미널 라인들을 포함하고 있습니다. 대부분의 경우, std로 시작하는 문자는 하드웨어적인 터미널과 같이 일할것입니다. 이 entry들은 패리티를 무시합니다. std entry에는 bps rate이 110에서 115200까지 있습니다. 물론 이 파일에 여러분 자신의 entry도 추가할 수 있습니다. gettytab(5)의 매뉴얼 페이지가 더 자세한 정보를 제공할 것입니다.

/etc/ttys파일에서 getty 형태를 셋팅할 때 확실히 해줄것은 터미널에 맞는 통신의 설정입니다.

예를 든다면 Wyse-50은 패리티를 사용하지 않으며 38400 bps로 접속을 합니다. 286 PC는 패리티를 사용하지 않으며 19200 bps로 접속합니다. 여기에 /etc/ttys파일이 있습니다. ( 우리가 관심을 가지고 있는 터미널 두개만을 보여줍니다.)

ttyd1   "/usr/libexec/getty std.38400"   unknown off secure
ttyd5   "/usr/libexec/getty std.19200"

두번째 필드가 따옴표 안에 있다는 것을 주의 깊게 보십시오. 그것은 어떤 프로그램을 수행할지 우리가 적어놓은 것입입니다. 이것은 대단히 중요합니다. 따옴표가 없다면 getty의 type 아규먼트는 다음 필드로 번역될것이기 때문입니다.

14.2.3.3. 기본 터미널 형태 알려주기

/etc/ttys의 세번째 필드는 포트에 해당하는 디폴트 터미널 형태를 나열합니다. 다이얼업 포트를 위해서는 unknown이나 dialup을 써줄수 있습니다. 왜냐하면 사용자들은 어떤 종류의 터미널이나 소프트웨어로 전화 접속을 할수 있기 때문입니다. 하드웨어적인 터미널을 위해서는 터미널 형태가 바뀌지 않습니다. 그래서 이 항목에 실제의 터미널 형태를 넣어줄 수 있습니다.

사용자들은 일반적으로 그들의 .login이나 .profile 파일안에 터미널 형태를 검사하고 필요하다면 프롬프트(?)를 하기위해서 tset 프로그램을 사용할 수 있습니다. /etc/ttys파일에 터미널 형태를 설정해 놓음으로써 사용자들은 그와같은 프롬프팅(?)을 forego(?) 할 수 있습니다.

FreeBSD에서 어떤 형태의 터미널 형태를 지원하는 지 알아내기 위해서는 /usr/share/misc/termcap파일을 보십시요. 이 파일에는 약 600 가지의 터미널 형태를 나열해 놓았습니다. 원한다면 더 추가 할수도 있습니다. 더 자세한 정보는 termcap(5)의 메뉴얼 페이지를 참고 하십시오.

우리의 예에서 Wyse-50은 Wyse-50의 터미널 형태 입니다. ( 이것이 다른것을 흉내낼수 있다고 할지라도 우리는 그것을 Wyse-50 모드로 남겨 둘것입니다. ) 286 PC는 VT-100을 흉내내도록 설정한 Procomm프로그램을 수행할 것입니다. 여기에 아직 미완성인 /etc/ttys파일의 일부분이 있습니다.

ttyd1   "/usr/libexec/getty std.38400"   wy50  off secure
ttyd5   "/usr/libexec/getty std.19200"	 vt100

14.2.3.4. 포트를 사용 가능하게 만들기

/etc/ttys의 다음 필드, 즉 네번째 필드,는 포트를 가능하게 할것인지 말것인지를 알려줍니다. on을 넣으면 init 프로세스가 두번째 필드에 있는 로긴하기 위해 프롬프트할,getty, 프로그램을 실행할 것입니다. 네번째 필드에 off를 넣는다면 그곳엔 getty가 없을 것이며 따라서 포트에 로긴은 없을 것입니다.

그래서 자연스럽게 이 필드에 on이 되기를 원할 것입니다. 여기 다시 /etc/ttys파일을 보여줍니다. 우리는 각각의 포트에 on을 켜놓았습니다.

ttyd1   "/usr/libexec/getty std.38400"   wy50  on secure
ttyd5   "/usr/libexec/getty std.19200"	 vt100 on

14.2.3.5. 안전한 포트의 기술

우리는 마지막 필드에 도착 했습니다.( 음, 거의: window라는 추가적인 것이 있습니다만은 그것은 무시할 것입니다.) 마지막 필드는 이 포트가 안전한지를 알려줍니다.

``안전하다''는것이 의미하는 것은?

이것은 루트계정( 또는 사용자ID가 0를 가진 어떤 계정)이 이 포트로 로긴 할 것입니다. 안전하지 않은 포트들은 root로 로긴하는 것을 허용하지 않습니다.

어떻게 안전하고 안전하지 않은 포트를 사용할 수 있을까요?

포트를 안전하지 않게 만듦으로써 접속한 터미널에서 루트로 접속하는 것을 허용하지 않도록 합니다. FreeBSD시스템의 루트 암호를 아는 사람들은 먼저 보통의 사용자 계정으로 로긴 하여야 할것입니다. 슈퍼유저의 권한을 얻기 위해서는 su명령어를 사용해야 할 것입니다.

이것때문에 루트권한으로 손상시킬 가능성을 탐지 할수있는 두개의 기록을 가지게 될것입니다. : 로긴과 su명령어는 둘다 시스템 로그에 기록을 만듭니다. ( 그리고 로긴도 또한 wtmp파일에 기록을 남김니다.)

포트를 안전하게 만듦으로써 터미널은 루트가 들어오는 것을 허용할 것입니다. 루트 암호를 아는 사담들은 루트로 그대로 들어올수 있을 것입니다. 어쩌면 쓸모있을 로긴과 su명령어의 기록을 가질 수 없을 것입니다.

어떤것을 사용해야 하는가?

``안전하지않은(insecure)''을 사용하십시오. 심지어 일반 사용자 영역이나 behind locked doors의 터미널에서도 ``안전하지않은''을 사용하십시오. 슈퍼유저 권한이 필요하다면 로긴해서 su를 사용하는 것은 대단히 쉬운일입니다.

여기에 드디어 /etc/ttys파일의 완전한 기재사항이 있습니다. 거기에다 이 터미널이 어디다가 쓰일지 주석설명까지 붙여놓았습니다.

ttyd1   "/usr/libexec/getty std.38400"   wy50  on insecure # Kitchen
ttyd5   "/usr/libexec/getty std.19200"	 vt100 on insecure # Guest bathroom

14.2.3.6. init에게 강제로 /etc/ttys다시 읽게 하기

FreeBSD를 부팅할때, 최초의 프로세스인 init은 /etc/ttys파일을 읽을 것입니다. 그리고 각각의 가능한 포트에 로긴 프롬프트할 프로그램들이 시작할 것입니다.

/etc/ttys를 수정한 후, init에 바뀐것을 인식하게 하기 위해 시스템 재부팅하기를 원하지 않을 것입니다. init이 SIGHUP(hangup)신호를 받는다면 /etc/ttys를 다시 읽을 것입니다.

그래서 /etc/ttys를 바꾸고 저장한 후 init에게 다음과 같이 입력함으로써 SIGHUP신호를 보냅니다.

kill -HUP 1
(init프로세스는 항상 프로세스ID 1을 가집니다. )

모든것이 제대로 설정되었다면, 모든 케이블이 제자리에 있고, 터미널들이 켜져있다면 로긴 프롬프트를 볼수있어야 합니다. 터미널들이 최초의 로긴을 위해 준비 되어 있습니다 !


FreeBSD 핸드북 : 직렬 통신 : 터미널들 : 설정
Previous: 케이블과 포트
Next: 연결을 디버깅하기