Re: [patch] libsemanage: do not hard link files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2009-08-05 at 11:19 -0400, Stephen Smalley wrote:
> Remove the support for hard linking files in semanage_copy_file, as it
> is unsafe and can leave the active store corrupted if something goes
> wrong during the transaction.  It also can leave the installed policy
> files with incorrect file modes or security contexts.
> 
> To do this safely, we would need to change all functions that write to
> the sandbox files to first unlink the destination file.  This was done
> in the original patch for the write_file helper but not for other cases.
> It would need to be done for all functions that open.*O_CREAT or
> fopen.*w on a file in the sandbox.
> 
> We also don't want this applied to the installed policy files, as they
> need to be created with appropriate file modes and security contexts
> that may differ from the sandbox files.  At present, the hard link
> support will only affect the installed policy files when they are first
> created; afterward the link() call will always fail with EEXIST since
> they are not unlinked prior to installation (nor would that be safe as
> it could leave the system without a policy - rename would make more
> sense in that situation).  If we were to re-introduce hard link support,
> we ought to use different helpers or flags for installing the policy
> files than for copying the active store to the temporary sandbox to
> avoid affecting both.

BTW, I noticed that the Fedora libsemanage has a patch that moves the
link() call from semanage_copy_file() to semanage_copy_dir() within the
S_ISREG() conditional, so that link() is only being applied when
creating the temporary sandbox, and not when installing the system
policy files.  Which is better, but still broken.

-- 
Stephen Smalley
National Security Agency


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.

[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux