Comment repartitionner sans détruire de partition ?
Le logiciel MS-DOS FIPS
permet cela, mais uniquement avec les
FAT
16 bits. Une
version plus récente traite les
FAT32.
Comment exploiter les disques non écrits sous Linux ?
mtools
et pilote vfat
intégré au
noyau
vfat
, puis l'utiliser), ou bien employer
une version récente des mtools
.
Login (connexion) impossible, probablement après manipulation du fichier
/etc/passwd
ou de l'un des éléments de la chaîne associée (binaire
login
, shadow passwords
, Red Hat : pwdb
ou
PAM
...)
S'il s'agit d'un login root à travers le réseau, ne pas négliger de modifier
/etc/securettys
. Dans le cas d'une Red Hat, examiner aussi la
configuration PAM.
Solution fournie par J. Fourre et P. Saratxaga.
Démarrer de façon à pouvoir modifier /etc/passwd
. Pour cela, il
suffit de passer un paramètre au noyau afin de lancer le système dans un
mode d'exploitation spécial.
Pour ce faire, démarrer :
S
;single
;init=/bin/sh
.Dans le cas d'une Red Hat :
Pablo recommande, sitôt le
système démarré grâce au paramètre init=/bin/bash
, d'invoquer
/etc/rc.d/rc 2
, remonter "/" en autorisant la lecture et
l'écriture (mode rw
) avec mount -n -o remount,rw /
,
puis d'éditer /etc/passwd
.
On peut se contenter d'invoquer /etc/rc.d/init.d/keytable
afin de
bénéficier d'une gestion du clavier adéquate (AZERTY ...).
Pour supprimer un mot de passe, il suffit de modifier la ligne correspondant
au compte dans le fichier /etc/passwd
afin de détruire tous les
caractères placés entre les deux premiers « deux-points ».
Exemple (suppression du mot de passe de root) :
root:RuN0C/zyWvkf2:0:0:root:/root:/bin/bash
root::0:0:root:/root:/bin/bash
/etc/shadow
.
ATTENTION : un pirate peut employer ce genre d'approche pour prendre le contrôle d'une machine à laquelle il peut « physiquement » accéder.
Pour limiter les risques :
password
et restricted
de LILO
(ne pas négliger qu'il faudra, lors du démarrage, composer le mot de passe
avec un clavier configuré en QWERTY) ;Cela devrait limiter les écarts des mauvais plaisants mais gare : un malintentionné peut encore ouvrir la machine (remise à zéro du SETUP, dépose du disque dur...).
F. Rouaix note : si la machine peut également démarrer sous
MS-DOS, utiliser loadlin
pour charger un noyau avec des options
arbitraires, telles que single
.
L. Wacrenier ajoute : le mot de passe de LILO n'est pas chiffré (un boot secteur n'a pas à s'encombrer de bibliothèque de chiffrement). Le mot de passe apparaîtra donc en clair à qui peut lire le disque. D'où l'idée de mettre un mot de passe qui ne peut être saisi au clavier (ou de redéfinir un clavier, etc.).
La session de travail semble parfois bloquée, le terminal ne produit rien et n'accepte plus rien (aucune touche ne fonctionne).
Le blocage est souvent normal car dû à une combinaison de touches « Control-S » ou bien « Arrêt Défil. » (« Scroll Lock ») en mode console. Il suffit alors d'employer « Control-Q » (ou sur « Arrêt Défil. ») pour ranimer la session.
Le shell en prend pas en compte un exécutable placé dans un répertoire qui
figure pourtant dans le PATH
.
Il faut obliger le shell à explorer le contenu des répertoires du
PATH
.
hash -r
;rehash
.Contrairement à DOS, le répertoire courant (qui s'appelle .) n'est pas
recherché explicitement lors de la recherche des exécutables. Solution :
l'ajouter dans le PATH (déconseillé pour des raisons de sécurité) ou lancer
l'exécutable ainsi : ./programme
.tar.gz
(archive)
Qu'est-ce qu'un fichier .tar.gz
et comment l'utiliser ?
Un fichier .tar.gz
contient un ou plusieurs fichiers rassemblés au
sein d'une archive tar, elle-même compactée grâce à gzip
.
tar tvzf NOM.tar.gz
pour obtenir la liste des fichiers
contenus dans l'archive ;tar xzf NOM.tar.gz
pour décompacter l'archive dans le répertoire
courant.Il est temps de lire un bon document destiné à l'utilisateur débutant d'un Unix moderne...
Le nombre de liens sur un répertoire semble faux.
Voici la question :
[root@localhost src]# ls -l
total 2
lrwxrwxrwx 1 root root 12 May 2 19:32 linux -> linux-2.0.27
drwxr-xr-x 15 root root 1024 May 3 09:17 linux-2.0.27
drwxr-xr-x 7 root root 1024 Mar 3 15:08 redhat
/\ 15 ? ? ? ? ?
Voilà déjà là mes bouquins et mes essais disent qu'il ne peut pas y avoir
de hard link sur un répertoire, et que les soft link ne sont pas dans
les compteurs de liens, alors comment le répertoire linux-2.0.27 peut avoir
son compteur à 15 ?
Solution fournie par S. Stephant (révisée par F. Petillon) :
Afin de ne pas boucler sans fin lors de la résolution de noms de fichiers, il est effectivement _impossible_ de créer un lien « hard » sur un répertoire. Seul les liens symboliques sont autorisés.
Le compteur de liens (seconde colonne dans un ls -l
) indique le nombre de
noms différents que porte un même fichier. Or, un répertoire a toujours au
moins deux noms : « nom_du_repertoire » et « nom_du_repertoire/. ».
Chaque répertoire contient un répertoire nommé « .. » pointant sur son répertoire parent. Ces répertoires incrémentent donc d'autant le compteur de liens du répertoire parent.
Dans ton cas, l'entrée « linux-2.0.27 » a un compteur de liens égal à 15 : le répertoire « linux-2.0.27 », le répertoire « linux-2.0.27/. » et 13 autres répertoires « linux-2.0.27/répertoire/.. »
J'ai tout d'abord installé Linux (Red Hat) sur le disque dur hda
.
Or, j'ai depuis acheté un autre disque dur plus gros que j'ai mis en
maître sur ma première nappe, reléguant le précédent sur ma deuxième
nappe IDE... Mon ancienne installation de Linux se retrouve donc
maintenant en hdc
... Que faut-il modifier pour arriver à la faire
tourner comme avant mais en hdc
...?
Solution fournie par J.C. Richard :
rescue
. Puisque tu as la Red Hat, utilise
la disquette de boot fournie, mais tape rescue
quand lilo
te demande ce que tu veux ;hda1
à hdc1
pour t'expliquer la méthode.
mkdir /mnt/tmp
mount /dev/hdc1 /mnt/tmp
cd /mnt/tmp/etc
vi fstab
(remplace alors tes occurences de /dev/hda1,2,3,4
par
/dev/hdc1,2,3,4
)
vi lilo.conf
boot=/dev/hda (pour avoir LILO en MBR)
map=/boot/map
install=/boot/boot.b
prompt
image=/boot/vmlinuz
label=linux
root=/dev/hdc1
read-only
et tout le reste de ton lilo.conf
est à modifier dans le même sens,
si tu as des partitions Dos, NT et autres à installer ;loadlin
en lui indiquant le montage root=/dev/hdc1
;
mount root=/dev/hdc1
lilo
. Tout est réparé.La solution indiquée ci-dessus n'est pas spécifique à Red Hat.
Afin d'éviter de rebooter sous un autre système (ou s'il n'y en a pas),
il suffit, après avoir correctement modifié lilo.conf
, d'exécuter
la commande suivante : lilo -C /mnt/tmp/etc/lilo.conf -r /mnt/tmp
.
Comment déterminer quel processus utilise une ressource donnée (fichier, donc par extension périphérique) ?
Employer (en tant que root
) l'utilitaire fuser
, livré avec
l'ensemble psmisc
.
Exemple commenté :
$ fuser /dev/ttyS1 # qui donc utilise /dev/ttyS1 ?
/dev/ttyS1: 245 # le processus numero 245
$ ps -auxw|grep 245 # quel est ce processus ?
root 245 0.3 6.8 8336 4356 ? S 10:34 1:29 X :0
# c'est X Window !
$ fuser /usr/bin/X11/X # qui donc utilise "/usr/bin/X11/X" ?
/usr/bin/X11/X: 245 # programme execute par le processus 245
On peut aussi installer lsof
.
Le simple ajout d'une ligne à /etc/fstab
permet à n'importe quel
utilisateur de monter/démonter un support amovible sans devoir employer
tous les paramètres.
Voici, par exemple, un extrait de /etc/fstab
(cas d'un CD-ROM ATAPI
maître sur la seconde chaîne EIDE)
/dev/hdc /mnt/cd iso9660 noauto,user,exec,ro,umask=033,unhide 0 0
Chaque ligne du fstab
est composée de champs qui décrivent un système
de fichiers montable. Des espaces ou tabulations séparent ces champs.
/dev/hdc
) contient le nom du fichier spécial
associé au périphérique ;/mnt/cd
) le nom du répertoire où le montage sera
effectué (il DOIT exister !) ;iso9660
pour un CD-ROM, vfat
pour une partition MS-DOS ;noauto,user [...]=033
) les options de montage ;
noauto
:Pas de montage automatique lors du boot.
user
:Montable/démontable par un utilisateur (c'est ce qui nous intéresse).
exec
:Les binaires placés sur ce support seront exécutables.
ro
:Lecture seule (Read-Only).
umask
:« permissions » du répertoire de montage. 033 (ou
000, si vfat
) permet à tous de lire.
0
) la fréquence des sauvegardes par
dump
: laisser 0 dans le cas d'un volume amovible ;0
) le rang de passage à fsck
: laisser 0
dans le cas d'un volume amovible ;Utiliser /dev/sr0
en lieu et place de /dev/hdc
pour le
premier CD SCSI.
N'importe quel utilisateur peut alors invoquer mount /mnt/cd
puis
umount /mnt/cd
et obtenir satisfaction. ATTENTION : le binaire de
mount
doit être setuid root :
chown root `which mount`
chmod +s `which mount`
Autres exemples :
/dev/hda1 /mnt/dos-c vfat umask=003,codepage=850,noauto,user,exec 0 0
/dev/sda4 /mnt/jaz ext2 noauto,user,exec 0 0
/dev/fd0 /mnt/floppy auto sync,user,noauto,unhide 0 0
Documentation : commencer par les pages de manuel de mount
et
fstab
.
S. Stephant :
Utiliser les options gid
, uid
et/ou umask
pour
limiter les possibilités des divers utilisateurs sur les systèmes de
fichiers ainsi montés.
Afin de limiter l'accès de certaines partitions à un utilisateur ou à un
groupe précis, on peut utiliser l'option de montage « umask ». Par exemple,
pour que seuls les membres du groupe « dos » (gid=202) puissent accéder à
votre partition vfat, on peut utiliser la ligne suivante dans le
fstab
:
/dev/hda1 /diskc vfat noauto,user,noexec,gid=202,umask=0007 0 0
De même, pour autoriser seulement l'utilisateur « durand » (uid=100) à écrire
sur cette partition, autoriser les membres du groupe « dos » (gid=202) à
y lire, et interdire l'accès aux autres, on peut utiliser une entrée comme
:
/dev/hda1 /diskc vfat noauto,user,noexec,uid=100,gid=202,umask=0027 0 0
Ne modifier que /etc/fstab
, JAMAIS /etc/mtab
.
Comment mieux employer les consoles virtuelles ?
chvt
permet de changer de console active ;setterm
pour établir les paramètres ;tty
affiche le nom du périphérique connecté à la console
active.
C. Blaess (édité) :
Il n'existe pas encore de système de fichiers stable pour Linux capable d'effectuer un compactage dynamique des données.
On peut toutefois utiliser certains artifices :
zlibc
est une bibliothèque qui intercepte les appels à la
fonction open()
, et reconstitue « à la volée » les fichiers compressés
auparavant par gzip
. Toutefois, ce paquetage ne permet pas l'exécution de
fichiers binaires compressés ;tcx
est un bon complément de zlibc
, puisqu'il ne décompresse que
des fichiers exécutables ;Pour accèder aux volumes compressés d'une partition MS-DOS, il y a plusieurs possibilités :
Dosemu
;thsfs
est un module permettant de monter des partitions MS-DOS
normales ou des volumes Double Space, en lecture seulement ;dmsdosfs
est un système de fichiers permettant un accès en
lecture/écriture aux volumes compactés :
DoubleSpace
et DriveSpace
de MS-DOS 6.x ;DoubleSpace
et DriveSpace 3
de MS-Windows 95 ;Stacker
3 et 4.DriveSpace 3
et
Stacker 3
.
Comment ajouter une entrée dans /dev
?
À chaque périphérique peut correspondre un (ou plusieurs) fichier spécial grâce auquel les programmes dialoguent avec le pilote de périphérique correspondant.
Règles :
MAKEDEV
ou
mknod
. Lire le fichier « Documentation/devices.txt » livré avec les
sources du noyau afin de déterminer les paramètres adéquats ;/dev
n'est
pas suffisant, il faut aussi que le pilote de périphérique nécessaire soit
disponible (compilé dans le noyau ou sous forme de module).
Qu'est-ce qu'un fichier core
?
S. Stephant : Linux avorte tout processus lorsqu'il tente d'effectuer une opération potentiellement dangereuse (par exemple exécuter des données, accéder à une adresse mémoire ne lui appartenant pas ...).
Un fichier "core" est une "image", générée par le système, du contexte d'exécution d'un programme au moment d'une interruption de ce genre. Il permet de déterminer par la suite, grâce à un debugger, la cause du problème.
O. Tharan :
Les fichiers .bz
et .bz2
sont des archives compactées
avec une méthode plus efficace que celle de gzip (archives
.gz
).
Les programmes capables d'en engendrer ou décompacter, appelés
"bzip
" et "bzip2
", existent sous forme de paquetages. On
peut aussi en trouver
les sources.
Il existe un mini-Howto décrivant l'utilisation de bzip2.
Que signifie le message unable to get major
suivi d'un nombre ?
Un pilote de périphérique compilé dans le noyau (donc « intégré ») se trouve
aussi disponible sous forme de module.
E. Decaen : utiliser modprobe -c
pour
étudier la liste des modules en ligne.
e2fsck
, par exemple lorsqu'il est invoqué automatiquement durant le boot,
produit parfois un message :
Deleted inode XXX has zero dtime.
Set dtime? yes.
R. Card :
Chaque i-noeud possède un champ dtime
qui contient la date de suppression
du dernier fichier associé à cet i-noeud. Le but de ce champ est de
permettre d'effectuer des traitements particuliers quand/si une fonction
« undelete » sera incorporée à Ext2fs.
Lorsqu'un fichier est supprimé, le noyau met à jour ce champ dtime
(avec la
date courante) et l'i-noeud est réécrit sur disque. Quand un i-noeud est
alloué, le champ dtime
est mis à zéro.
fsck
vérifie que le champ dtime
est non nul pour tout i-noeud non alloué
(dont le nombre de liens est nul). Si ce n'est pas le cas, il affiche ce
message d'erreur. Généralement, cette erreur peut être due à des
redémarrages brutaux, à des problèmes de disque ou à des bogues dans
Ext2fs.
De toutes façons, c'est une erreur très bénigne dans la mesure où dtime
n'est pas (encore) utilisé.
"/etc/passwd is locked, try again later"
J.-C. Delépine : Tu as dû utiliser la commande adduser et la
quitter brutalement. La version Red Hat de cette commande crée un fichier
/etc/.pwd.lock
afin de s'assurer l'exclusivité sur le fichier
/etc/passwd
.
Solution donc : vérifier quíl n'y a pas un autre adduser qui tourne quelque
part puis supprimer le fichier /etc/.pwd.lock
D. Segonds :
Peut être causé par un manque de mémoire. Rajouter par exemple de la
mémoire virtuelle (swap) en utilisant mkswap
puis
swapon
.
"halt,shutdown,reboot" en tant que root ou Ctrl+Alt+Supr me renvoient tous le message: "shutdown: already running"
D. Segonds, E. David et Remy Card :
Méthode la plus élégante : shutdown -c
.
Un fichier bloque le lancement d'un deuxième shutdown lorsqu'un autre est
déjà en cours. Il s'agit de shutdown.pid
, souvent placé dans
/var/run
ou bien dans /etc
. Le détruire.
Des binaires libc5 et libc6 coexistent sur le système, or le format de
/var/run/utmp
a évolué.
Linux ne prend pas en charge les bibliothèques partagées.
T. Parmelan (édité) :
En tant que root
:
/etc/ld.so.conf
afin qu'il contienne
les noms de tous les répertoires abritant des bibliothèques partagées
(/lib
et /usr/lib
sont pris en charge par défaut). Y
ajouter par exemple /usr/local/lib
, /usr/X11R6/lib
...
/bin/ls *.so.? | sed -e 's/\(.*\.so\)\(\..\)/ln -sf \1\2 \1/' | sh -x
ldconfig
Comment déterminer le type d'un exécutable ou obtenir la liste des bibliothèques partagées qu'il emploie ?
Commande ldd NOMFICHIER
.
Qu'abrite le répertoire /proc
?
Un ensemble de fichiers « virtuels » permettant de communiquer avec le noyau. Aucun d'eux n'occupe d'espace sur le disque.
Notamment, le fichier kcore
, dont la taille peut effrayer, n'est
qu'une image de la mémoire disponible sur la machine. N'essayez pas
de le détruire pour « libérer » de l'espace disque...