Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

MIME:Parser vs. file permissions

by graff (Chancellor)
on Sep 23, 2002 at 07:03 UTC ( #200029=perlquestion: print w/ replies, xml ) Need Help??
graff has asked for the wisdom of the Perl Monks concerning the following question:

I'm using MIME::Parser to extract data attachments from email being sent to me at regular intervals. It's great, and I need only one improvement (for a linux or solaris environment):

The extracted file attachments are being written to disk with owner-only access permissions (rwx------ (700) on directories, and rw------- (600) on data files), and I would prefer at least group-read/execute (750 for directories, 640 for data files) -- global read/execute access would actually be better.

I went over the MIME::Parser and MIME::Parser::Filer man pages, but did not see any relevant information.

What makes it troublesome is that, in the simplest case, you don't really know what paths/files are being created until MIME::Parser is done. You need to figure out afterwards which directories were created, "chmod go+x" on those, then "chmod -R go+r"... (I don't want to make the data files executable.) It would just be a lot easier if the mode flags could be set the way I want in the first place. But how?

The man page for MIME::Parser::Filer says "you can easily define your own subclass of MIME::Parser::Filer and override" the default behavior, but an example (not provided there) would be really helpful... THANKS!

Comment on MIME:Parser vs. file permissions
Re: MIME:Parser vs. file permissions
by davis (Vicar) on Sep 23, 2002 at 08:32 UTC
    You may wish to try changing your umask. Try perldoc -f umask or man umask. The umask influences the permissions of created files, usually by 'masking' off permission bits which you don't want. Try something along the lines of:
    umask(0011);
    near the top of your code.
    cheers
    davis
    Is this going out live?
    No, Homer, very few cartoons are broadcast live - it's a terrible strain on the animator's wrist
MIME::Parser and specifying directories for saving attachments
by jlongino (Parson) on Sep 23, 2002 at 14:14 UTC
    Although it's true you may not know what the file names are until MIME::Parser is done, you do have the option of specifying where to store the attachments beforehand:
    use strict; use warnings; use MIME::Parser; my $dir = "./mimemail"; my $parser = new MIME::Parser; $parser->output_dir($dir); my $entity = $parser->read(\*STDIN) || die "couldn't parse MIME stre +am";
    You should have enough information at this point to change permissions on the directory or the files within it. Then again, maybe I misunderstand your question. The suggestion by davis should work in any case.

    --Jim

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://200029]
Approved by Aristotle
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (11)
As of 2014-09-16 11:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (13 votes), past polls