[OpenAFS-devel] Cross-platform hidden files

Jeffrey Altman jaltman@secure-endpoints.com
Wed, 18 Apr 2007 11:27:19 -0400


This is a cryptographically signed message in MIME format.

--------------ms090707080400060804030702
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Moritz Bechler wrote:
> Hi,
> 
> I know this has come up some time before on this list but as we are working
> on a OpenAFS setup including windows and linux clients and we ran into
> problems having folder redirections on windows pointing to our AFS because
> of the clients inability to store extended/dos attributes, I want to bring
> it up once again.
> This is especially annoying for desktop.ini files and recycler directories
> and really might confuse our users so we are willing to do something about
> it. As maintaining a "hacked" version is really not what we want we are
> looking for a solution that can make it into the mainline releases.
> 
> The roadmap of OpenAFS for Windows tells about this extended/dos attribute
> thing and mentions it in combination with alternate data streams for windows.
> I don't think this is a cross-platform compatible approach, is it?

This is the cross-platform compatible approach.  Multiple data streams
is the mechanism that is used by Microsoft Windows to store meta-data
associated with files.   It is also the mechanism by MacOS X to store
meta-data.

The meta-data that Windows stores is not just the Hidden and System
attributes from DOS FAT but also a variety of other data including the
source of data downloaded and stored using Internet Explorer, search
tags, etc.

Implementing multiple data streams requires changes on the file server
and extensions to the AFS3 wire protocol.  We have designed the
architecture but we do not have the resources to implement it.

> We thought of several possibilities of implementing this:
> 
> - Implement a windows-only client side ignore list, somehow like samba does
>    with its "hide files"-directive, simply setting the hidden attribute on
>    files matching a given pattern -  this does not really fix the problem,
>    but lessen it a bit.

This doesn't fix the problem and can cause unwanted side-effects.  Its
not just the Hidden Attribute that is important to the Windows Explorer
Shell but the System Attribute as well.  Toggling of the attributes on
directory entries (not the desktop.ini file) result in special
behaviors.  It is the marking of the System Attribute on the directory
that causes the desktop.ini file to be looked for UNLESS you are in one
of the directories that Explorer Shell knows is special.

> - Implement attribute storage on the server and get linux/unix/etc. to
>    implement another possibility (e.g. some extended attribute thing)
>    for marking files hidden ... quite illusionary I think.
> 
> - Implement some filename transformation mechanism on windows, moving
>    windows hidden files to dot files with transparent access - has been
>    discussed and rejected in the past as it might cause trouble.
> 
> - Implement some attribute storage on the server, then map to the hidden
>    flags on Windows and map to dot files on unix/linux operating systems.
>    This might include storing dot files created on linux/unix without the
>    dot but with a hidden flag.

The attribute storage that would be implemented on the file server is
"multiple data streams" per file name.  Then one of the stream names
would be reserved.  For example "AFS3-DOS-Extended-Attributes" and the
actual attributes would be stored under the name

  filename:AFS3-DOS-Extended-Attributes

This would be ignored on UNIX and be looked for by Windows clients that
support it.  It could be looked for by MacOS X client

> The main problem is the totally different approach of unix/linux operating
> systems and windows to handle hidden files - without changing things in
> the unix userland (and without hacking windows to use dot files for these
> files) it seems impossible to have a working cross-platform solution
> without having to do some filename transformation.

I would not expect a UNIX platform to hide the desktop.ini file.  UNIX
is not hiding files based upon attributes but based upon file names.

> The last two ideas both involve imposing some restrictions on valid
> filenames - on unix you could not have a file 'foo' and a file '.foo'
> in the same directory.
> 
> Do you have ideas other than the ones mentioned above?
> We are willing to invest some time in the implementation of this but need
> a clear statement whether the project wants some kind of implementation
> and if so which approach is favored. Also some information on the
> windows compile process (if needed) and maybe someone who volunteers you
> help us in case we get stuck would be nice.

The Windows build process is documented in the top-level of the openafs
source tree in the README-NT file.

Jeffrey Altman
Secure Endpoints Inc.


