nodejs / nodejs/node

Setting the mode from a file creation method will unset the 0x10 (public write) bit

Ouverte
#62,896 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

stale
Langage dominant
JavaScript
Étoiles
122k
Forks
37.3k
Merge moyen
4 j 2 h
PR mergées (30 j)
283

Description

Version

25.9.0

Platform
Linux [xxxx] 5.15.0-174-generic #184-Ubuntu SMP Fri Mar 13 18:41:50 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Subsystem

fs

What steps will reproduce the bug?

Confirmed in 25.8.1, 25.9.0. Passing a 'mode' argument to at least the following methods:
fs.writeFile()
fs.promises.writeFile()
fs.promises.open()

Will set the supplied mode to the file, but with the bit at 0x10 unset (file writable by others, or S_IWOTH from the file mode constants being unset.) For example, setting the mode to 0o777 in these functions (R/W/X by user/group/public) results in a file with 0o775 being applied instead.

Setting the mode by filehandle.chmod(), fs.promises.chmod(), or fs.chmod() works as expected.

Setting the mode in a separate operation runs the risk of the mode not being properly set if the operation failed.

How often does it reproduce? Is there a required condition?

This applies at file creation. If the file already exists, then (as per expected behavior) the mode is not set at all.

What is the expected behavior? Why is that the expected behavior?

The expected behavior is for the supplied mode to be the actual mode at file creation.

What do you see instead?

The file is created with the supplied mode but without the bit at 0x10 being set.

Additional information

No response

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par suivre les chemins de création de fs.writeFile(), fs.promises.writeFile() et fs.promises.open(), puis comparez leur gestion du mode avec fs.chmod() et filehandle.chmod(). Reproduisez le problème sous Linux avec le mode 0o777 et vérifiez que les fichiers nouvellement créés conservent le bit d’écriture publique fourni, sans modifier le comportement des fichiers existants.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript
Domaine
operating-systems
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
68/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.