À un moment donné dans l'histoire récente, les nerds de la science-fiction ont commencé une célébration annuelle de tout ce que Star Wars le 4 mai, un jeu de mots sur la bénédiction Jedi, "Que la Force soit avec vous". Bien que la plupart des utilisateurs de Linux ne soient probablement pas des Jedi, ils ont encore des moyens d'utiliser la force. Bien sûr, le film n'aurait peut-être pas été aussi excitant si Yoda avait simplement dit à Luke de taper man X-Wing fighter ou force humaine . Ou s'il avait dit "RTFM" (lisez le manuel de la Force, bien sûr).
Plus de ressources Linux
- Aide-mémoire des commandes Linux
- Aide-mémoire des commandes Linux avancées
- Cours en ligne gratuit :Présentation technique de RHEL
- Aide-mémoire sur le réseau Linux
- Aide-mémoire SELinux
- Aide-mémoire sur les commandes courantes de Linux
- Que sont les conteneurs Linux ?
- Nos derniers articles Linux
De nombreuses commandes Linux ont un -f option, qui signifie, vous l'aurez deviné, forcer ! Parfois, lorsque vous exécutez une commande, elle échoue ou vous demande une entrée supplémentaire. Cela peut être un effort pour protéger les fichiers que vous essayez de modifier ou pour informer l'utilisateur qu'un appareil est occupé ou qu'un fichier existe déjà.
Si vous ne voulez pas être dérangé par des invites ou si vous ne vous souciez pas des erreurs, utilisez la force !
Sachez que l'utilisation de l'option force d'une commande pour passer outre ces protections est généralement destructrice. Par conséquent, l'utilisateur doit être très attentif et s'assurer qu'il sait ce qu'il fait. Utiliser la force peut avoir des conséquences !
Voici quatre commandes Linux avec une option de force et une brève description de comment et pourquoi vous pourriez vouloir l'utiliser.
cp
Le cp La commande est l'abréviation de copier - elle est utilisée pour copier (ou dupliquer) un fichier ou un répertoire. La page de manuel décrit l'option de force pour cp comme :
-f, --force
if an existing destination file cannot be opened, remove it
and try again
Cet exemple s'applique lorsque vous travaillez avec des fichiers en lecture seule :
[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 13 May 1 12:24 Hoth
-r--r----- 1 alan alan 14 May 1 12:23 Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet
Green Planet
Si vous voulez copier un fichier nommé Hoth à Naboo , le cp la commande ne le permettra pas depuis Naboo est en lecture seule :
[alan@workstation ~]$ cp Hoth Naboo
cp: cannot create regular file 'Naboo': Permission denied
Mais en utilisant la force, cp ne demandera pas. Le contenu et les autorisations de Hoth sera immédiatement copié sur Naboo :
[alan@workstation ~]$ cp -f Hoth Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet
Icy Planet
[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 12 May 1 12:32 Hoth
-rw-rw---- 1 alan alan 12 May 1 12:38 Naboo
Oh non! J'espère qu'ils ont des vêtements d'hiver sur Naboo.
ln
Le ln La commande est utilisée pour établir des liens entre les fichiers. La page de manuel décrit l'option de force pour ln comme :
-f, --force
remove existing destination files
Supposons que la princesse Leia gère un serveur d'applications Java et qu'elle dispose d'un répertoire dans lequel toutes les versions de Java sont stockées. Voici un exemple :
leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia 12 Mar 5 2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
Comme vous pouvez le voir, il existe plusieurs versions du kit de développement Java (JDK) et un lien symbolique pointant vers la dernière. Elle utilise un script avec les commandes suivantes pour installer les nouvelles versions du JDK. Cependant, cela ne fonctionnera pas sans une option de force ou à moins que l'utilisateur root ne l'exécute :
tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk
Le goudron La commande extraira le fichier .gz dans le répertoire spécifié, mais le ln La commande ne parviendra pas à mettre à niveau le lien car il en existe déjà un. Le résultat sera que le lien ne pointe plus vers le dernier JDK :
leia@workstation:/usr/lib/java$ ln -vs jdk1.8.0_181 jdk
ln: failed to create symbolic link 'jdk/jdk1.8.0_181': File exists
leia@workstation:/usr/lib/java$ ls -lt
total 28
drwxr-x--- 2 leia leia 4096 May 1 15:44 jdk1.8.0_181
lrwxrwxrwx 1 leia leia 12 Mar 5 2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
Elle peut forcer ln pour mettre à jour le lien correctement en passant l'option force et une autre, -n . Le -n est nécessaire car le lien pointe vers un répertoire. Maintenant, le lien pointe à nouveau vers le dernier JDK :
leia@workstation:/usr/lib/java$ ln -vsnf jdk1.8.0_181 jdk
'jdk' -> 'jdk1.8.0_181'
leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia 12 May 1 16:13 jdk -> jdk1.8.0_181
drwxr-x--- 2 leia leia 4096 May 1 15:44 jdk1.8.0_181
drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
Une application Java peut être configurée pour trouver le JDK avec le chemin /usr/lib/java/jdk au lieu d'avoir à le changer à chaque mise à jour de Java.
rm
La rm La commande est l'abréviation de "supprimer" (que nous appelons souvent supprimer, car certains autres systèmes d'exploitation ont un del commande pour cette action). La page de manuel décrit l'option force pour rm comme :
-f, --force
ignore nonexistent files and arguments, never prompt
Si vous essayez de supprimer un fichier en lecture seule, vous serez invité par rm :
[alan@workstation ~]$ ls -l
total 4
-r--r----- 1 alan alan 16 May 1 11:38 B-wing
[alan@workstation ~]$ rm B-wing
rm: remove write-protected regular file 'B-wing'?
Vous devez taper soit o ou n pour répondre à l'invite et autoriser le rm commande de continuer. Si vous utilisez l'option de force, rm ne vous le demandera pas et supprimera immédiatement le fichier :
[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$
L'utilisation la plus courante de la force avec rm consiste à supprimer un répertoire. Le -r l'option (récursive) indique rm pour supprimer un répertoire. Lorsqu'il est combiné avec l'option force, il supprimera le répertoire et tout son contenu sans invite.
La rm commande avec certaines options peut être désastreuse. Au fil des ans, les forums en ligne se sont remplis de blagues et d'histoires d'horreur d'utilisateurs effaçant complètement leurs systèmes. Cette utilisation notoire est rm -rf * . Cela supprimera immédiatement tous les fichiers et répertoires sans aucune invite où qu'ils soient utilisés.
userdel
Le userdel La commande est l'abréviation de user delete, qui supprimera un utilisateur. La page de manuel décrit l'option de force pour userdel comme :
-f, --force
This option forces the removal of the user account, even if the
user is still logged in. It also forces userdel to remove the
user's home directory and mail spool, even if another user uses
the same home directory or if the mail spool is not owned by the
specified user. If USERGROUPS_ENAB is defined to yes in
/etc/login.defs and if a group exists with the same name as the
deleted user, then this group will be removed, even if it is
still the primary group of another user.
Note: This option is dangerous and may leave your system in an
inconsistent state.
Quand Obi-Wan atteignit le château de Mustafar, il savait ce qu'il fallait faire. Il a dû supprimer le compte d'utilisateur de Dark, mais Dark était toujours connecté.
[root@workstation ~]# ps -fu darth
UID PID PPID C STIME TTY TIME CMD
darth 7663 7655 0 13:28 pts/3 00:00:00 -bash
[root@workstation ~]# userdel darth
userdel: user darth is currently used by process 7663
Puisque Dark est actuellement connecté, Obi-Wan doit utiliser l'option de force pour userdel . Cela supprimera le compte utilisateur même s'il est connecté.
[root@workstation ~]# userdel -f darth
userdel: user darth is currently used by process 7663
[root@workstation ~]# finger darth
finger: darth: no such user.
[root@workstation ~]# ps -fu darth
error: user name does not exist
Comme vous pouvez le voir, le doigt et ps confirment que l'utilisateur Dark a été supprimé.
Utiliser la force dans les scripts shell
De nombreuses autres commandes ont une option de force. Un endroit où la force est très utile est dans les scripts shell. Étant donné que nous utilisons des scripts dans les tâches cron et d'autres opérations automatisées, il est crucial d'éviter toute invite, sinon ces processus automatisés ne se termineront pas.
J'espère que les quatre exemples que j'ai partagés ci-dessus vous aideront à comprendre comment certaines circonstances peuvent nécessiter le recours à la force. Vous devez avoir une bonne compréhension de l'option force lorsqu'elle est utilisée sur la ligne de commande ou lors de la création de scripts d'automatisation. Son utilisation abusive peut avoir des effets dévastateurs, parfois sur l'ensemble de votre infrastructure, et pas seulement sur une seule machine.