UMASK modifié par la commande CD

Bonjour,

J’aimerais sécuriser une machine. Parmi les différentes opérations à réaliser, il y la gestion par défaut des droits sur les fichiers nouvellement créés.

Cela se fait avec la commande umask.
Je décide d’être très restrictif et d’utiliser un umask de 077 (ou -RW-------).
Je modifie donc les fichiers .bashrc et .profile de tous mes utilisateurs (root y compris) afin que la commandeumask 077 y soit présente.

Je me délogue, je me logue avec chaque utilisateur sur un Terminal. Je tappe umask pour vérifier que c’est bien pris en compte.
Tout va bien, j’ai bien mon umask de 0077.

Par contre, horreur et damnation, lorsque je tape une commande CD par exemple cd /etc et que je vérifie le umask, celui-ci revient à 0022.

La question c’est pourquoi ?
Y a-t-il un autre fichier exécuté lors je tape CD ?

Je doute fort que cd te change le umask, il doit se passer autre chose que tu n’as pas remarqué / pris en compte.

Les endroits à prendre en compte pour configurer correctement le umask par défaut sont :

  • /etc/login.defs (pour PAM)
  • /etc/profile
  • /etc/bash.bashrc
  • /etc/skel/.profile et /etc/skel/.bashrc (pour configurer automatiquement les nouveaux utilisateurs lorsqu’ils sont créés)
  • $HOME/.profile et $HOME/.bashrc (pour les utilisateurs existants)

Par contre sur ma machine, j’ai un umask 022 par défaut, sauf pour mon utilisateur qui est en 077. Seuls mes ~/.profile et ~/.bashrc contiennent la commande umask 077 et tout se passe bien.

Si je dis que l’usage de la commande CD modifie le umask, c’est que c’est le cas.
Si je pose la question si un fichier est exécuté lors de l’usage de la commande CD, c’est que je me doute bien qu’il y a quelque chose qui agit sur le umask quelque part. La question c’est quoi.

Si quelqu’un a une connaissance plus approfondie du fonctionnement du shell, je serai heureux savoir comment se déroule l’exécution de la commande CD.
Peutêtre que ma machine est déjà compromise ? Comment fais-je pour trouver le fichier utiliser par la commande CD ?

which cd ne répond rien.

Le umask a été défini à 077 dans les fichiers suivants :
/etc/login.defs
$HOME/.profile et $HOME/.bashrc

Mais là je suis en train de me répéter.

cd est un builtin du shell (en l’occurrence bash, mais c’est pareil pour tous les shell), il n’y a pas d’exécutable séparé.

Tu peux essayer avec dash (qui est installé par défaut sur Debian) :

dash umask cd /etc umask

J’ai trouvé.

J’avais ajouté la ligne suivante dans les fichiers /etc/pam.d/login et /etc/pam.d/sshd :

Je les ai mises en commentaire et cette fois le umask reste bien toujours à 0077.

Je m’étais inspiré de ça : sécurisé umask sur sessions ssh
Apparemment ça cause plus d’ennuis que cela n’en résous.
Faut dire que c’est pas facile de trouver quelque chose de bien expliqué sur pam-umask dans google, et le man est assez avare en explications.
PAM reste quelque chose d’encore mystérieux pour moi.
Si quelqu’un a un lien qui explique bien son fonctionnement, je suis preneur.

Merci pour la réponse malgré tout.