J'ai mis default_privs=myuser
en main.cf
qui est un script perl, exécuté dans le contexte de cet utilisateur.
Dans le perl script j'ai ajouté un débogage pour imprimer l'utilisateur :
my $exec_username = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);
$logger->info("Script is running in context of user:".$exec_username);
Si le script est déclenché par un courriel entrant, je peux voir que le script s'exécute dans le contexte de l'utilisateur "myuser".
Plus tard dans le script, j'essaie de copier un fichier. J'utilise des backticks pour obtenir la sortie de STDOUT et STDERR :
my $copycmd = "cp -f -v '".$final_tiff."' '".$fax_file_name."'";
$logger->info("Copy command: ".$copycmd);
my $copylog=`$copycmd 2>&1`;
$logger->info($copylog);
Mais ça me donne :
cp: cannot create regular file ... : Permission denied
L'utilisateur "myuser" fait partie d'un groupe qui a des permissions rw sur le partage de fichiers glusterfs. Comme vous pouvez le voir dans le code, j'imprime également la commande de copie. Si je prends la même commande et l'exécute dans un Shell, comme :
su myuser
cp ... ...
le fichier est copié. Comment cela peut-il être, pour ma compréhension, si je fais su myuser
avant, le cp
s'exécute dans le même contexte utilisateur que la commande perl script. Où est la différence ?
MISE À JOUR : Le groupe du partage de fichiers dans lequel 'myuser' a des droits d'écriture n'a été ajouté que comme groupe supplémentaire à cet utilisateur. Je l'ai changé en groupe principal de l'utilisateur, et maintenant cela fonctionne. Quoi qu'il en soit, ce comportement me semble très étrange.
0 votes
Quelle méthode utilisez-vous pour acheminer le courrier électronique vers script ? méthode des alias ? méthode du transport ?
0 votes
J'utilise des alias et le transport local.
0 votes
a des permissions rw sur le partage de fichiers --> Vous voulez dire un partage de fichiers comme NFS ?
0 votes
J'utilise glusterfs
0 votes
Pouvez-vous invoquer le script manuellement ? par exemple en spécifiant manuellement stdin et le paramètre nécessaire
0 votes
Oui, je peux. Si je lance le script manuellement depuis un script de l'utilisateur, tout fonctionne. Peut-être que postfix prend un autre groupe et que c'est le problème.