WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod photo 2

WordPress : accorder les bonnes permissions aux fichiers et dossiers avec chown et chmod

Il est primordial d’accorder les bonnes permissions aux fichiers et dossiers d’un site sur un serveur web. Si ces permissions sont trop permissives, l’administrateur du site s’expose à la compromission du site, voire du serveur.

Sous WordPress, c’est la même chose : les fichiers et dossiers du site doivent avoir les bonnes permissions.

Le problème : des permissions trop larges

chmod-007-permis-executer-300

Sur le site, j’ai eu pendant trop longtemps un problème avec les fichiers et répertoires de thèmes ou de plugins.

Je m’explique : à chaque fois qu’un plugin voulait créer des fichiers (dans un répertoire /cache par exemple), la seule solution était de mettre les permissions de ce répertoire à 777, le mal absolu puisque cela permet au monde entier de lire, écrire et exécuter des fichiers dans ce dossier.

Pour les fichiers de thèmes éditables par WordPress, il fallait que leurs permissions soient à 666, ce qui là aussi posait un gros souci de sécurité.

Voici donc un tuto pour apprendre comment mettre les bonnes permissions à vos fichiers et dossiers pour votre site, qu’il tourne sous WordPress ou non.

Étape 1 : définir le bon propriétaire et groupe pour les fichiers

Les fichiers du site doivent appartenir au propriétaire et au groupe qui les fait tourner.

En règle générale; les serveurs de fichiers (comme Apache ou NginX) ont comme propriétaire www-data et comme groupe groupe www-data.

Dans mon cas, ayant installé les fichiers via SSH, les fichiers étaient détenus par l’utilisateur root. Je crée donc un nouvel utilisateur pour mon site:

adduser caddy www-data

Je vais donc assigner à l’utilisateur caddyet au groupe www-data la permission d’être propriétaire de mes fichiers, avec la commande chown.

Pensez à changer caddypour le nom de votre utilisateur web ou FTP.

Lire la suite

thunar-bulk-renamer

Linux : renommer des fichier en masse avec Thunar Bulk Renamer

Il peut être très utile d’avoir sous la main un petit utilitaire qui permet de renommer des fichiers en masse facilement.

Sous Linux, j’utilise l’outil Thunar Bulk Renamer (Thunar Renommer en masse en français) qui ressemble à ceci :

thunar-bulk-renamer

Thunar Renommer en masse

Thunar est un gestionnaire de fichiers puissant pour XFCE, dont les fonctions peuvent être étendues à l’aide de plugins.

Renommer en masse est un plugin qui permet de renommer toute une liste de fichiers très facilement, avec une interface simple et intuitive. Il permet de :

  • insérer et remplacer des noms de fichiers
  • insérer diverses manières de numéroter
  • rechercher, remplacer, supprimer des caractères
  • changer la casse

Installation de Thunar

Pour installer Thunar, il suffit de lancer :

sudo apt-get install thunarCode language: JavaScript (javascript)

Le raccourci vers l’application Thunar Bulk Renamer se trouve dans Applications > Outils Système > Renommer en masse.

Si le raccourci n’est pas créé, il suffit d’ajouter un nouveau raccourci sur le tableau de bord comme ceci :

1. clic droit sur le tableau de bord > ajouter au tableau de bord > lanceur d’application personnalisé

thunar-bulk-renamer-lanceur

2. entrez la commande suivante :

thunar --bulk-rename

3. choisissez une icône (engrampa.svg m’a semblée adéquate!) et validez.

Thunar Renommer en masse supporte aussi les expressions régulières (regex), c’est un vrai plaisir à utiliser (voir copie d’écran). Un vrai gain de temps également.

Et vous, qu’est-ce que vous utilisez pour renommer vos fichiers ?

Le logo VirtualBox d'Oracle, représentant un cube 3D avec les lettres VM, signifie ses capacités en tant que logiciel de virtualisation permettant aux utilisateurs d'exécuter plusieurs systèmes d'exploitation sur un seul ordinateur, y compris Linux.

Linux : installer VirtualBox via le PPA d’Oracle

J’ai toujours eu un peu de mal avec l’installation et la mise à jour de VirtualBox sous Linux. Il ne faut pas l’installer via les dépôts Ubuntu car ceux-ci deviennent vite obsolètes et ne seront proposées que les mises à jour de sécurité.

Il vaut donc mieux installer VirtualBox directement depuis Oracle, en installant d’abord le noyau linux, les entêtes du noyau et dkms pour éviter toutes les erreurs récurrentes au démarrage de l’application.

Voici ce que j’utilise désormais : tout est automatisé et ne prend que quelques secondes.

Etape 1 : installation des paquets pré-requis

On installe dkms et le noyau linux pour résoudre tous problèmes de dépendances ultérieurs :

