Виртуальные консоли GNU/Linux и с чем их едят

archive view archive save

terminal-logo В опереционных системах GNU/Linux, текстовый терминал с приглашением входа в UNIX-оболочку обычно обеспечивают первые шесть виртуальных консолей, переключится из X сессии (GUI) на которые можно комбинацией Ctrl + Alt + F1-6.

Использование виртуальных консолей в данной статье описано на примере ОС Debian Linux, но также может быть аналогичным и в иных сборках GNU/Linux (к примеру убунту, торбунту, ёбунту, ябунту, йобунту етс.).

Первые шесть виртуальных консолей работают как терминал с приглашением ввода логина и пароля. Проверить количество виртуальных консолей можно командой:

$ ps ax | grep -v grep | grep getty
5026 tty1     Ss+    0:00 /sbin/getty 38400 tty1
5027 tty2     Ss+    0:00 /sbin/getty 38400 tty2
5028 tty3     Ss+    0:00 /sbin/getty 38400 tty3
5029 tty4     Ss+    0:00 /sbin/getty 38400 tty4
5030 tty5     Ss+    0:00 /sbin/getty 38400 tty5
5031 tty6     Ss+    0:00 /sbin/getty 38400 tty6

Выход из текстового терминала (консоли) осуществляется комбинацией Ctrl + Alt + F7. tty7 по сути также является виртуальным терминалом, который по умолчанию всегда выделен под графическую среду (Xorg, etc.).

Переключение между виртуальными консолями выполняется комбинацией Alt + LeftArrow или Alt + RightArrow.

Виртуальные консоли выше 7-го также существуют, но для них по умолчанию не предусмотрено ни текстового терминала, ни графического (Xorg, etc.), поэтому нажав Ctrl + Alt + F8-12 мы получим просто пустой чёрный экран.

Но если мы выполним:

$ sudo /sbin/getty 38400 tty12

После нажмём Ctrl + Alt + 12, то это приведет вас к tty12, который будет иметь экран входа и теперь может использоваться как терминал.

Контролировать число виртуальных терминалов (консолей) можно в файле /etc/inittab, где можно как добавить, так и удалить терминал. Если нужно удалить терминал, тогда просто поставьте символ комментария перед строкой запуска терминала, который нужно отключить, но только не перед первым (1). Сохраняйте как минимум один активный терминал.

$ gksu geany /etc/inittab
...
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

Под занавес стоит упомянуть файл /etc/securetty, в котором перечислены терминальные устройства (TTY) с которых суперпользователю root разрешено входить в систему. Содержимое /etc/securetty по-умолчанию:

# /etc/securetty: list of terminals on which root is allowed to login.
# See securetty(5) and login(1).
 
console
 
# Local X displays (allows empty passwords with pam_unix's nullok_secure)
:0
:0.0
:0.1
:1
:1.0
:1.1
:2
:2.0
:2.1
:3
:3.0
:3.1
#...
 
 
# ==========================================================
#
# TTYs sorted by major number according to Documentation/devices.txt
#
# ==========================================================
 
# Virtual consoles
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
tty12
tty13
tty14
tty15
tty16
tty17
tty18
tty19
tty20
tty21
tty22
tty23
tty24
tty25
tty26
tty27
tty28
tty29
tty30
tty31
tty32
tty33
tty34
tty35
tty36
tty37
tty38
tty39
tty40
tty41
tty42
tty43
tty44
tty45
tty46
tty47
tty48
tty49
tty50
tty51
tty52
tty53
tty54
tty55
tty56
tty57
tty58
tty59
tty60
tty61
tty62
tty63
 
# UART serial ports
ttyS0
ttyS1
ttyS2
ttyS3
ttyS4
ttyS5
#...ttyS191
 
# Serial Mux devices    (Linux/PA-RISC only)
ttyB0
ttyB1
#...
 
# Chase serial card
ttyH0
ttyH1
#...
 
# Cyclades serial cards
ttyC0
ttyC1
#...ttyC31
 
# Digiboard serial cards
ttyD0
ttyD1
#...
 
# Stallion serial cards
ttyE0
ttyE1
#...ttyE255
 
# Specialix serial cards
ttyX0
ttyX1
#...
 
# Comtrol Rocketport serial cards
ttyR0
ttyR1
#...
 
# SDL RISCom serial cards
ttyL0
ttyL1
#...
 
# Hayes ESP serial card
ttyP0
ttyP1
#...
 
# Computone IntelliPort II serial card
ttyF0
ttyF1
#...ttyF255
 
# Specialix IO8+ serial card
ttyW0
ttyW1
#...
 
# Comtrol VS-1000 serial controller
ttyV0
ttyV1
#...
 
# ISI serial card
ttyM0
ttyM1
#...
 
# Technology Concepts serial card
ttyT0
ttyT1
#...
 
# Specialix RIO serial card
ttySR0
ttySR1
#...ttySR511
 
# Chase Research AT/PCI-Fast serial card
ttyCH0
ttyCH1
#...ttyCH63
 
# Moxa Intellio serial card
ttyMX0
ttyMX1
#...ttyMX127
 
