[dokuwiki] New PR: :fire: fix the calculation of file permissons

  • From: "splitbrain" <wiki@xxxxxxxxxxxx>
  • To: dokuwiki@xxxxxxxxxxxxx
  • Date: Sat, 14 Aug 2021 11:42:26 +0200 (CEST)

Hi,

splitbrain opened a new pull request at 
https://github.com/splitbrain/dokuwiki/pull/3520:

Our config allows to set the values for `dmode` and `fmode` to allow users to 
explicitly define which permissions directories and files should have.

To avoid unnessary chmod operations, we check the current umask to compare what 
permissions files and directories would get witout our intervention. If the 
result is already what the user wants, no chmods will happen later on. 
Otherwise we set new configs called `dperm` and `fperm` which will be used in 
chmod ops. This is done in `init_creationmodes()`

When we created new directories, we used to pass the original `dmode` config to 
`mkdir()`. The system will then apply the umask to that `dmode`.

This means the resulting directory will *always* have different permissions 
than `dmode`, *always* requiring a chmod operation. That's silly.

**Breaking Change:** This patch removes the passing of `dmode` as second 
parameter to all `mkdir` calls, making it default to `0700` which is also what 
we test against in `init_creationmodes()`.

Plugins not relying on our `io_*` functions and do create their own directories 
and which currenlty pass `dmode` to it need to be
adjusted to remove that second parameter.

**Revert:** In 9fdcc8fcd87114ca59a1764a84d213a53c655c8c @movatica introduced a 
change to `init_creationmodes()` that compared the umask against `fmode` 
instead of `0666`. I merged it because it looked logical when compared to the 
code for directories which compared agains `dmode` as described above. However 
we do not pass `fmode` to any file creation
methods (that's not possible).

The result is that all changes made in the `fmode` setting resulted in the 
wrong permissions for newly created files as first reported in 
https://forum.dokuwiki.org/d/19463-setting-fmode-not-working-as-intended

I'm unsure about the orginal motivation behind @movatica's change. The "fix" 
however, is wrong.

**Tests:** This patch introduces an integration test that will check the actual 
results of directory and file creations under various umask, `dmode` and 
`fmode` settings.

Please help us to review this pull request, so new contributors get feedback in 
a timely manner.

eeba61e0-fce3-11eb-8d49-7ec6050ddc1c


-- 
DokuWiki mailing list - more info at
http://www.dokuwiki.org/mailinglist

Other related posts:

  • » [dokuwiki] New PR: :fire: fix the calculation of file permissons - splitbrain