fefofe@gmx.ch has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I try to set permissions for logfiles generated by Log4Perl ... The logger is initialized by a configfile
Log::Log4perl->init($configfile);
In the file I have this configuration:
log4perl.appender.MasterLog = PCIDSSAppender log4perl.appender.MasterLog.filename = /var/log/application/perl.log log4perl.appender.MasterLog.mode = append log4perl.appender.MasterLog.size = 10000000 log4perl.appender.MasterLog.max = 25 log4perl.appender.MasterLog.permissions = log4perl.appender.MasterLog.layout = PatternLayout log4perl.appender.MasterLog.layout.ConversionPattern=%d %H [%P:%p] %F: +%L:- %m%n
This leads to this permissions: -rw-r--r-- What I need is 600: -rw------- How to configure this ?? A setting off 600 leads to this: ---x-wx--T I'm really confused about this ...

Replies are listed 'Best First'.
Re: Log4Perl: file permissions
by hippo (Archbishop) on Sep 15, 2017 at 07:58 UTC

    You almost certainly want to use 0600 rather than 600. See the docs for chmod for details of the oct/dec/string differences.

      0600 still leads to
      ---x-wx--T
      I think 0600 is interpreted as a string rather then a octal number, but how can I avoid this ?
        $ perl -wE 'say 0600' 384
        ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,
Re: Log4Perl: file permissions
by kcott (Archbishop) on Sep 16, 2017 at 04:58 UTC

    G'day fefofe,

    Welcome to the Monastery.

    "A setting off 600 leads to this: ---x-wx--T I'm really confused about this"

    Firstly, 600 decimal is 1130 octal:

    $ perl -E 'say 01130' 600

    The permissions you show are correct for that number:

    $ > fred $ ls -l fred -rw-r--r-- 1 ken staff 0 Sep 16 14:16 fred $ chmod 1130 fred $ ls -l fred ---x-wx--T 1 ken staff 0 Sep 16 14:16 fred

    You don't show how you're using "600"; regardless, it's clearly being read as a decimal number, as indicated by "---x-wx--T".

    If you replace "600" with "384", as shown by choroba, that should give you the wanted permissions of "-rw-------".

    Perhaps also look at "umask" in the OPTIONS section of Log::Log4perl::Appender::File.

    — Ken

      That was the problem, thought that 600 maybe was interpreted as a string but I not had the idea that perl could read this as a decimal number ...

      So all is fine, I have my permissions and know how to set them in future, many thanks!