这只是一个一般性的设计问题。我正在设计一个小应用,它需要以分层的方式存储文件,例如:
dept/group/user1/file#1
dept/group5/user2/file#7用户名也可以包含任何字符,如“/”、“@”。
使用用户名作为目录名称是否明智,或者我是否应该在每个组下维护一个映射文件,以便将每个用户名映射到一个简化的通用目录名称
user1=dir1
user7=dir7发布于 2013-06-07 04:19:11
尽管有人建议散列您的用户名,但这对于检查是不透明的(因此您不能通过检查文件系统来区分与目录相对应的用户名)和不可逆性(因此,无论是人类系统管理员还是软件都不能通过查阅文件系统来枚举用户名)。因此,它可能会也可能不会对你起作用。
我建议对用户名进行编码。通过从MIME中使用的两种主要内容编码中获得灵感,我可以建议使用quoted-printable或base64
ls检查目录时,用户名是什么仍然是相当明显的。您应该至少对所有控制字符(值在0到31和127之间的字节)、=、/以及外壳程序特有的所有字符(如空格、引号、$、#等)进行编码。quoted-printable的缺点是,如果期望用户名包含大量这些不寻常的字符,文件名可能会变得非常长:每个编码序列需要3个bytes.ls看起来不是很清楚。请注意,您必须修改标准base64的最后一个字符,例如,将字母表的最后一个字符从/更改为- like this,否则编码的字符串可能包含/.https://stackoverflow.com/questions/16970593
复制相似问题