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