• Stephen Smalley's avatar
    Extend restorecon to handle app data directories correctly. · e183cec0
    Stephen Smalley authored
    
    
    App data directories are labeled by installd at creation time
    based on package information, seapp_contexts, and file_contexts.
    Prior to this change, restorecon and restorecon_recursive did not
    know how to label app data directories and would merely label
    them based on file_contexts, causing them to be (mis)labeled with
    a single security context if restorecon was applied to /data/data/<pkgname>
    or /data/user/N/<pkgname>.  Extend restorecon to correctly handle app data
    directories based on all of the relevant information.
    
    After applying this change and its dependencies (including rewriting
    toolbox restorecon to use libselinux), a restorecon -Rv /data/data
    only relabels the lib symlinks in the app data directories, which I
    believe is harmless and arguably is a bug in installd.  Originally
    when the lib subdirectories were created in each app data directory
    we labeled them with system_data_file to distinguish them from
    app data, prevent direct writes by apps, and allow execute by apps.
    However, when the lib directories were moved under /data/app-lib and only the
    symlink was left behind, it continued to be labeled system_data_file
    as a side effect of the fact that it is created before installd
    calls selinux_android_setfilecon2() on the package directory and
    thus inherits the original parent directory security context.  Offhand,
    I don't see a real reason to not just label the symlinks with the app data
    directory context even though the symlinks do have a different UID (install)
    since the containing directory is owned by the app UID so apps
    can already unlink and re-create the symlink at will.  So I think this
    change by restorecon is harmless and we could switch installd to
    applying the setfilecon2 first before creating the symlinks so that
    they are originally labeled this way.
    
    Change-Id: I698b1b2c3f00f31fbb2015edf23d33b51aa5bba1
    Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
    e183cec0
android.c 27.5 KB