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