Pour autant que je sache, cela est codé en dur dans les utilitaires standard. Je stracesouhaitais à la fois touchcréer un nouveau fichier et mkdircréer un nouveau répertoire.
La touchtrace a produit ceci:
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
tandis que la mkdirtrace a produit ceci:
mkdir("newdir", 0777) = 0
À moins de coder le processus de création de fichier / répertoire en C, je ne vois pas de moyen de modifier les autorisations par défaut. Il me semble cependant que ne pas rendre les fichiers exécutables par défaut est logique: vous ne voulez pas qu'un texte aléatoire soit mal interprété par erreur comme des commandes shell.
Mise à jour
Pour vous donner un exemple de la façon dont les bits d'autorisation sont codés en dur dans les utilitaires standard. Voici quelques lignes pertinentes de deux fichiers du coreutilspackage qui contiennent le code source pour les deux touch(1)et mkdir(1), entre autres:
mkdir.c:
if (specified_mode)
{
struct mode_change *change = mode_compile (specified_mode);
if (!change)
error (EXIT_FAILURE, 0, _("invalid mode %s"),
quote (specified_mode));
options.mode = mode_adjust (S_IRWXUGO, true, umask_value, change,
&options.mode_bits);
free (change);
}
else
options.mode = S_IRWXUGO & ~umask_value;
}
En d'autres termes, si le mode n'est pas spécifié, réglez-le sur S_IRWXUGO(lire: 0777) modifié par le umask_value.
touch.c est encore plus clair:
int default_permissions =
S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
Autrement dit, donnez des autorisations de lecture et d'écriture à tout le monde (lire: 0666), qui seront umaskbien sûr modifiées par le processus de création de fichiers.
Vous pouvez peut-être contourner ce problème uniquement par programme: c'est-à-dire lors de la création de fichiers à partir d'un programme C, où vous effectuez les appels système directement ou à partir d'un langage qui vous permet de faire un appel système de bas niveau (voir par exemple Perl sysopensous perldoc -f sysopen).
umaskj'ai rencontré était toujours 0022, créant l'autorisation par défaut 644.