# SmartIO serial card
ttySI0
ttySI1
#...
 
# USB dongles
ttyUSB0
ttyUSB1
ttyUSB2
#...
 
# LinkUp Systems L72xx UARTs
ttyLU0
ttyLU1
ttyLU2
ttyLU3
 
# StrongARM builtin serial ports
ttySA0
ttySA1
ttySA2
 
# SCI serial port (SuperH) ports and SC26xx serial ports
ttySC0
ttySC1
ttySC2
ttySC3
 
# ARM "AMBA" serial ports
ttyAM0
ttyAM1
ttyAM2
ttyAM3
ttyAM4
ttyAM5
ttyAM6
ttyAM7
ttyAM8
ttyAM9
ttyAM10
ttyAM11
ttyAM12
ttyAM13
ttyAM14
ttyAM15
 
# Embedded ARM AMBA PL011 ports (e.g. emulated by QEMU)
ttyAMA0
ttyAMA1
ttyAMA2
ttyAMA3
 
# DataBooster serial ports
ttyDB0
ttyDB1
ttyDB2
ttyDB3
ttyDB4
ttyDB5
ttyDB6
ttyDB7
 
# SGI Altix console ports
ttySG0
 
# Motorola i.MX ports
ttySMX0
ttySMX1
ttySMX2
 
# Marvell MPSC ports
ttyMM0
ttyMM1
 
# PPC CPM (SCC or SMC) ports
ttyCPM0
ttyCPM1
ttyCPM2
ttyCPM3
ttyCPM4
ttyCPM5
 
# Altix serial cards
ttyIOC0
ttyIOC1
#...ttyIOC31
 
# NEC VR4100 series SIU
ttyVR0
 
# NEC VR4100 series SSIU
ttyVR1
 
# Altix ioc4 serial cards
ttyIOC84
ttyIOC85
#...ttyIOC115
 
# Altix ioc3 serial cards
ttySIOC0
ttySIOC1
#...ttySIOC31
 
# PPC PSC ports
ttyPSC0
ttyPSC1
ttyPSC2
ttyPSC3
ttyPSC4
ttyPSC5
 
# ATMEL serial ports
ttyAT0
ttyAT1
#...ttyAT15
 
# Hilscher netX serial port
ttyNX0
ttyNX1
#...ttyNX15
 
# Xilinx uartlite - port
ttyUL0
ttyUL1
ttyUL2
ttyUL3
 
# Xen virtual console - port 0
xvc0
 
# pmac_zilog - port
ttyPZ0
ttyPZ1
ttyPZ2
ttyPZ3
 
# TX39/49 serial port
ttyTX0
ttyTX1
ttyTX2
ttyTX3
ttyTX4
ttyTX5
ttyTX6
ttyTX7
 
# SC26xx serial ports (see SCI serial ports (SuperH))
 
# MAX3100 serial ports
ttyMAX0
ttyMAX1
ttyMAX2
ttyMAX3
 
# OMAP serial ports
ttyO0
ttyO1
ttyO2
ttyO3
 
# User space serial ports
ttyU0
ttyU1
 
# A2232 serial card
ttyY0
ttyY1
 
# IBM 3270 terminal Unix tty access
3270/tty1
3270/tty2
#...
 
# IBM iSeries/pSeries virtual console
hvc0
hvc1
#...
#IBM pSeries console ports
hvsi0
hvsi1
hvsi2
 
# Equinox SST multi-port serial boards
ttyEQ0
ttyEQ1
#...ttyEQ1027
 
# ==========================================================
#
# Not in Documentation/Devices.txt
#
# ==========================================================
 
# Embedded Freescale i.MX ports
ttymxc0
ttymxc1
ttymxc2
ttymxc3
ttymxc4
ttymxc5
 
# Serial Console for MIPS Swarm
duart0
duart1
 
# s390 and s390x ports in LPAR mode
ttysclp0

Если мы хотим напрочь запретить пользователю root локальный вход, тогда просто нужно очистить (не удалить!) файл /etc/securetty:

$ cp /etc/securetty /etc/securetty.orig
$ echo > /etc/securetty

Если /etc/securetty отсутствует, тогда вход пользователю root разрешён со всех локальных терминалов, если он пуст, то запрещено соответствено включая single-user mode. По-этому, дабы иметь возможность конектиться в "single-user mode" нужно оставить tty1 (vc/1) как минимум (Linux Annoyances for Geeks: Getting the Most Flexible System in the World).

Как упоминалось ранее, работа X-ов припадает на слот tty7, и это не изменится, даже если Вы уменьшите количество рабочих терминалов.

Раз уж зашла речь о правах входа в систему супер пользователя root, то заодно отредактируем и файл /etc/ssh/sshd_config, где строку "PermitRootLogin yes" изменим на "PermitRootLogin no", чем запретим пользователю root удалённое подключение с помощью ssh.

/etc/login.defs - ещё один файл, на который возможно стоит обратить внимание.

Для того чтобы повысить выживаемость в консоли Debian Linux рекомендуется ознакомится с материалами по ссылкам ниже.


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора
Комментарии в блоге
Новое на форуме