sudo apt-get install build-essential dkms linux-source linux-headers-`uname -r`Code language: JavaScript (javascript)

Cela évite, entre autres, de tomber sur cette erreur lors du lancement d’une machine virtuelle :

Kernel driver not installed The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing
‘/etc/init.d/vboxdrv setup’
as root.

Etape 2 : installation de VirtualBox avec le PPA d’Oracle

Installation de VirtualBox en une seule commande :

echo "deb http://download.virtualbox.org/virtualbox/debian `lsb_release -sc` contrib" | sudo tee -a /etc/apt/sources.list.d/virtualbox.list && wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add - && sudo apt-get update && sudo apt-get install virtualbox-4.3Code language: PHP (php)

Avec cette commande, on télécharge la clé Oracle pour VirtualBox, on installe le dépôt de VirtualBox en fonction de notre version de Linux, on rafraichit la liste des paquets et on installe la dernière version de VirtualBox.

Lire la suite

Ubuntu : graver un disque blu-ray avec K3B photo 1

Ubuntu : graver un disque blu-ray avec K3B

Je viens de faire l’acquisition d’un graveur Blu-Ray, histoire de ne pas passer mon temps à découper le contenu de mes répertoires en dossiers de 4.38 Go. J’ai opté pour un graveur externe USB, de chez Samsung.

samsung-se506bb

Premiers essais

Déballage, branchement, insertion d’un blu-ray vierge : 30 secondes. Lancement d’une gravure de 45 Go : plantage de la gravure. Second essai en créant une image disque avant : plantage de la gravure. Troisième essai, je baisse la vitesse de gravure à 2x – plantage.

Installation de cdrtools

Brasero et K3B ne peuvent pas graver de blu-rays par défaut. Il faut leur ajouter cdrtools :

sudo add-apt-repository ppa:brandonsnider/cdrtools 

On met à jour les dépôts :

sudo apt-get update && sudo apt-get upgradeCode language: JavaScript (javascript)

et on installe les paquets cdrecord et mkisofs :

sudo apt-get install cdrecord mkisofsCode language: JavaScript (javascript)

L’installation de cdrecord et mkisofs va supprimer deux paquets existants (genisoimage et wodim) et nous permettre de graver des BD sans erreurs.

Lire la suite

403-error

Des images qui renvoient une erreur 403

Aujourd’hui, j’édite un ancien article et le prévisualise pour voir les changements : je m’aperçois alors que l’image de l’article ne s’affiche plus.

Ni une ni deux, je sors mon terminal et tente de récupérer l’image avec wget. Erreur 403. Je vérifie la configuration Apache et Varnish, rien à signaler (et surtout rien n’avait été modifié).

Je vérifie alors le fichier via FTP : il se trouve qu’il ne possédait pas les bons droits!

Evidemment, avec un chmod 600, cela ne risque pas de s’afficher… Les autres images, celles qui s’affichaient bien et renvoyaient un code 200, étaient bien chmodées en 644.

Solution : CHMOD

Il faut donc chmoder l’ensemble des fichiers du répertoires, 640 pour les images ce sera parfait :

find /home/public_html/wp-content/uploads -type f -exec chmod 640 {} \;

et pour les répertoires, 750 c’est correct :

find /home/public_html/wp-content/uploads -type d -exec chmod 750 {} \;

Notez la différence de syntaxe : on utilise f pour les fichiers (files) et d pour les répertoires (directory).

Linux Mint : installer une imprimante HP WiFi photo

Linux Mint : installer une imprimante HP WiFi

Cela fait des mois que j’ai laissé tomber l’installation de l’imprimante HP en WiFi chez mes parents sur mon portable qui tourne sous Linux Mint Debian Edition. La cause ? L’installation qui plante à chaque fois sans le moindre message d’erreur.

Dernièrement, j’ai eu l’occasion de recevoir mon pote Nico dans mon nouveau chez moi. Il voulait changer de distribution linux et je lui avais conseillé Linux Mint (“tu verras, c’est joli ! tout en aluminium brossé !”). Il l’a donc installé et est lui aussi tombé sur l’os de l’installation du driver HP.

Voici donc les étapes que j’ai suivies pour configurer cette imprimante sur ma LMDE.

Etape 1 : lancer hp-setup en tant que root

Il suffit de lancer l’utilitaire hp-setup dans un terminal en mode graphique et en root :

gksu hp-setup

Voici le premier écran :

hp-setup-device-discovery

On se connecte à l’imprimante en WiFi donc on sélectionne l’option Network/Ethernet/Wireless network.

Ensuite, dans les options avancées, il faut utiliser la méthode de découverte du réseau pour mDNS/Bonjour.

Lire la suite

Linux : résoudre l'erreur "failed to execute /lib/udev/socket:@/org/freedesktop/hal/udev_event" photo

