Linux : obtenir la valeur numérique du chmod photo

Linux : obtenir la valeur numérique du chmod

chmod permissions compressor

Je vous ai déjà parlé du chmod et du chown de manière extensive mais aujourd’hui on va un tout petit peu plus loin.

La valeur du chmod telle qu’elle apparaît dans le terminal est un peu esotérique. Prenons par exemple le chmod d’un fichier standard de WordPress : -rw-r-----, cela demande une petite gymnastique intellectuelle pour réaliser quels sont les droits véritables.

Je vous propose donc une petite commande qui va vous simplifier la vie, de manière à vous donner la valeur numérique du chmod des fichiers et répertoires.

Il vous suffit d’utiliser la commande stat comme ceci, dans votre fenêtre de terminal:

stat -c '%a %U:%G %n' *Code language: JavaScript (javascript)

Notes:

  • -c permet de formater la sortie avec la template entre apostrophes
  • %a donne la valeur octale du chmod
  • %U donne le nom de l’utilisateur du chown
  • %G donne le groupe de l’utilisateur du chown
  • %n donne le nom du fichier

Et voilà simple et efficace!

Serveur dédié : résoudre l'erreur  'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' — Missing /var/run/mysqld/mysqld.sock photo

Serveur dédié : résoudre l’erreur ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)’ — Missing /var/run/mysqld/mysqld.sock

Après mise à jour du serveur SQL, il est possible d’obtenir cette erreur au redémarrage physique (boot) du serveur :

error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)' — Missing /var/run/mysqld/mysqld.sockCode language: JavaScript (javascript)

Il se trouve que systemd lance bien le service mysql qui est donc démarré mais ne semble pas pouvoir être en mesure de créer son fichier sock. Il va donc falloir l’aider:

On crée un nouveau fichier pour systemd:

nano /etc/tmpfiles.d/mysql.conf

et on y ajoute ce code qui va permettre de chmoder et chowner le répertoire /var/run/mysqld pour l’utilisateur mysql:

# systemd tmpfile settings for mysql
# See tmpfiles.d(5) for details

d /var/run/mysqld 0755 mysql mysql -Code language: PHP (php)

Cela règle le problème définivement.

WordPress : résoudre l'erreur "ftp_nlist() expects parameter 1 to be resource" photo

WordPress : installer des plugins et thèmes sur un site de développement local

WordPress : récupérer la liste emails des membres et commentateurs photo

Lorsque vous installez WordPress en local sur votre machine, il est assez courant que les droits des fichiers et dossiers ne permettent pas d’entrée de jeu d’installer ou de mettre à jour des plugins ou des thèmes.

Voici comment résoudre ce problème en quelques minutes.

Passage au système de fichier direct

1. On commence par éditer notre fichier wp-config.php, qui contient pas mal de constantes primordiales pour WordPress:

nano wp-config.phpCode language: CSS (css)

2. On y rajoute, vers le haut du fichier, une constante qui passe le système de fichier en mode direct:

define('FS_METHOD', 'direct');Code language: JavaScript (javascript)

Sauvegardez votre fichier wp-config.php. Les fichiers de thèmes et de plugins seront désormais directement installés sans que la popup demandant des informations FTP ou SSH ne s’affiche.

Vérification des droits des fichiers et répertoires

En local, par contre, ce sera un petit peu différent : l’utilisateur www-data (Apache ou NginX) doit pouvoir gérer les fichiers mais si vous souhaitez éditer des fichiers, ce qui est quand même le but d’une installation en locale, il faut que votre utilisateur puisse aussi gérer et avoir le droit d’écriture sur les fichiers.

1. Tout d’abord, on donne les droits à Apache à tous les fichiers et dossiers de l’installation WordPress :

sudo chown www-data:www-data -R /home/matt/www/

2. J’ajoute ensuite mon utilisateur de session, matt, dans le groupe www-data (Apache):

sudo usermod -aG www-data matt

3. On vérifie que l’utilisateur matt fait bien partie du groupe www-data :

groups matt

Cela nous retourne la liste de tous les groupes auquel j’appartiens :

matt : matt adm lp dialout fax cdrom floppy tape audio dip www-data video plugdev fuse lpadmin netdev admin sambashare vboxusers usb bluetooth scanner

4. On stipule que l’utilisateur matt est propriétaire de ces fichiers :

sudo chown matt:www-data -R /home/matt/www/

5. On assigne les permissions standard de WordPress, chmod 755 pour les répertoires et chmod 664 pour les fichiers, le tout en mode récursif pour n’oublier personne :

cd /home/matt/www
sudo find . -type d -exec chmod -R 750 {} \;
sudo find . -type f -exec chmod -R 640 {} \;

Vous pouvez maintenant installer thèmes et plugins en local et être en mesure d’éditer vos fichiers avec votre utilisateur linux, sans problèmes de droits.

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

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

Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande photo

Serveur dédié : CHMOD récursif sur des fichiers ou répertoires en ligne de commande

Il y a quelques jours, j’ai eu besoin de modifier les permissions de plusieurs dizaines de fichiers PHP.

Plutôt que d’utiliser la fonction CHMOD du client FTP, je me suis dit que ce serait sûrement plus rapide via ligne de commandes.

Chmod sur toute une extension de fichiers

Pour faire un CHMOD 640 récursif sur tous les fichiers PHP d’un répertoire, commencez par vous rendre dans le répertoire puis utilisez cette commande :

find . -type f -name '*.php' -exec chmod 640 {} \;  Code language: JavaScript (javascript)

En changeant l’extension qui se trouve entre les guillemets, vous pouvez rapidement attribuer les bonnes permissions aux bons types de fichiers.

Lire la suite