Item9074: Configure checkers for directories and files have multiple issues

Priority: CurrentState: AppliesTo: Component: WaitingFor:
Normal Closed Engine Configure  
Noticed that the configure checkers for PubDir, etc. were not really working. Main issue is in the routine Checker::checkTreePerms

  • Logic to exclude svn files was backwards - excluding everything except for svn files.
  • The "$filter" parameter was probably backwards. Changed to exclude files matching the filter.
  • Symbolic links were reported as missing files
  • Doesn't check for "execute" bit on directories which blocks reading of the directory contents
  • Recursive call to checkTreePerms is missing the $this, shifting the parameters
  • "D" file handle was not reusable and prematurely closed when called recursively.

This exposed some other issues in the Checkers themselves.
  • Checkers that check for an indirect filename cfg{DataDir}j/blah - didn't expand the cfg{DataDir} prior to check.
  • PubDir checker didn't exclude rcs ,v files from the write check,
  • WorkingDir check needs to exclude the configure/backup directory which contains readonly files.

-- GeorgeClark - 28 May 2010

A fresh installation now provides an error that data/.htpasswd is missing. That's because no users are registered yet.

Options
  • ship an empty .htpasswd (don't forget to update the docs (where are they?) on how to roll an upgrade release tgz?)
  • make checkTreePerms() return something more complex than just a warning string
  • make checkTreePerms() take a parameter that might inhibit the "file missing" message being reported

-- PaulHarvey - 28 May 2010

I think instead, I should just check the file directly. No need to run the recursive checkTreePerms() just to check a single file.
  • If file is missing, include a warning that it is not found, and will be created once a user registers
  • If file is not writable, then it's an error.

-- GeorgeClark - 29 May 2010

Maybe we could close Item6065 when this is done.

I have a problem - on a 10k topic site, configure takes 20+ seconds (depending on server traffic) to load. Subsequent visits to configure takes approx. 5-7 seconds, I suppose the FS is cached then.

Probably, the check should be an interactive button that you need to click - for pub and data anyway.

-- PaulHarvey - 07 Jun 2010

I've added an Expert option - {PathCheckLimit} and updated the PubDir and DataDir checkers to stop checking if the limit is exceeded. This should resolve the performance issues checking the Pub and Data directories. But still will detect issues on new installations. For now the limit is set to 4200. This should handle the default installation.

-- GeorgeClark - 12 Jun 2010

One more issue, the path checker doesn't detect that directories have incorrect group permissions. It misses the condition caused by suexec umask controls that override the {RCS}{dirPermission} setting - see Tasks/Item709. Added a "d" option to Checker::checkTreePerms that will validate directories against the RCS setting. Note that due to inconsistencies in Manifest defaults vs. {RCS}{filePermission}, checking file permissions results in 100's of errors. Deferring this for a future discussion.

-- GeorgeClark - 13 Jun 2010

See also ReviewFileSystemPermissionsAndCheckFix for discussion of future updates.

-- GeorgeClark - 14 Jun 2010

It was pointed out that on Windows, directories are mode 777. For now, disable directory permission checking on the Windows platform. Also added the code (commented out for now) to check file permission consistency.

-- GeorgeClark - 15 Jun 2010
 

ItemTemplate edit

Summary Configure checkers for directories and files have multiple issues
ReportedBy GeorgeClark
Codebase trunk
SVN Range 7575
AppliesTo Engine
Component Configure
Priority Normal
CurrentState Closed
WaitingFor
Checkins Foswikirev:7576 Foswikirev:7577 Foswikirev:7585 Foswikirev:7741 Foswikirev:7742 Foswikirev:7767 Foswikirev:7777 Foswikirev:7802 Foswikirev:7818
TargetRelease minor
ReleasedIn 1.1.0
Topic revision: r22 - 04 Oct 2010, KennethLavrsen
 
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. see CopyrightStatement. Creative Commons License