Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 翻译姓名与否_Oop_Unix_Structure - Fatal编程技术网

Oop 翻译姓名与否

Oop 翻译姓名与否,oop,unix,structure,Oop,Unix,Structure,这只是一个一般的设计问题。我正在设计一个小应用程序,它需要以分层方式存储文件 例: 用户名也可以有任何字符,如“/”、“@” 使用用户名作为目录名是明智的还是应该在每个组下维护一个映射文件,将每个用户名映射到简化的通用目录名,即 user1=dir1 user7=dir7 尽管有人建议对用户名进行哈希,但这既不便于检查(因此无法通过检查文件系统来判断与目录相对应的用户名是什么),也不可逆(因此人类系统管理员和软件都无法通过查阅文件系统来枚举用户名)。因此,它可能对您有效,也可能不适用 我建议对

这只是一个一般的设计问题。我正在设计一个小应用程序,它需要以分层方式存储文件 例:

用户名也可以有任何字符,如“/”、“@”

使用用户名作为目录名是明智的还是应该在每个组下维护一个映射文件,将每个用户名映射到简化的通用目录名,即

user1=dir1
user7=dir7

尽管有人建议对用户名进行哈希,但这既不便于检查(因此无法通过检查文件系统来判断与目录相对应的用户名是什么),也不可逆(因此人类系统管理员和软件都无法通过查阅文件系统来枚举用户名)。因此,它可能对您有效,也可能不适用

我建议对用户名进行编码。通过从中使用的两种主要内容编码中启发自己,我是否可以建议引用可打印base64

  • 使用,您可以对用户名中的所有“异常”字节进行编码,同时保留大部分可打印字符的原样。这样,当使用
    ls
    检查目录时,用户名是什么仍然是相当明显的。您应该至少编码所有控制字符(值介于0和31以及127之间的字节)、=/,以及shell专用的所有字符(如空格、引号、$#等)。quoted printable的缺点是,如果预期用户名包含大量这些不寻常的字符,则文件名可能会变得非常长:每个编码序列需要3个字节

  • 是一种比引用的可打印编码更紧凑的编码,以防用户名可能包含许多需要编码的字符,但人类无法立即读取,因此目录的
    ls
    看起来不是很清晰。请注意,您必须修改标准base64的最后一个字符,例如,将字母表的最后一个字符从/更改为-,因为否则编码字符串可能包含/


在UNIX中不可能在目录名称中包含
/
字符。你能猜出原因吗?考虑到这一点,不可能将每个用户表示为以其用户名命名的目录。也许你可以使用他们用户名的哈希和。要么这样,要么改变用户名的要求。@htor yes/将使其看起来像dir,哈希和是个好主意!!谢谢:)
user1=dir1
user7=dir7