§ 40.1 Devices associés aux pseudo terminaux
Pseudos terminaux (virtuels ou physiques) pour : terminal type vt100, xterm, etc.
Les fichiers associés aux pseudo terminaux se trouvent dans
/dev
. Par exemple–
/dev/tty01
pour le terminal série–
/dev/console
pour l’écran principal de la machine– pour les connexions réseau, on utilise deux fichiers par connexion : un fichier maître et un fichier esclave.
Le master pseudo terminal a pour nom
/dev/pty[p-s]NN
sur BSD,/dev/ptc/NN
sur System-V.Le slave pseudo terminal a pour nom
/dev/tty[p-s]NN
sur BSD,/dev/pts/NN
sur System-V.Formation permanente Paris 6 – ARS 8.0 – cThierry Besançon 147
Pseudo terminaux Commande
tty
, device/dev/tty
§ 40.2 Commande tty , device /dev/tty
Pour connaître le nom du terminal courant, utiliser la commande tty :
% tty /dev/pts/1
Un fichier spécial, /dev/tty :
% tty /dev/pts/1
% echo oui > /dev/tty oui
Les entrées / sorties de
/dev/tty
sont associées à votre terminal.Pseudo terminaux Nombre de terminaux
§ 40.3 Nombre de terminaux
Attention : Il doit y avoir un nombre suffisant de terminaux pour accueillir les utilisateurs. Dans le cas contraire :
% rlogin serveur.prism.uvsq.fr rlogind: All network ports in use.
Connection closed.
Comment corriger le problème ?
La correction du problème se fait à deux niveaux :
1. vérifier le nombre de terminaux configurés dans le noyau :
pseudo-device pty 256 #Pseudo ttys - can go as high as 256 2. augmenter le nombre de fichiers terminaux dans
/dev
:# cd /dev
Formation permanente Paris 6 – ARS 8.0 – cThierry Besançon 149
Pseudo terminaux Phase de connexion,
init
,getty
§ 40.4 Phase de connexion, init , getty
init
gére l’ensemble des lignes physiques sur lesquelles les utilisateurs se connectent.Au démarrage d’
init
, après consultation de/etc/inittab
ou de/etc/ttys
, il y a lancement d’un processusgetty
par ligne physique attachée à l’unité centrale.% ps -edf
USER PID PPID %CPU STARTED TT TIME COMMAND [...]
root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c root 363 1 0.0 Aug 03 05 0:00.04 /usr/sbin/getty /dev/tty05 c [...]
La commande
getty
configure les paramètres de la ligne (vitesse, parité, etc.) puis attend qu’un utilisateur se manifeste.Pseudo terminaux Phase de connexion,
init
,getty
Lorsqu’un utilisateur tape son nom de login, legetty
en question donne la main au programmelogin
:% ps -edf
USER PID PPID %CPU STARTED TT TIME COMMAND [...]
root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c root 363 1 0.0 Aug 03 05 0:00.09 login besancon
[...]
Le programme
login
valide ou pas l’utilisateur. Dans le cas favorable, une session shell est lancée (notez le caractère «-
» en début du nom du shell) :% ps -edf
USER PID PPID %CPU STARTED TT TIME COMMAND [...]
root 362 1 0.0 Aug 03 04 0:00.04 /usr/sbin/getty /dev/tty04 c besancon 363 1 0.0 Aug 03 05 0:00.78 -bash (bash)
[...]
Lorsque le shell se termine,
init
détecte la terminaison d’un de ses fils. Il regénére alors un nouveau processusgetty
.Formation permanente Paris 6 – ARS 8.0 – cThierry Besançon 151
Pseudo terminaux Liste BSD des terminaux physiques :
/etc/ttys
§ 40.5 Liste BSD des terminaux physiques : /etc/ttys
Les lignes à surveiller par
init
sont précisées via le fichier/etc/ttys
:console none unknown off secure
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 on secure
# Serial terminals
ttyd0 "/usr/libexec/getty std.9600" unknown off secure ttyd1 "/usr/libexec/getty std.9600" unknown off secure
# Pseudo terminals
ttyp0 none network
ttyp1 none network
Pseudo terminaux Liste System-V des terminaux physiques :
/etc/inittab
§ 40.6 Liste System-V des terminaux physiques : /etc/inittab
Les lignes à surveiller par
init
sont précisées via le fichier /etc/inittab : lat01:3:respawn:/usr/sbin/getty /dev/tty01 console vt100 lat02:3:respawn:/usr/sbin/getty /dev/tty02 console vt100 ...lat0e:3:respawn:/usr/sbin/getty /dev/tty0e console vt100 lat0f:3:respawn:/usr/sbin/getty /dev/tty0f console vt100
Formation permanente Paris 6 – ARS 8.0 – cThierry Besançon 153
Pseudo terminaux Terminaux sécurisés
§ 40.7 Terminaux sécurisés
Root est-il autorisé à se connecter sur tout terminal ?
% rlogin ars01.formation.jussieu.fr -l root Password:
Not on system console Connection closed.
Pourquoi ?
Parce qu’un login au nom de root est anonyme et interdit en conséquence.
Comment contrôler l’accès ?
Pseudo terminaux Terminaux sécurisés
Contrôle d’accès sur BSD
Au niveau de /etc/ttys ou /etc/ttytab : ...
The super-user root may only log in on those terminals marked as "secure" in the /etc/ttytab file. Otherwise, the super-user must log in as an ordinary user and become super-user using su(1v). For example, if the file con-tained:
console "/etc/getty Console-9600" sun on secure tty00 "/etc/getty Console-9600" sun on
...
the super-user could only log in directly on the console.
See ttytab(5) for a discussion of secure and other getty(8) options used in /etc/ttytab.
...
Formation permanente Paris 6 – ARS 8.0 – cThierry Besançon 155
Pseudo terminaux Terminaux sécurisés
Contrôle d’accès sur DIGITAL Unix Au niveau de /etc/securettys :
#
# Note: Each entry in this file represents a device (secure device)
# from which root login is permitted. For, pseudo ttys (ptys) a
# single keyword entry "ptys" means all ptys are to be treated as being
# secure. Note that the entry is "ptys" and not prefixed by /dev
# as is customary for the other physical devices. The absence of
# this key word implies that root login will not be permitted from
# all ptys. X displays are indicated with the display name.
#
Pseudo terminaux Terminaux sécurisés
Contrôle d’accès sur Linux Au niveau de /etc/securetty :
## /etc/securetty is used by login(1); the file contains tty
## lines (without leading /dev/) on which root is allowed to
## login.
tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8 ttyp0 ttyp1
Formation permanente Paris 6 – ARS 8.0 – cThierry Besançon 157
Pseudo terminaux Terminaux sécurisés
Contrôle d’accès sur Solaris Au niveau de /etc/default/login : ...
# If CONSOLE is set, root can only login on that device.
# Comment this line out to allow remote login by root.
#
CONSOLE=/dev/console ...
Terminaux X, XDM