# Lines are applied in order. Blank lines and lines starting with hashes are
# ignored.
#
# Flags include:
#       recurse -- equivalent to chmod -R and chown -R
#       -       -- default settings for chmod and chown
#
# dentries are relative to the rootfs path provided to the fix-permissions.sh
# script.
#
# dentry                flags   user    group   file_mode

etc/                                                                 -       root    root    0755
etc/apt                                                              -       root    root    0755
etc/fstab                                                            -       root    root    0644
etc/group                                                            -       root    root    0644
etc/hostname                                                         -       root    root    0644
etc/hosts                                                            -       root    root    0644
etc/locale.gen                                                       -       root    root    0644
etc/passwd                                                           -       root    root    0644
etc/shadow                                                           -       root    root    0600
