여러분이 사용하는 리눅스 환경은 기본적으로 TTY (Teletypewriter) 위에 그러져 있다.
 
즉 데스크탑 gui (xwindows) 환경은 실질적으로 '콘솔' 위에 올려져 있는 형태 인 것이다.

콘솔(consol)은 CLI (Command line interface) 혹은 CUI라고도 불리우며 컴퓨터를 운용하기 위한 목적으로 텍스트를 사용자와 컴퓨터가 주고 받는 방식의 인터페이스를 말한다.

정확하게 말하자면 xwindows 데스크탑 환경에서 작동하는 콘솔은 pts/1에 올려져 있다.

이것이 무슨 말인지 지금부터 차근히 설명해 보겠다.

전체 콘솔은 다음과 같은 구성을 가지고 있다.

/dev (device)


    → TTY (일반 CLI 콘솔)

        → TTYs (시리얼 tty)

        → PTS (기본 xwindows를 위한 가상 콘솔)

            → PTY ( 외부의 원격 접속을 위한 가상 콘솔)



이와 같은 환경은 파일시스템 에서도 확인이 가능하다.



// 현재 세션을 확인한다.

$ tty

/dev/pts/1

   
    * 보시다시피 xwindwos 상테의 CLI는 PTS에 속한다.

// /dev 폴더를 출력한다.

$ ls /dev

autofs           log                 ram8      tty21  tty58   ttyS8
block            loop-control        ram9      tty22  tty59   ttyS9
bsg              loop0               random    tty23  tty6    ttyprintk
btrfs-control    loop1               rfkill    tty24  tty60   uhid
bus              loop2               rtc       tty25  tty61   uinput
char             loop3               rtc0      tty26  tty62   urandom
console          loop4               sda       tty27  tty63   usb
core             loop5               sda1      tty28  tty7    userio
cpu              loop6               sda2      tty29  tty8    vboxdrv
cpu_dma_latency  loop7               sda3      tty3   tty9    vboxdrvu
cuse             lp0                 sda4      tty30  ttyS0   vboxnetctl
disk             mapper              sdb       tty31  ttyS1   vboxusb
dm-0             mcelog              sdc       tty32  ttyS10  vcs
dri              mem                 sdc1      tty33  ttyS11  vcs1
ecryptfs         memory_bandwidth    sdc2      tty34  ttyS12  vcs10
fb0              mqueue              sdc5      tty35  ttyS13  vcs2
fd               net                 sg0       tty36  ttyS14  vcs3
full             network_latency     sg1       tty37  ttyS15  vcs4
fuse             network_throughput  sg2       tty38  ttyS16  vcs5
fw0              null                shm       tty39  ttyS17  vcs6
hidraw0          parport0            snapshot  tty4   ttyS18  vcs8
hidraw1          port                snd       tty40  ttyS19  vcsa
hidraw2          ppp                 stderr    tty41  ttyS2   vcsa1
hpet             psaux               stdin     tty42  ttyS20  vcsa10
hugepages        ptmx                stdout    tty43  ttyS21  vcsa2
hwrng            pts                 tty       tty44  ttyS22  vcsa3
i2c-0            ram0                tty0      tty45  ttyS23  vcsa4
i2c-1            ram1                tty1      tty46  ttyS24  vcsa5
i2c-2            ram10               tty10     tty47  ttyS25  vcsa6
i2c-3            ram11               tty11     tty48  ttyS26  vcsa8
i2c-4            ram12               tty12     tty49  ttyS27  vfio
i2c-5            ram13               tty13     tty5   ttyS28  vga_arbiter
i2c-6            ram14               tty14     tty50  ttyS29  vhci
i2c-7            ram15               tty15     tty51  ttyS3   vhost-net
initctl          ram2                tty16     tty52  ttyS30  zero
input            ram3                tty17     tty53  ttyS31
kfd              ram4                tty18     tty54  ttyS4
kmsg             ram5                tty19     tty55  ttyS5
kvm              ram6                tty2      tty56  ttyS6
lightnvm         ram7                tty20     tty57  ttyS7



위의 /dev 폴더의 출력을 보면 tty들이 상당히 많은 것을 볼수가 있으며 pts 폴더 또한 확인이 가능하다.

다른 tty의 접근은 키보드로써 바로 접근이 가능하다.

'Alt + Ctrl + F1' 키를 눌러 보도록 하자.

그러면 화면이 바뀌면서 tty1 콘솔 모드로 진입 하게 된다.