Linux : résoudre l’erreur “failed to execute /lib/udev/socket:@/org/freedesktop/hal/udev_event”

linux-logo

Après une mise à jour de votre installation Linux, et après avoir rédémarré votre machine, il est possible que vous obteniez des dizaines de messages d’erreur au moment du boot du système.

Le problème : des messages venant de Hal

Concrètement, dans demsg, on obtient toute une série de messages comme ceux-ci :

 [   12.543288] udevd[2958]: failed to execute '/lib/udev/socket:@/org/freedesktop/hal/udev_event' 'socket:@/org/freedesktop/hal/udev_event': No such file or directory
[   12.548789] udevd[2962]: failed to execute '/lib/udev/socket:@/org/freedesktop/hal/udev_event' 'socket:@/org/freedesktop/hal/udev_event': No such file or directoryCode language: JavaScript (javascript)

Solution : désinstaller hal

Et bien sachez qu’il suffit de désinstaller Hal avec :

sudo apt-get remove halCode language: JavaScript (javascript)

hal était une bibliothèque permettant l’accélération matérielle sous les systèmes GNU/linux et qui servait aux applications à découvrir et utiliser les composants de la machine.

Depuis le kernel 2.65, cette fonctionnalité a été fusionnée avec udev qui gère maintenant tout cela.

Linux : résoudre l'erreur "failed to execute /lib/udev/socket:@/org/freedesktop/hal/udev_event" photo

Linux : résoudre l’erreur “cannot open pixbuf loader module file”

linux-logo

Aujourd’hui, je ressors mon ordinateur portable sur lequel se trouve mon installation Linux Mint.

Problème : une erreur récurrente dans le terminal de mise à jour

Un nouveau pack de mise à jour est disponible donc je lance l’installation des nouveaux paquets de ma Linux Mint Debian Edition. Au cours de la mise à jour, j’obtiens l’erreur suivante :

(gtk-update-icon-cache-3.0:12015): GdkPixbuf-WARNING **: Cannot open pixbuf loader module file '/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache': No such file or directory

This likely means that your installation is broken.
Try running the command
  gdk-pixbuf-query-loaders > /usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache
to make things work again for the time being.Code language: JavaScript (javascript)

L’erreur est récurrente dans le terminal d’installation et il n’y a plus moyen d’ouvrir d’images : on obtient une erreur comme quoi le format n’est pas reconnu.

Solution : recréer le cache pixbuf

La solution, partiellement donné dans le message, consiste à lancer cette commande avec le chemin complet dans un terminal :

/usr/lib/i386-linux-gnu/gdk-pixbuf-query-loaders /usr/lib/i386-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders.cache

Ce bug a déjà été mentionné sur le gug tracker de Debian : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=640150

Cela aide aussi de terminer l’installation et de lancer un petit :

apt-get update && apt-get upgrade && apt-get autocleanCode language: JavaScript (javascript)

Hop, résolu.

Linux Mint : mettre à jour le noyau linux avec le kernel liquorix photo

Linux Mint : changer la cible des dossiers par défaut

Linux Mint Debian Edition

Par défaut, Linux Mint crée des répertoires par défaut tels que /Bureau, /Téléchargements

Or, il arrive qu’on ait besoin de changer la cible de ces répertoires pour pointer vers un dossier qui se trouve sur une autre partition ou sur un lecteur réseau.

Pour changer la cible de ces répertoires par défaut, il suffit d’éditer le fichier user-dirs.dirs qui se trouve dans le répertoire caché /.config de l’utilisateur :

nano $HOME/.config/user-dirs.dirsCode language: PHP (php)

Voici le contenu du fichier :

# This file is written by xdg-user-dirs-update
# If you want to change or add directories, just edit the line you're
# interested in. All local changes will be retained on the next run
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported.
# 
XDG_DESKTOP_DIR="$HOME/Bureau"
XDG_DOWNLOAD_DIR="$HOME/Téléchargements"
XDG_TEMPLATES_DIR="$HOME/Modèles"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Musique"
XDG_PICTURES_DIR="$HOME/Images"
XDG_VIDEOS_DIR="$HOME/Vidéos"Code language: PHP (php)

Il suffit d’éditer le chemin des raccourcis existants ou d’en ajouter des nouveaux.

Bash : réparer les tables MySQL en cas de crash photo

BASH : renommer une liste de fichiers en ajoutant un suffixe aléatoire

Bash

J’ai récemment eu à renommer toute une floppée de fichiers PDF avec un suffixe aléatoire. BASH peut très bien faire l’affaire!

Ajouter un suffixe aléatoire à une liste de fichiers :

for f in *.pdf; do cp "$f" "${f%.*}-$RANDOM$RANDOM.${f##*.}"; doneCode language: JavaScript (javascript)

