• Nick Kralevich's avatar
    updater: introduce and set_metadata and set_metadata_recursive · 5dbdef0e
    Nick Kralevich authored
    Introduce two new updater functions:
    
    * set_metadata
    * set_metadata_recursive
    
    Long term, these functions are intended to be more flexible replacements
    for the following methods:
    
    * set_perm
    * set_perm_recursive
    
    Usage:
    
      set_metadata("filename", "key1", "value1", "key2", "value2", ...)
      set_metadata_recursive("dirname", "key1", "value1", "key2", "value2", ...)
    
    Description:
    
    set_metadata() and set_metadata_recursive() set the attributes on a file/directory
    according to the key/value pairs provided. Today, the following keys are
    supported:
    
    * uid
    * gid
    * mode (set_perm_extd only)
    * fmode (set_perm_extd_recursive only)
    * dmode (set_perm_extd_recursive only)
    * selabel
    * capabilities
    
    Unknown keys are logged as warnings, but are not fatal errors.
    
    Examples:
    
    * set_metadata("/system/bin/netcfg", "selabel", "u:object_r:system_file:s0");
    
    This sets the SELinux label of /system/bin/netcfg to u:object_r:system_file:s0.
    No other changes occur.
    
    * set_metadata("/system/bin/netcfg", "uid", 0, "gid", 3003, "mode", 02750, "selabel", "u:object_r:system_file:s0", "capabilities", 0x0);
    
    This sets /system/bin/netcfg to uid=0, gid=3003, mode=02750,
    selinux label=u:object_r:system_file:s0, and clears the capabilities
    associated with the file.
    
    * set_metadata_recursive("/system", "uid", 0, "gid", 0, "fmode", 0644, "dmode", 0755, "selabel", "u:object_r:system_file:s0", "capabilities", 0x0);
    
    All files and directories under /system are set to uid=0, gid=0,
    and selinux label=u:object_r:system_file:s0. Directories are set to
    mode=0755.  Files are set to mode=0644 and all capabilities are cleared.
    
    Bug: 10183961
    Bug: 10186213
    Bug: 8985290
    Change-Id: Ifdcf186a7ed45265511dc493c4036e1ac5e3d0af
    5dbdef0e
install.c 42.8 KB