GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation de la force sur la ligne de commande Linux

À 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.


Linux
  1. Générer des mots de passe sur la ligne de commande Linux

  2. 8 conseils pour la ligne de commande Linux

  3. Une introduction à l'utilisation de tcpdump sur la ligne de commande Linux

  4. Utilisation de Google Drive à partir de la ligne de commande Linux

  5. 4 outils pour télécharger n'importe quel fichier en utilisant la ligne de commande sous Linux

Utiliser plus pour afficher les fichiers texte sur la ligne de commande Linux

Utilisation de less pour afficher les fichiers texte sur la ligne de commande Linux

Utilisation de la commande gratuite Linux

Maîtrisez la ligne de commande Linux

Tutoriel sur l'utilisation de la commande Timeout sous Linux

Comment télécharger des fichiers dans Rocky Linux 8 sur la ligne de commande à l'aide de wget