Bogdan Rudas wrote:
> Hello all,
> 
> I would like to start use of olcAccess rules, are there
> human-friendly editor for that ACLs?
Use any editor you wish. It is just text!

> I can't even use line breaks in ldif file to make my restrictions a
> bit more readable!
One can use line breaks, no problem. But understanding ldif file
syntax is important.

Often one have very long lines in ldif files.

A standard terminal has a width of 80 characters. Longer lines get
broken at charakter 78. 79 charakter is a newline "\n", 80 character
is one space " ". So the output you get looks like this:

line no text
1       "78 byte" + "\n"
2       "one space" + "next 78 bytes + "\n"
3       "one space" + "next 78 bytes + "\n"

This happens during a ldapsearch operation. If you upload this
ldif to a ldapserver these two bytes "\n " will be removed.

Conclusion:
One may add a newline to a ldif file by adding two characters
"\n + space". You may add as many newline you wish.

i.e.

open
 l
 a
 p

becomes "openlap" after opload.

open
  l
  a
 p

becomes "open l ap" after upload

> I strongly dislike very long string values, one
> day this will cause mistake and access violation.
> 
> I've tried with Apache DS, ldif import and few puppet modules,
> everything require huge line ACL.
No, not really. They just require proper formated ldif input.
man ldif, section "ENTRY RECORD EXAMPLE", attribute jpegPhoto

> Any help will be welcome.
read this thread:
http://www.openldap.org/lists/openldap-technical/201402/threads.html#00105

here is a small filter which may help you:

# cat $(which fmt_olcAccess)

#!/bin/sed -rf
# Author: Harry Jede
# produce human readable but still machine parseable
# olcAccess lines and removes the ordering numbers in {}
# because humans don't need them, really.

# the hole script
s/^(olcAccess: )\{[[:digit:]]+\}(.*$)/\1\2/
$!{H;d}
${H;g;s/\n //g;s/[[:space:]]+by /\n  by /g}

info sed explains the commands
in short
line 1: removes the ordering numbers
line 2: concatenate all lines into hold buffer
line 3: move hold buffer back to pattern buffer 
        s/\n //g delete any occurance of "\n "
        finally search for " by" and add a
        ldif line break in front of " by"
-- 

Harry Jede

Reply via email to