def push(from, options = {})
    to = File.join @path, (options[:to] || File.basename(from))
    FileUtils.cp_r from, to
    
    permissions = options[:read_only] ? 0770 : 0750
    FileUtils.chmod_R permissions, to
    FileUtils.chown_R @admin_uid, @user_gid, to
    # NOTE: making a file / directory read-only is useless -- the sandboxed
    #       process can replace the file with another copy of the file; this can
    #       be worked around by noting the inode number of the protected file /
    #       dir, and making a hard link to it somewhere else so the inode won't
    #       be reused.
    
    to
  end
def push(from, options = {})
    to = File.join @path, (options[:to] || File.basename(from))
    FileUtils.cp_r from, to
    
    permissions = options[:read_only] ? 0770 : 0750
    FileUtils.chmod_R permissions, to
    FileUtils.chown_R @admin_uid, @user_gid, to
    # NOTE: making a file / directory read-only is useless -- the sandboxed
    #       process can replace the file with another copy of the file; this can
    #       be worked around by noting the inode number of the protected file /
    #       dir, and making a hard link to it somewhere else so the inode won't
    #       be reused.
    
    to
  end
Empty sandbox.

 @param [String] admin the name of a user who will be able to peek into the
                       sandbox
 Copies a file or directory to the sandbox.

 @param [String] from path to the file or directory to be copied
 @param [Hash] options tweaks the permissions and the path inside the sandbox
 @option options [String] :to the path inside the sandbox where the file or
     directory will be copied (defaults to the name of the source)
 @option options [Boolean] :read_only if true, the sandbox user will not be
     able to write to the file / directory
 @return [String] the absolute path to the copied file / directory inside the
                  sandbox