--------------ms090707080400060804030702
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJeTCC
AxcwggKAoAMCAQICEBW00lKwoWJXt8wbmTl1M0kwDQYJKoZIhvcNAQEEBQAwYjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT
I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA2MDUyNzIyMDMzMloX
DTA3MDUyNzIyMDMzMlowczEPMA0GA1UEBBMGQWx0bWFuMRUwEwYDVQQqEwxKZWZmcmV5IEVy
aWMxHDAaBgNVBAMTE0plZmZyZXkgRXJpYyBBbHRtYW4xKzApBgkqhkiG9w0BCQEWHGphbHRt
YW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQC19SD7DncCP/+wfQlLzAAcxf1nJ/7UQgh4o/nxzvuY55XwHdLQjqWuFUnM5vecfyZKwq0o
fGCucDfcQbSIrkhHD9z4TZ8vDaYWVY9Foz8Rp8G0PNdbRFoFtfJbaeVBX5hG3aQXIc/T1b9U
8uN3kLyqXAFIGWKO8DJVGTKKtOiPVOp1U+9CwujyYmUSKF+suutKABhhK1ZGHsTnFczLZ2g0
ma0H7PiFJ2kLfOf///07E1fbr4IRb+cd87kpWLcjtEZ0rbBr9HlOy9dkeEii/qFoo1ahfKCD
A9bNErMiOXA3dudaNNzXlN/70slq5fboBXbepamJGrsnXYcCsS9+LtCTAgMBAAGjOTA3MCcG
A1UdEQQgMB6BHGphbHRtYW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wDAYDVR0TAQH/BAIwADAN
BgkqhkiG9w0BAQQFAAOBgQDBzWhkrW+ol3iyT1rV8ZBQB0+z/6dFH3djQfNf7jDXNoXx4Vbo
pA7BAR4ihAPibv7j7ZaxmyMxWiDACRGS934uvUS0K6L6q14hTWMostJgFsAEDArrmbrES03v
L3EVETiGFqTB2sLp5MLc6+z+72pLXRuDPL3lO2GOQuBbILswRzCCAxcwggKAoAMCAQICEBW0
0lKwoWJXt8wbmTl1M0kwDQYJKoZIhvcNAQEEBQAwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA2MDUyNzIyMDMzMloXDTA3MDUyNzIyMDMzMlow
czEPMA0GA1UEBBMGQWx0bWFuMRUwEwYDVQQqEwxKZWZmcmV5IEVyaWMxHDAaBgNVBAMTE0pl
ZmZyZXkgRXJpYyBBbHRtYW4xKzApBgkqhkiG9w0BCQEWHGphbHRtYW5Ac2VjdXJlLWVuZHBv
aW50cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC19SD7DncCP/+wfQlL
zAAcxf1nJ/7UQgh4o/nxzvuY55XwHdLQjqWuFUnM5vecfyZKwq0ofGCucDfcQbSIrkhHD9z4
TZ8vDaYWVY9Foz8Rp8G0PNdbRFoFtfJbaeVBX5hG3aQXIc/T1b9U8uN3kLyqXAFIGWKO8DJV
GTKKtOiPVOp1U+9CwujyYmUSKF+suutKABhhK1ZGHsTnFczLZ2g0ma0H7PiFJ2kLfOf///07
E1fbr4IRb+cd87kpWLcjtEZ0rbBr9HlOy9dkeEii/qFoo1ahfKCDA9bNErMiOXA3dudaNNzX
lN/70slq5fboBXbepamJGrsnXYcCsS9+LtCTAgMBAAGjOTA3MCcGA1UdEQQgMB6BHGphbHRt
YW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQQFAAOB
gQDBzWhkrW+ol3iyT1rV8ZBQB0+z/6dFH3djQfNf7jDXNoXx4VbopA7BAR4ihAPibv7j7Zax
myMxWiDACRGS934uvUS0K6L6q14hTWMostJgFsAEDArrmbrES03vL3EVETiGFqTB2sLp5MLc
6+z+72pLXRuDPL3lO2GOQuBbILswRzCCAz8wggKooAMCAQICAQ0wDQYJKoZIhvcNAQEFBQAw
gdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUg
VG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp
b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFp
bCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTAeFw0w
MzA3MTcwMDAwMDBaFw0xMzA3MTYyMzU5NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxU
aGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwg
RnJlZW1haWwgSXNzdWluZyBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV
+065yplaHmjAdQRwnd/p/6Me7L3N9VvyGna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfAr
hVqqP3FWy688Cwfn8R+RNiQqE88r1fOCdz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/
p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8
MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWls
Q0EuY3JsMAsGA1UdDwQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxh
YmVsMi0xMzgwDQYJKoZIhvcNAQEFBQADgYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/
TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFiw9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amc
OY6MIE9lX5Xa9/eH1sYITq726jTlEBpbNU1341YheILcIRk13iSx0x1G/11fZU8xggNkMIID
YAIBATB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5
KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQ
FbTSUrChYle3zBuZOXUzSTAJBgUrDgMCGgUAoIIBwzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcN
AQcBMBwGCSqGSIb3DQEJBTEPFw0wNzA0MTgxNTI3MTlaMCMGCSqGSIb3DQEJBDEWBBTdUDKF
KRV4ruGGqf2R06dQHmFlXzBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3
DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBhQYJKwYB
BAGCNxAEMXgwdjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcg
KFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3Vpbmcg
Q0ECEBW00lKwoWJXt8wbmTl1M0kwgYcGCyqGSIb3DQEJEAILMXigdjBiMQswCQYDVQQGEwJa
QTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhh
d3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECEBW00lKwoWJXt8wbmTl1M0kwDQYJ
KoZIhvcNAQEBBQAEggEAoqWSbqZbxj/znZIAEhDojSgGBO2h6dLjghwIVbxcc9dpaQH6hnu8
U8onHd3dsxXCoOHVSlv91gjxLcV1f2NQGhnvdTCVJfGGeo3BwKBucltMMFMSlhaHQWH1yjMF
ItZwLP6o7jmzakOuD9iGtu2z/Rb1u5YB5CB/vpmK4AGBgze7JSL6HxnSkD64kdnxOrNe3agm
m1kCEzjvTL0U5ygfvDTqcE8tjCvWk5R1ljfQ2nhiW6UsilhsTej7hC09psd5I/J1nN730fTT
rjVrzwesXh6el7jIoyeVbXofRkR1Y1N1Hc84SIXQ9XLgwHHm47xjA+qpQ82rb6BNch5w81W9
vQAAAAAAAA==
--------------ms090707080400060804030702--