그렇다면 차례 차례 F6까지 눌러 보도록 하자.

'Alt + Ctrl + F7' 까지 눌러보면 다시 원래의 XWINDOWS(pts/n)환경으로 돌아온 것을 알수가 있다.

사용 가능한 콘솔은 tty6 까지이고 xwindows 부터 사용하는 콘솔은 pts 에 속한다.

※ 하지만 만약 보안 툴인 selinux 를 'ecforce'로써 작동하여 사용하고 있다면 사용자도 다른 tty로 접근이 불가할 뿐만이 아니라 다른 pts, pty에 외부에서의 접근이 불가 하다.

즉 사용자도 tty를 사용하기 위해서는 selinux를 'permissive'로 정책을 바꿔줘야 한다.


해당 방법은 다음 포스트 에서 확인 할수 있다.

물론 tty에서 xwindwos 진입이 불가 한 것은 아니다.


// 먼저 'Alt + Ctrl + F1' 키를 눌러 tty1에 진입 하고 로그인 한다.

// tty를 확인한다.

$ tty

/dev/tty1

    * tty가 1로 정상적으로 뜨고 있다.

// tty1 콘솔에서 xwindows로 진입해 본다.

$ startx

// 새로운 xwindows에서 터미널을 열고 tty를 확인한다.

$ tty

/dev/pts/(number)
   
    * xwindows로 진입하자 tty가 아닌 마찬가지 다른 pts로 뜨는 것을 확인 할 수 있다.



 
앞서 말했듯이 xwindows에서 작동하는 가상 콘솔은 pts로써 동작 한다고 말했지만 이것은 꼭 다른 xwindows 에서만 추가 되는 것이 아니라
동일한 xwindows 데스크탑 에서 터미널-gui 을 열때 마다 추가 된다.

그렇다면 한 번 실험을 해보도록 해보자. ( 환경은 tty7-pts/1 그대로 한 곳에서만)


// 터미널 창을 여러개 띄운다.

$ ps -leat
    (-t 옵션은 terminal 현황 출력을 의미한다.)

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0  1907  1862  20   0 273452 56188 -      Rsl+ tty7       0:09 /usr/lib/xo
4     0  2229     1  20   0  24708  1860 -      Ss+  tty1       0:00 /sbin/agett
0  1000  2578  2573  20   0  31320  4992 wait   Ss   pts/1      0:00 bash XDG_SE
0  1000  3617  2578  20   0  34936  3232 signal T    pts/1      0:00 systemctl s
0  1000  3624  3617  20   0  18424   788 signal T    pts/1      0:00 pager LESSO
0  1000  3843  2573  20   0  31320  4812 wait_w Ss+  pts/7      0:00 bash XDG_SE
0  1000  3860  2573  20   0  31320  4828 wait_w Ss+  pts/8      0:00 bash XDG_SE
0  1000  3876  2573  20   0  31320  4868 wait_w Ss+  pts/9      0:00 bash XDG_SE
0  1000  3909  2578  20   0  37684  1540 -      R+   pts/1      0:00 ps -leat X

    * 현재 pts가 1, 7, 8, 9 총 4개가 있다. 이것은 사용자가 터미널 창을 4개를 띄웠다는 것을 의미한다.
 
// 이번에는 터미널 창 하나를 놔두고 나머지는 전부 종료 한다.

$ ps -leat

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0  1907  1862  20   0 277424 59612 -      Ssl+ tty7       0:13 /usr/lib/xorg/Xorg -core :0 -seat seat0
4     0  2229     1  20   0  24708  1860 -      Ss+  tty1       0:00 /sbin/agetty --noclear tty1 linux
0  1000  2578  2573  20   0  31328  5000 wait   Ss   pts/1      0:00 bash XDG_SEAT_PATH=/org/freedesktop/Dis
0  1000  3617  2578  20   0  34936  3232 signal T    pts/1      0:00 systemctl status ssh.service LESSOPEN=|
0  1000  3624  3617  20   0  18424   788 signal T    pts/1      0:00 pager LESSOPEN=| /usr/bin/lesspipe %s G
0  1000  3924  2578  20   0  37684  1488 -      R+   pts/1      0:00 ps -leat XDG_VTNR=7 XDG_SESSION_ID=c1

    * pts가 1 하나 밖에 남지 않은 것을 확인 할 수 있다.




도움이 되셨다면 '♡' 버튼을 꼭눌러 주시면 감사 하겠습니다.






+ Recent posts