Re: log files and permissions

Martin Pihlak <martin.pihlak@gmail.com>

From: Martin Pihlak <martin.pihlak@gmail.com>
To: Itagaki Takahiro <itagaki.takahiro@gmail.com>
Cc: Fujii Masao <masao.fujii@gmail.com>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2010-07-13T12:16:08Z
Lists: pgsql-hackers

Attachments

Itagaki Takahiro wrote:
> I think the patch is almost ready for committer except the following
> three issues:
> 
> 2010/7/13 Fujii Masao <masao.fujii@gmail.com>:
>>> +     if (!*value || *endptr || file_mode < 0 || file_mode > 0777)
>> The sticky bit cannot be set via log_file_mode. Is this intentional? 

Yes -- I don't think there is a use case for sticky or setuid bits on log
files, even allowing execute is questionable.

> We should also check the value not to be something like 0699.
> How about checking it with (file_mode & ~0666) != 0 ?

Aha, that would ensure that the execute bit is not specified. Works for me.
The 0699 and other invalid octal values are caught by strtol()

>>> +#ifndef WIN32
>>> +             chmod(filename, Log_file_mode);
>>> +#endif
>> Don't we need to check the return value of chmod()?
> 
> I prefer umask() rather than chmod() here.
> 

Converted to umask()

>>> +const char *show_log_file_mode(void);
>> You forgot to write the show_log_file_mode()? I was not able to find that
>> in the patch.
> 
> I want show_log_file_mode to print the setting value in octal format.
> 

I've now (re)added the show_log_file_mode(). It used to be there, but then
at some point I decided to display the value "as-is".

While going through it, I moved the _setmode() call for win32 to logfile_open().

regards,
Martin