我试图build立一个系统,访问者可以在表单中input任何用户名来创build一个新用户,最后它build立在LDAP目录上,我也计划把它映射成一个UNIX帐户(在Ubuntu Linux上),使系统查找LDAP上的系统帐户。 这样做很好,但我觉得应该避免使用许多用户名,其中一个显而易见的是“root”,其他所有用户名都是守护进程。
你如何解决这个问题? 你是否通过检查/ etc / passwd来构成不允许的用户名列表? 我在想,如果在内部,用户名可以作为“ldap_”或其他名称前缀,它将避免任何命名冲突,但是当LDAP条目名称是“joe”但系统帐户看起来像“ldap_joe” 。 甚至不知道如何实现。
那么表单validation就是你的前线防御,不应该被忽视。
除此之外,我可能还会将所有当前的uid导入到ldap ..因此,任何尝试重新创build它们的人都会产生命名冲突。
这就是说,是我在你的鞋,我会继续前进,并分配一个前缀或自动生成用户帐户名(firstname.lastname,姓$我等…)。 我不喜欢任何人创build任何用户名的想法..这只是一个稍后头痛的秘诀。
例如,如果有人创build了我的软件包pipe理员(或我自己)后来决定应用到服务帐户的用户“www”,那么我们将会产生冲突,并可能产生安全隐患。 为什么冒这个险?
我宁愿保持谨慎,也不要为没有想到的事情做计划,然后再在屁股上咬。
这就是说,这一切都取决于你的情况和要求。
最简单的方法就是进行表单validation,换句话说,脚本检查是否有这些系统用户名被input到表单中。 如果input的用户名位于不允许名称的“列表”(可能使用/ etc / passwd中的帐户作为模板),请反馈错误消息,指出无法为foo原因创build该帐户。
其次在表单validation(前端)。 最容易的。
按层排列的其他选项: