anchor.diff:  There are some limitations for this feature:
   
   =====
  -If we enable this feature, some master operations such as grant, revoke, snapshot... (See the design doc for more details) will be slower as we need to sync HDFS ACLs to related hfiles.
  +If we enable this feature, some master operations such as grant, revoke, snapshot...
  +(See the design doc for more details) will be slower as we need to sync HDFS ACLs to related hfiles.
   =====
   
   =====
  
positive.code: ====
  
  === Permission to access snapshot and data files
  Generally, only the HBase owner or the HDFS admin have the permission to access hfiles.
  
  link:https://issues.apache.org/jira/browse/HBASE-18659[HBASE-18659] use HDFS ACLs to make HBase granted user have the permission to access the snapshot files.
  
  ==== HDFS ACLs
  
  HDFS ACLs supports an "access ACL", which defines the rules to enforce during permission checks, and a "default ACL", which defines the ACL entries that new child files or sub-directories receive automatically during creation.
  By HDFS ACLs, HBase sync granted users with read permission to files.
  
  ==== Basic idea
  
  
negative.code: :toc: left
  :source-language: java
  
  In HBase, a scan of a table costs server-side HBase resources reading, formating, and returning data back to the client.
  Luckily, HBase provides a TableSnapshotScanner and TableSnapshotInputFormat (introduced by link:https://issues.apache.org/jira/browse/HBASE-8369[HBASE-8369]),
  which scan snapshot the HBase-written HFiles directly in the HDFS filesystem completely by-passing hbase. This access mode
  performs better than going via HBase and can be used with an offline HBase with in-place or exported
  snapshot HFiles.
  
  To read HFiles directly, the user must have sufficient permissions to access snapshots or in-place hbase HFiles.
  
  === TableSnapshotScanner
  
  TableSnapshotScanner provides a means for running a single client-side scan over snapshot files.
  When using TableSnapshotScanner, we must specify a temporary directory to copy the snapshot files into.
  The client user should have write permissions to this directory, and it should not be a subdirectory of
  the hbase.rootdir. The scanner deletes the contents of the directory once the scanner is closed.
  
  .Use TableSnapshotScanner
  ====
  [source,java]
  ----
  Path restoreDir = new Path("XX"); // restore dir should not be a subdirectory HBase hbase.rootdir
  Scan scan = new Scan();
  try (TableSnapshotScanner scanner = new TableSnapshotScanner(conf, restoreDir, snapshotName, scan)) {
      Result result = scanner.next();
  