On Wednesday 17 June 2009 15:31:56 Anoop Vijayan wrote:
> Running RHEL5 U2 x86_64, with Samba & Winbind configure to work with
> Active-Directory env. Users & Groups in the Active-Directory are in hebrew
> and locale settings are correct (Hebrew/UTF-8) Posix Acls on file has
> special characters ('\' & hebrew chars) for the group/user names. In
> circumstances like this, where the user/group accounts come from an AD
> server, getfacl could be showing the "invalid" characters as octal.
> [root]# getfacl a.a
> # file: a.a
> # owner: GTS\134\327\236\327\225\327\251\327\225\327\237
> # group: root
> Now - we are also have GPFS fs and when we run the mmgetacl command the
> Posix acls in Hebrew showed OK.
> I am trying to work out a patch which fixes this and the issue seems to be
> const char *quote(const char *str)
> Removing the checks isprint(*s) and *s == '\\' resolves the issue.
> AD shares are associated with a doamin name and AD users/groups will be in
> the format Dom\user. Can someone explain why these checks are required?
The '\\' check is required so that backslashes will go through
unquote(quote(string)) will come out correctly.
The isprint() check is a misguided attempt to do something reasonable with
unprintable characters, but it leads to lots of problems with different
encodings, so it should probably be removed. I'll fix that.
There also is a check for '=' in quote(). This is from the attr package which
separates names and values with '=', but unnecessary in acl. quote() should
probably be passed in a string of additional characters that need to be quoted
so that it does the right thing in both packages.