Vite fait, bien fait.

Webm, MPEG4, mp4, banner

Linux: convertir une video MPEG4 (mp4) au format Webm

Aujourd’hui, si veut publier une vidéo sur Internet qui soit lisible sur quasiment toutes les plateformes nativement, il peut être très intéressant d’utiliser le format WebM (proposé pour HTML5).

WebM est un format multimédia ouvert basé sur un conteneur dérivé de Matroska, qui regroupe des flux vidéos encodés en VP8 et des flux audios encodés en Vorbis1. Ce format fait partie des formats vidéos proposés pour la balise video de HTML5.

Après avoir encodé nos vidéos H.264 (MP4) avec qt-faststart pour la lecture progressive, nous allons désormais proposer deux formats de vidéo lorsque nous intégrerons nos propres vidéos : le MP4 (format propriétaire) et le WebM (format libéré) pour un accès universel sur toutes les plateformes.

Encoder une seule vidéo MP4 en WebM

Il suffit d’utiliser avconv comme ceci :

avconv -i example.mp4 example.webmCode language: CSS (css)

ce qui nous donne comme résultat :

avconv version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Apr  2 2013 17:02:36 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'example.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2013-09-24 10:52:45
  Duration: 00:43:27.39, start: 0.000000, bitrate: 294 kb/s
    Stream #0.0(eng): Video: h264 (Main), yuv420p, 320x240, 217 kb/s, 14.97 fps, 14.97 tbr, 2500 tbn, 5k tbc
    Metadata:
      creation_time   : 2013-09-24 11:23:01
    Stream #0.1(eng): Audio: aac, 32000 Hz, stereo, s16, 73 kb/s
    Metadata:
      creation_time   : 2013-09-24 11:23:01
[buffer @ 0x183ec80] w:320 h:240 pixfmt:yuv420p
[libvpx @ 0x183a4c0] v1.0.0
Output #0, webm, to 'example.webm':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2013-09-24 10:52:45
    encoder         : Lavf53.21.1
    Stream #0.0(eng): Video: libvpx, yuv420p, 320x240, q=-1--1, 200 kb/s, 1k tbn, 14.97 tbc
    Metadata:
      creation_time   : 2013-09-24 11:23:01
    Stream #0.1(eng): Audio: libvorbis, 32000 Hz, stereo, s16
    Metadata:
      creation_time   : 2013-09-24 11:23:01
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libvpx)
  Stream #0:1 -> #0:1 (aac -> libvorbis)
Press ctrl-c to stop encoding
frame=39032 fps= 39 q=0.0 Lsize=   86385kB time=2607.34 bitrate= 271.4kbits/s    
video:63500kB audio:21841kB global headers:4kB muxing overhead 1.217530%Code language: PHP (php)

Cela prend un peu de temps suivant la taille du fichier mais c’est assez simple.

Encoder toutes les vidéos d’un dossier en Webm

Allez, plus efficace : voyons maintenant comment nous pouvons traiter tout un lot de fichiers. Nous allons encoder tous les fichiers MP4 d’un dossier pour faire des fichiers WebM.

Tout d’abord, on exporte la liste des fichiers à traiter dans un fichier nommé list :

ls -1 *.mp4 | sed -e 's:\.[^./]*$::' > listCode language: PHP (php)

La commande sed nous permet ici de récupérer la liste des fichiers tout en omettant l’extension des fichiers.

Ensuite, on lance une boucle qui convertit chaque fichier au format WebM :

for i in `cat list`; do avconv -i "$i".mp4 "$i".webm ; doneCode language: JavaScript (javascript)

Et voilà! Simple et efficace.

BIND9 : supprimer le message "success resolving after reducing the advertised EDNS UDP packet size to 512 octets" des logs photo

BIND9 : supprimer le message “success resolving after reducing the advertised EDNS UDP packet size to 512 octets” des logs

Encore un autre message de mes fichiers logs, trouvé dans /var/log/daemon.log:

named: success resolving DOMAIN after reducing the advertised EDNS UDP packet size to 512 octets
named: success resolving DOMAIN after disabling EDNSCode language: HTTP (http)

BIND envoie des requêtes EDNS, meme si DNSSEC n’est pas activé. Or il suffit qu’un équipement sur la route refuse les paquets UDP de plus de 512 octets pour que cela couine.

La solution est toute simple, il suffit d’éditer le fichier /etc/bind/named.conf.options :

nano /etc/bind/named.conf.options

et d’y ajouter :

logging {
category lame-servers {null; };
category edns-disabled { null; };
};Code language: JavaScript (javascript)

Et pour finir, on enregistre les modifications et on redémarre BIND :

/etc/init.d/bind9 restart

Et voilà, plus de messages de ce type dans les logs.