Liens
Astuces
Utiliser les fichiers SIG (signature)
|
# Vérification de la correspondance entre un fichier et sa signature
gpg --verify signature.sig
# BAD signature signifie que fichier ne correspond pas à sa signature
# gpg: Signature faite le ven. 31 août 2012 21:33:57 CEST avec la clé DSA ID 62D84F01
# gpg: Impossible de vérifier la signature: Pas de clé publique
# Il va falloir télécharger la clé publique dont l'ID a été donné
gpg --recv-keys 62D84F01
# Puis relancer la vérification
# Autre solution : pacman-key
pacman-key -v signature.sig
|
WARNING: This key is not certified with a trusted signature!
Use the Kernel.org web of trust. This will require that you first locate the members of kernel.org in your area and sign their keys. Short of meeting the actual owner of the PGP key in real life, this is your best option to verify the validity of a PGP key signature.
Connaitre le PID correspond à une application fenêtre
|
xprop _NET_WM_PID
# cliquer sur la fenêtre
# _NET_WM_PID(CARDINAL) = 666
# obtenir le nom de l'application lié au PID 666
ps -p 666
|
Convertir des fichiers WMA en OGG
Utilisez Oggenc
|
# installation
pacman -S vorbis-tools
# convertion du fichier pureson.wav en pureson.ogg
oggenc pureson.wav
|
|
7z x fichier.dmg
sudo mount -o loop fichier.hfs dossier
|
|
# Ajouter un chemin à PATH
PATH="${PATH}:/mon/chemin"
|
|
# charger un module
sudo modprobe mon_module
# décharger proprement un module : si aucun autre module n'a de dépendances vers lui
sudo modprobe -r mon_module
# ou décharger un module sans vérifier les dépendances
sudo rmmode mon_module
# liste les dépendances d'un module
modprobe --show-depends mon_module
# liste des modules chargés
lsmod
# information sur un module
modinfo mon_module
|
Blacklisting
/etc/modules-load.d/mon-module.conf
|
# Load mon-module.ko at boot
mon-module
|
|
sudo rmmod pcspkr
# Cinnamon seems to play a "water drop" sound. To disable it, set in dconf:
dconf write /org/cinnamon/desktop/wm/preferences/audible-bell false
|
/etc/modprobe.d/nobeep.conf
|
blacklist pcspkr
|
|
# liste les groupes auxquels appartient l'utilisateur courant
groups
# liste des groupes existants avec les utilisateurs
cat /etc/group
# liste les utilisateur d'un groupe
cat /etc/group | grep mon_groupe
# ajouter/supprimer un utilisateur d'un groupe
sudo gpasswd -a [user] [group]
sudo gpasswd -d [user] [group]
# ajouter/supprimer un groupe
sudo groupadd [group]
sudo groupdel [group]
# changer l'id d'un groupe pour 9999
groupmod -g 9999 mon_groupe
# changer le groupe principal d'un utilisateur
usermod -g [group] [user]
|
|
Si l'utilisateur ciblé par les modifications est actuellement loggué, il devra se délogguer puis se relogguer avant que les modifications ne prennent effet. |
|
# Ajouter un utilisateur, méthode interactive
adduser
# méthode explicite
useradd -m -g [Group] -s /bin/zsh [User]
# -m: créé un dossier home, par défaut ce n'est pas le cas
# -g: set the group, by default a group with the same name as the user name is created
# -G: add the new user to these groups
# -s: set the shell, by default /bin/bash (must be one of the shell listed in /etc/shells)
# -s /bin/false → tous les accès au système sont désactivés
# -s /usr/bin/nologin → pas de connexion direct au système ni via su et ssh (/bin/nologin, /sbin/nologin, /usr/sbin/nologin)
# create a daemon user
useradd -r -s /usr/bin/nologin -N -g nobody [User]
# -r: system user, system user id (<1000) and the home folder is not created
# -N: do not create a group with the same name as the user, but add the user to the group specified by the -g option or by the GROUP variable in /etc/default/useradd
# Supprimer un utilisateur, -r pour supprimer le répertoire de l'utilisateur
userdel -r [USERNAME]
# Lister les utilisateurs
cat /etc/passwd
# user info (uid, gid, groups)
id [USERNAME]
# changer le mot de passe d'un utilisateur
passwd [USERNAME]
# changer l'id d'un utilisateur pour 9999
usermod -u 9999 [USERNAME]
# changer le shell d'un utilisateur
chsh --shell /bin/bash [USERNAME]
cat /etc/shells # liste des shells disponibles
grep [USERNAME] /etc/passwd # afficher le shell de l'utilisateur
# créer un dossier home pour un utilisateur qui n'en a pas
mkdir /home/[USERNAME]
cd /home/[USERNAME]
cp -r /etc/skel/. .
chown -R [USERNAME]:[USERNAME] .
chmod -R go=u,go-w .
chmod go= .
usermod -d /home/[USERNAME] [USERNAME]
|
- user name
- encrypted password
- s'il commence par $6$ : encrypté avec SHA-512
- s'il commence par $1$ : encrypté avec MD5
- sinon : encrypté avec DES
- * the account is deactivated and locked
- ! x the login is deactivated, user will be unable to login
- !! the password has expired
- nombre de jours entre la dernière date de changement du mot de passe et le 1er Jan. 1970
- nombre de jours restant avant que l'utilisateur puisse modifier son mot de passe
- nombre de jours de validité du mot de passe (après que l'utilisateur fut forcé de le changer)
- nombre de jours avant l'expiration du mot de passe pour l'envoie d'un avertissement à l'utilisateur pour qu'il le change
- The number of days after password expires that account is disabled
- Days since Jan 1, 1970 that account is disabled i.e. an absolute date specifying when the login may no longer be used
|
# générer le hash à partir du mot de passe et du salage
# $6$kxB2aa2K$CbY3pMBrBhskEa/WYCzeyGotlT9OBnt76blE4xbW8Nj/VhydWRxNLz26gE7W4bLUiRoKmTqWTHSlo2OPaBeP30
# $6 → encrypté avec SHA-512
# salt → kxB2aa2K
# hash → CbY3pMBrBhskEa/WYCzeyGotlT9OBnt76blE4xbW8Nj/VhydWRxNLz26gE7W4bLUiRoKmTqWTHSlo2OPaBeP30
# mot de passe → test
# salt → kxB2aa2K
python3 -c 'import crypt; print(crypt.crypt("test", "$6$kxB2aa2K"))'
# $6$kxB2aa2K$CbY3pMBrBhskEa/WYCzeyGotlT9OBnt76blE4xbW8Nj/VhydWRxNLz26gE7W4bLUiRoKmTqWTHSlo2OPaBeP30
|
Boot message
/etc/systemd/system/getty.target.wants/getty@tty1.service
|
# change yes pour no
TTYVTDisallocate=no
|
Disable Clearing of Boot Messages
Ancienne méthode
/etc/inittab
|
# Ajouter --noclear au terminal 1
c1:2345:respawn:/sbin/agetty --noclear -8 38400 tty1 linux
c2:2345:respawn:/sbin/agetty -8 38400 tty2 linux
|
Boot time
|
systemd-analyze critical-chain
|
NTFS
Le support NTFS n'est pas installé par défaut, ce qui a pour effet de monter en lecture seul les disques NTFS.
|
sudo pacman -S ntfs-3g
|
Type de système de fichier utilisé
|
df -Th
|
Fonts - Polices
|
# lister les familles de fonts
fc-list : family | sort -f
# tester si un font est disponible, et retourne le font de remplacement
fc-match "Mon Font"
|
Le logiciel gnome-font-viewer permet de visualiser les rendus des différents fonts installés.
Installation d'un nouveau font
Copiez le fichier dans un sous-dossier de /usr/share/fonts, ou dans ~/.local/share/fonts ou ~/.fonts
D'autres fonts sont présents dans /usr/share/ghostscript/9.06/Resource/Font
|
# update the fontconfig font cache
fc-cache -vf
|
|
Les fonts de Windows se trouvent dans C:\Windows\Fonts |
|
Redémarrer writer pour que la nouvelle police soit disponible.) |
Xorg
|
# liste les chemins dans lesquels Xorg va chercher les fonts
grep /fonts /var/log/Xorg.0.log
# ou
xset q
|
A la différence de Fontconfig, Xorg ne cherche pas les fonts récursivement dans le dossier « /usr/share/fonts ».
Il faut donc ajouter les chemins dans un fichier de configuration de Xorg :
/etc/X11/xorg.conf.d/99-fonts.conf
|
Section "Files"
FontPath "/usr/share/fonts/artwiz-fonts/"
FontPath "/usr/share/fonts/cantarell/"
FontPath "/usr/share/fonts/cyrillic/"
FontPath "/usr/share/fonts/encodings/"
FontPath "/usr/share/fonts/speedo/"
FontPath "/usr/share/fonts/util/"
EndSection
|
Mes préférences
Code |
Cascadia Code, Source Code Pro, Inconsolata-g, monofur, Ubuntu Mono, DejaVu Sans Mono
|
Texte |
Mint Spirit No2, Cantarell, DejaVu Serif, Droid Serif, Liberation Serif
|
Symboles |
DejaVu Sans, Dingbats, FreeSerif, OpenSymbol, Font Awesome M$ : Webdings, Wingdings
|
|
pacman -S ttf-inconsolata ttf-dejavu ttf-ubuntu-font-family
yay ttf-monofur ttf-mintysis
|
Remaper les chemins vers les dossiers Musique, Images, Vidéos
|
# installer xdg-user-dirs-gtk
sudo pacman -S xdg-user-dirs-gtk
# créer le fichier ~/.config/user-dirs.dirs
xdg-user-dirs-update
# appliquer les modifications du fichier user-dirs.dirs
xdg-user-dirs-update && xdg-user-dirs-gtk-update
|
~/.config/user-dirs.dirs
|
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Data/Téléchargements"
XDG_TEMPLATES_DIR="$HOME/Modèles"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Data/Musique"
XDG_PICTURES_DIR="$HOME/Data/Images"
XDG_VIDEOS_DIR="$HOME/Data/Vidéos"
|
Types MIME
Shared MIME-info Database
Gnome : Shared MIME-info Database
Bases de données :
- $XDG_DATA_DIRS : /usr/share , /usr/local/share
- $XDG_DATA_HOME : ~/.local/share
/etc/mime.types ou ~/.mime.types
Créez un nouveau type MIME
~/.local/share/mime/packages/nouveau_type.xml
|
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/maff">
<comment>Mozilla Archive Format File</comment>
<acronym>MAFF</acronym>
<expanded-acronym>Mozilla Archive Format File</expanded-acronym>
<sub-class-of type="application/zip"/>
<generic-icon name="application-x-maff"/>
<glob pattern="*.maff"/>
</mime-type>
</mime-info>
|
|
# puis mettre à jour la base de données locale des types MIME
sudo update-mime-database ~/.local/share/mime
|
Changing filetype association via MIME
- mime-type type: type de média -x- sous-type
- type de média : text, application, audio, image, video, message,model
- icon name: /usr/share/icons/Theme/scalable/mimetypes
Association type MIME - icône
Dans le cas de l'ajout d'une nouvelle icône : mettre à jour le cache des icônes
|
sudo gtk-update-icon-cache /usr/share/icons/Mon_Theme
|
Locale
~/.local/share/mime/packages/Override.xml
|
<?xml version="1.0"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-xxx">
<generic-icon name="text-plain"/>
</mime-type>
</mime-info>
|
|
# puis mettre à jour la base de données locale des types MIME
update-mime-database ~/.local/share/mime
|
Autre méthode (ne marche pas!):
|
xdg-icon-resource install --context mimetypes --mode user --size 24 /usr/share/icons/GartoonRedux/24x24/mimetypes/text-plain.png text/plain
|
Système
Éditez le fichier XML correspondant au type MIME dans /usr/share/mime/packages:
|
Le fichier freedesktop.org.xml contient les types mime de base. |
/usr/share/mime/packages/virtualbox.xml
|
<mime-type type="application/x-virtualbox-vbox">
<icon name="virtualbox-vbox"/>
</mime-type>
|
Ou pour éviter que les modifications ne soit écrasées par une prochaine mise à jour, éditez le fichier Override.xml:
/usr/share/mime/packages/Override.xml
|
<?xml version="1.0"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-virtualbox-vbox">
<icon name="virtualbox-vbox"/>
</mime-type>
</mime-info>
|
|
# puis mettre à jour la base de données des types MIME
sudo update-mime-database /usr/share/mime
|
mime-editor
Permet l'ajout et suppression de types MIME au travers du fichier $XDG_DATA_HOME/mime/packages/Override.xml
~/.local/share/mime/packages/Override.xml
|
<?xml version="1.0"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-xxx">
<glob pattern="*.xxx" />
<comment>xxx file</comment>
</mime-type>
</mime-info>
|
Enregistrez une nouvelle icône
|
xdg-icon-resource install --context mimetypes --size 32 /chemin/image.png
|
Mettre à jour les icônes d'un thème
Utile lorsqu'une icône d'un des thèmes système (/usr/share/icons) est modifiée.
Inutile avec les icônes des thèmes utilisateur (~/icons)
|
sudo gtk-update-icon-cache /usr/share/icons/theme_d_icône
|
Ils se trouvent dans /usr/share/applications et ~/.local/share/applications
|
Les fichiers dans ~/.local/share/applications ont la priorité sur ceux de /usr/share/applications |
exemple.desktop
|
[Desktop Entry]
Name=Urban Terror
Comment=Launch in a new X server
Type=Application
Categories=Game;
Terminal=false
Exec=/home/nicolas/Scripts/Xorg/ut.sh
Icon=urbanterror
|
|
La valeur de Exec doit être exécutable sinon l’icône ne s'affiche pas |
|
Pour les applications PlayOnLinux utilisez la syntaxe suivante:
Exec=/usr/share/playonlinux/playonlinux --run "mon programme" |
|
Pour permettre au navigateur de fichiers d'afficher l’icône et le Name du fichier desktop, il faut rendre celui-ci exécutable. |
Catégories
- Accessoires : Utility
- Bureautique : Office
- Graphisme : Graphics
- Internet : Network
- Jeux : Game
- Outils système : System
- Programmation : Programming
- Son et vidéo : AudioVideo
- Autre : Other
Type
- Application
- Link
- Directory
Application par défaut
Default Applications
~/.local/share/applications/mimeapps.list
|
[Added Associations]
application/xml=geany.desktop;
[Default Applications]
[Removed Associations]
|
Configuration avec Nautilus
Passez la paramètre resume=SWAP_PARTITION au noyau :
/etc/default/grub
|
GRUB_CMDLINE_LINUX="resume=/dev/sda5"
|
|
# Re-générez le fichier de configuration
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
Ajoutez le hook resume après block (et lvm2) et avant filesystems :
/etc/mkinitcpio.conf
|
HOOKS="base udev autodetect modconf block resume filesystems usbinput fsck"
|
|
# recontruisez l'image initrd
sudo mkinitcpio -p linux
|
|
# lancez l'hibernation avec upower
dbus-send --system --print-reply --dest="org.freedesktop.UPower" \
/org/freedesktop/UPower org.freedesktop.UPower.Hibernate
|
|
# vérifier le journal
journalctl -b
# ehci-pci 0000:00:1d.0: System wakeup enabled by ACPI
# ehci-pci 0000:00:1a.0: System wakeup enabled by ACPI
# xhci_hcd 0000:00:14.0: System wakeup enabled by ACPI
# recouper les identifiants avec lspci
lspci
# 00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
# 00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
# 00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
# vérifier quels matériels ont le droit de réveiller le système
cat /proc/acpi/wakeup
# EHC1 S4 *enabled pci:0000:00:1d.0
# EHC2 S4 *enabled pci:0000:00:1a.0
# XHC S4 *enabled pci:0000:00:14.0
# changer les droits d'un matériel jusqu'au prochain redémarrage
sudo sh -c "echo XHC > /proc/acpi/wakeup"
|
/etc/systemd/system/disable-usb-wakeup.service
|
[Unit]
Description=Disable acpi wakeup triggers in /proc/acpi/wakeup
[Service]
ExecStart=/usr/lib/systemd/scripts/disable_acpi_wakeup.sh
[Install]
WantedBy=multi-user.target
|
/usr/lib/systemd/scripts/disable_acpi_wakeup.sh
|
#!/usr/bin/bash
DEVICES="EHC2 XHC PWRB"
for DEVICE in ${DEVICES}; do
DEVICE_ENABLED=$(grep enabled /proc/acpi/wakeup | cut -f 1 | grep ${DEVICE})
if [ -n "${DEVICE_ENABLED}" ]; then
echo ${DEVICE} > /proc/acpi/wakeup
fi
done
|
DVD
Erreur : libdvdread: Encrypted DVD support unavailable.
La plupart des DVD sont encryptés avec CSS. Pour les lire il faut installer le paquet "libdvdcss".
Compilez et installez depuis du code source
|
# création du fichier Makefile
./configure --prefix=/usr --sysconfdir=/etc
# créé un fichier config.log
# appel de la section prepare du fichier Makefile
make
# appel de la section install du fichier Makefile
sudo make install
|
Arguments de configure
prefix
Par défault à /usr/local.
Makefile
|
PREFIX = /usr/local
|
sysconfdir
Par défault à PREFIX/etc.
Désinstallation
|
make uninstall
|
Si make uninstall n'existe pas
- script uninstall
- make -n install liste tous les fichiers installés
Problème avec Python
ArchLinux utilise par défaut python3, alors que le script de configuration peut s'attendre à python2.
checking for python... /usr/bin/python
checking for pygtk... no
configure: error: couldn't find pygtk
Pour corriger ce problème, éditez le fichier configuration et remplacer python par python2
Il sera nécessaire de faire de même avec le fichier Makefile
config.status: error: cannot find input file: `Makefile.in' ou `config.h.in'
|
aclocal
autoconf
autoheader
automake --add-missing
|
Makefile: *** séparateur manquant
Vérifiez que les lignes commencent par une tabulation et non des espaces.
Compilation multi-threads
/etc/makepkg.conf
|
# pour un processeur double coeurs
MAKEFLAGS="-j2"
|
|
# pour connaître le nombre de processeurs disponibles
nproc
|
Erreur de syntaxe : fin de fichier prématurée
|
@if [ -n $(VARIABLE) ]; \
then \
commande;\
commande;\
else\
commande;\
fi
|
Fichiers Patch
|
# création d'un fichier patch ou diff
diff -u fichier_originel fichier_modifié > modifications.patch
# application d'un patch
patch -p0 < modifications.patch
|
Python2
doc
|
# Installation
sudo pacman -S python2
# Pour forcer l'utilisation de python2, modifier la première ligne du script
#!/usr/bin/env python
# devient
#!/usr/bin/env python2
|
Auto-completion avec bash
|
# auto-complétion améliorée
sudo pacman -S bash-completion
|
~/.bashrc
|
# auto-completion après man
complete -cf man
|
Auto-completion
MAN en couleur
Afficher les pages de manuel en couleur grace à MOST.
|
# Installation
sudo pacman -S most
# Editer le fichier .bashrc
export PAGER=most
|
Informations matériel
|
# Cartes PCI : carte graphique, ...
lspci
lshw
# fréquence du cpu
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
sudo cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
|
|
# installation
pacman -S bluez bluez-utils
# démarrer le service bluetooth
sudo systemctl start bluetooth
# dongle
sudo hciconfig hci0 up
hcitool dev # tester que le dongle a bien été détecté
# configuration
bluetoothctl
power on
agent on
default-agent
scan on
pair xx:xx:xx:xx:xx:xx
connect xx:xx:xx:xx:xx:xx
# autres commandes
devices # liste des devices qui ont été précédemment associé
|
Variable d'environnement
*.desktop
|
# Utilisez env pour modifier une variable d'environnement
Exec=env GTK2_RC_FILES=/usr/share/themes/Clearlooks/gtk-2.0/gtkrc /usr/bin/netbeans
|
Lecteur d'empreintes
Utiliser le lecteur d'empreintes pour se connecter au système pause problème avec Gnome Keyring car celui-ci utilise le mot de passe de l'utilisateur pour encrypter les certificats, clés et autres mots de passe. Et comme aucun mot de passe n'a été entré, tous sera stocké en clair
Fprint
pam_fprint
Fingerprint-gui
Connaitre le modèle du lecteur d'empreintes
|
lsusb
# Bus 004 Device 002: ID 147e:2016 Upek Biometric Touchchip/Touchstrip Fingerprint Sensor
|
Installation
|
sudo pacman -S pam fprint
|
Tests
|
# enregistrer une empreinte
fprintd-enroll
# lister les empreintes enregistrées d'un utilisateur
fprintd-list utilisateur
# tester la reconnaissance d'empreintes
fprintd-verify
|
Configurer PAM
/etc/pam.d/gdm
|
# ajouter ces lignes au debut du fichier (en dessous de #%PAM-1.0)
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth required pam_deny.so
|
Erreurs
/usr/lib/libharfbuzz.so.0: undefined symbol: FT_Done_MM_Var
La version de libfreetype n'est pas compatible avec harfbuzz.
Supprimer les fichiers libfreetype.so et libfreetype.so.6 fournit avec l'application afin d'utiliser ceux du système.
There is not enough room on the disk to save /tmp/...
Il n'y a plus d'espace libre sur /tmp, il faut supprimer des éléments.
|
# vérifier que /tmp est plein
df -h /tmp
# localiser les éléments qui prennent de la place
baobab /tmp
|
Impossible de trouver le moteur de thème dans module_path : « murrine »
Le moteur gtk murrine n'est pas installé
|
# installer le moteur gtk murrine
pacman -S gtk-engine-murrine
|
Error binding socket;
addr='AF_UNIX(/run/systemd/journal/syslog)', error='No such file or directory (2)'
/etc/syslog-ng/syslog-ng.conf
|
# remplacer unix-dgram("/run/systemd/journal/syslog"); par
unix-dgram("/dev/log");
|