Commandes linux

Aides

Manuel d'une commande

man nom_de_la_commande

Aide d'une commande

nom_de_la_commande -h

nom_de_la_commande --help

Explications d'une commande shell

https://explainshell.com/#

 

clé usb

Identifier la clé

fdisk -l

Commande pour synchroniser

dd if=/dev/zero of=/dev/sdb bs=2048; sync

c'est un peu long.
Autre commande donnant le même résultat en plus rapide :

wipefs -a /dev/sdb

 

Commandes de base

Privilèges

$ ls : liste les dossiers et fichiers du répertoire courant
$ ls -a : liste tous les dossiers et fichiers du répertoire courant en incluant les fichiers cachés
$ ls -l  monFichier : affiche les privilèges
$ ls -l ~/ :  liste les dossiers et fichiers du répertoire courant avec leurs privilèges

Parcourir l'arborescence

$ pwd : pour connaître le répertoire courant (print working directory)
$ cd : changer de répertoire (change directory)
$cd .. : aller au répertoire père

copier

$ cp nomDuFichierACopier nomDuFichierDeDestination
$ cp /usr/local/bin/* . : copie tous les fichiers (sauf les sous-répertoires) contenus dans le répertoire /usr/local/bin dans le répertoire courant.

copier un repertoire

r pour récursif
p pour garder les droits
cp -rp {source} {destination}

copier en excluant des répertoires

rsync -av --exclude={répertoire/exclus/} / --exclude={répertoire/exclus/} {source} {destination}

renomer

$ mv nomDuFichier.tex nouveauNomi.tex

déplacer

$ mv nomDuFichier.tex /dossierDeDestination

effacer un fichier

$ rm /dossier/nomDuFichier.tex

créer un nouveau répertoire

$ mkdir tmp

effacer un répertoire

$ rm -r tmp

-r. Cette option permet d'effacer récursivement son contenu

Archive zip

zip -r nom_de_larchive.zip dossier

unzip nom_de_larchive.zip -d dossier

https://doc.ubuntu-fr.org/commande_shell

Consoles virtuelles screen

Screen (GNU Screen) est un “multiplexeur de terminaux” permettant d’ouvrir plusieurs terminaux dans une même console, de passer de l’un à l’autre et de les récupérer plus tard.

Créer un nouveau “screen” en nommant la session

screen -S nom_de_la_session

Pour se rattacher à la session du screen

screen -r nom_de_la_session

Connaître les terminaux existants

screen -ls

 

https://linux.goffinet.org/administration/processus-et-demarrage/consoles-virtuelles-screen/

Droits

Modiffier les droits

sudo chmod -R 775 spot_elements.
775 - Tous les droits pour le propriétaire et le groupe / Lecture et exécution pour les autres
Très pratique pour se simplifier la vie avec la gestion d'un site en développement sur un serveur local (dans le dossier media)

 TypePropriétaireGroupeLes autres
Droits r w xr w xr - x
Valeur Octale 4+2+1=74+2+1=74+0+1=5


 Read - Write - eXecute

Type de fichier : - pour un fichier, d pour un dossier, l pour lien symbolique

Afficher le contenu d'un répertoire en faisant la distinction entre les dossiers et les autres

➜ ls -f

 

https://www.leshirondellesdunet.com/chmod-et-chown

Droits des autres utilisateurs

sudores

/etc/sudoers

cd /etc/sudoers.d

donner les droit à apache de la commande mv sans avoir besoin du mot de passe

sudo vim 10-www-apache
www-data ALL=(root) NOPASSWD: /bin/mv

Droits particuliers

suid, sgid, et stiky bit

Au droits “de base” précédents s'ajoutent des droits supplémentaires un peu particuliers:

  • le “suid” (ou “setuid”) qui concerne les programmes:
    • un programme lancé avec ce droit “suid” sera exécuté avec les droits du propriétaire du programme et non les droits de l'utilisateur qui l'a lancé (ex: /usr/bin/passwd ou /usr/bin/crontab).
  • le “sgid” (ou “setgid”) qui concerne les programmes et les répertoires:
    • un programme lancé avec ce droit “sgid” sera exécuté avec les droits du groupe du programme et non les droits du groupe de l'utilisateur qui l'a lancé (ex: /usr/bin/write ou /usr/bin/wall).
    • un fichier créé dans un répertoire ayant le droit sgid aura pour groupe le groupe du répertoire et pas celui de l'utilisateur qui a créé le fichier.

le “stiky bit” qui concerne surtout les répertoires:

  • dans un répertoire avec ce droit “stiky bit”, seuls les propriétaires des fichiers pourront les effacer (ex: /tmp ou /var/tmp).
    • appliqué à un fichier, il est demandé au noyau de le conserver le plus possible en mémoire (ram ou swap). A ma connaissance, ce n'est pas utilisé sur linux.

Les droits “suid” et “sgid” sont aussi appelés “droits d'endossement”.

Dans la présentation des droits en texte, ces droits particuliers seront représentés comme suit:

  • pour le suid: un “s” à la place du “x” du propriétaire comme dans “rwsr-xr-x”.
  • pour le sgid: un “s” à la place du “x” du groupe comme dans “rwxr-sr-x”.
  • pour le stiky bit: un “t” à la place du dernier “x” (celui du “reste du monde”) comme dans “drwxrwxrwt”.

NB: s'il n'y avait pas de droit d'exécution “x” avant d'appliquer ces droits, les lettres “s” et “t” seront mises en majuscule (“S” et “T”).

Espace disque

df -h

 

Fichier volumineux

Trouver les fichiers de plus de 100 Mo

find /home/www -type f -size +100M

 

Lister les 10 plus gros fichiers
 

find /home/www -type f -exec du -h {} + | sort -hr | head -n 10

 

Mise à jour

sury.org

met à  à jour la liste des fichiers disponibles dans les dépôts APT

sudo apt-get update

met à jour tous les paquets installés sur le système vers les dernières versions, sans ajouter de nouveaux paquets

sudo apt-get upgrade

met à jour tous les paquets installés vers les dernières versions en installant de nouveaux paquets si nécessaire

sudo apt-get dist-upgrade

Le fichier sources.list

sudo vim /etc/apt/sources.list

désinstaller les paquets indiqués avec leurs dépendances logicielles

sudo apt autoremove

 

Propriétaire

Modifier le propriétaire d'un fichier.

chown nouveau_propriétaire:nouveau_groupe mon_fichier
- R pour recursive - sous dossiers et fichiers

sudo chown -R patrick:www-data spot_elements

 

Recherche

Rechercher un fichier ou répertoire

find -name nom_du_fichier

find -iname nom_du_répertoire -type d
Options les plus fréquentes :
  • -name : Recherche d'un fichier par son nom
  • -iname : Même chose que -name mais insensible à la casse
  • -type : Recherche de fichier d'un certain type
  • -atime : Recherche par date de dernier accès
  • -mtime : Recherche par date de dernière modification
  • -link : Recherche du nombre de liens au fichier
  • -user : Recherche de fichiers appartenant à l'utilisateur donné
  • -group : Recherche de fichiers appartenant au groupe donné

Recherche une chaîne de caractères

cat /etc/passwd | grep -i "term"

ls dir | grep "term"

grep -rin {searc}

Recherche une chaîne de caractères dans des fichiers (ou depuis la console si aucun fichier n'est indiqué) ; souvent utilisé en filtre avec d'autres commandes.
Options les plus fréquentes :

  • -c : Retourne le nombre de lignes au lieu des lignes elles-mêmes
  • -n : Retourne les lignes préfixées par leur numéro
  • -i : Insensible à la casse
  • -r : Recherche récursivement dans tous les sous-répertoires ; on peut utiliser la commande rgrep
  • -G : Recherche en utilisant une expression rationnelle basique (option par défaut)
  • -E : Recherche en utilisant une expression rationnelle étendue ; on peut utiliser la commande egrep
  • -F : Recherche en utilisant une chaîne fixe ; on peut utiliser la commande fgrep
  • -v toto : Recherche les lignes qui ne contiennent pas le mot toto

Locate

Dans un terminal, locate permet de localiser immédiatement n'importe quel fichier ou répertoire présent sur votre système (y compris les fichiers cachés).

A la différence de la commande find, locate va vous donner le résultat de votre recherche immédiatement. find offre cependant beaucoup plus de possibilités

 installer mllocate

sudo apt-get install mlocate

indexer

sudo updatedb

rechercher

locate {nom du fichier}

Affiche le chemin complet d'une commande

which nom_de_la_commande

sql

exporter une base de donnée

mysqldump -u {utilisateur} -p{mot de passe} {base de donnée} {table} | gzip > {fichier de destination}

importer

mysql -h host -u user -ppass base_de_donnees < fichier_dump

ou à privilégier pour les gros fichiers

mysql -u {user] -p{pass}
USE {table_name}
source {nom_fichier.sql}

Voir les processus actif

show full processlist;

Tuer un processus

KILL <pid>;

 

ssh

connexion ssh

ssh <nom_utilisateur>@ -p
ssh <nom_utilisateur>@ -p -i

copier un fichier

scp -P {port} -i {~/.ssh/nom clé ssh} <nom_utilisateur>@{adresse serveur}:{cible} {destination}

jumper sur un raspberry

ssh -J root@srv6.2dcom.fr pi@localhost -p [numéro du port]

Ouvrir un tunnel ssh pour partager un site local

ssh -fNR 22222:localhost:8000 -p 2282 root@adliber.2dcom.fr -i ~/.ssh/id_ed25519

Le site ser accèsible à l'adresse : https://adliber.2dcom.fr:22222


https://linux.developpez.com/formation_debian/ssh.html

SSHFS

SSH Filesystem

SSHFS sert à monter sur son système de fichier, un autre système de fichier distant, à travers une connexion SSH, le tout avec des droits utilisateur. L'avantage est de manipuler les données distantes avec n'importe quel gestionnaire de fichier (GNOME Fichiers, Konqueror, ROX, ou même la ligne de commande), ce qui est bien plus pratique que la commande scp couplée avec SSH.

sshfs [user@]host:[dir] mountpoint [options]

// Pour démonter, vérifier que rien n'accède au point de montage (fichier ouvert ou gestionnaire de fichier), et effectuer la commande :

fusermount -u tmp

 

Pour monter un système de fichier en sshfs avec les droits root sans avoir la clé dans le compte root et en ayant les droits root via sudo :

ex: sur orwell

sshfs -o sftp_server="/usr/bin/sudo /usr/lib/openssh/sftp-server" web1.orwell.2dcom.fr:/ /mnt/web1.orwell/

 

Taille des repertoires

du -h --max-depth=1 /home/www/nom_du_répertoire| grep '[0-9]G\>' | sort -hr
 du -hs *

Afficher la taille d’un répertoire

Pour connaitre la taille d’un répertoire le plus simple est d’utiliser les options de la suivantes :
-s (pour summarize) qui permet de faire la somme de tous les fichiers et sous répertoires présents.
et
-h (pour human-readeable) qui permet d’afficher la taille dans un multiple plus lisible (Ko, Mo, Go, To, Po)

du -sh path/dir

 

Utiliser find et rm pour trouver et supprimer

Supprimer  les fichiers de plus de 30 jours

find . -mtime +30 -exec rm -rf {} \; 

 

  • -name : pour rechercher par nom de fichier
  • -type : pour rechercher par type de fichier
  • -user : pour rechercher par propriétaire
  • -group : pour rechercher par groupe
  • -size : pour rechercher par taille
  • -atime : pour rechercher par date de dernier accès
  • -mtime : pour rechercher par date de dernière modification
  • -ctime : pour rechercher par date de création
  • -perm : pour rechercher par permissions
  • -links : pour rechercher par nombre de liens au fichier

https://www.blackcreeper.com/linux/supprimer-des-fichiers-selon-leur-anciennete-sous-linux/