Exporter les droits d'accès ACL de tout un répertoire
By Pierre-Alain B on Monday, April 27 2015, 08:30 - Permalink
Le petit script ci-dessous en Ruby parcourt l'arborescence d'un système de fichier et imprime dans une liste HTML le nom de chaque dossier et les droits d'accès ACL qui y sont associés.
@max_depth = 3 def parse(folder, depth) depth = depth + 1 Dir.new(folder).sort.each do |f| puts "<ul>" if f != ".." and f != "." and File.directory?(folder+"/"+f) puts "<li" rights = `getfacl -p #{Shellwords.escape(folder+"/"+f)}` hashOfACLS = Hash.new rights.split("\n").each do |s| catch = /^group:(.*):([r-][w-][x-])/.match(s) hashOfACLS[catch[1]] = catch[2] unless catch.nil? or catch[1]=="" end classes = "" details = "" hashOfACLS.each do |k, v| classes = classes + k + " " if v.include? "r" details = details + k + " => " + v + ";" end puts "class='#{classes}'>#{f} (#{details})" if depth < @max_depth parse(folder+"/"+f, depth) end puts "</li>" end puts "</ul>" end end