Unix中的用户名是否区分大小写?


20

ssh abc@servername从不同ssh Abc@servername?用户名的大小写在Unix中重要吗?

我的用户通过LDAP进行身份验证。


3
Linux中的几乎所有内容都区分大小写。含义:cd是不一样的CD......只有这样,才能真正使他们的意思是相同的是设置别名,在你的.bashrc文件..
ryekayo

1
我想这取决于您为用户名使用的LDAP属性。如果它是RFC 4519uid,则它不区分大小写,但是身份验证实现可能仍在其上面加上大小写意义。它还取决于对LDAP进行身份验证的精确程度。
斯特凡Chazelas

1
只需尝试使用大写的用户名登录,即可在几秒钟内为您解答。
与Monica进行的Lightness竞赛

Answers:


14

就像主机名和域名一样,用户名严格来说不是Unix,而是可以并且确实可以覆盖更广泛的OS类型。

然后,是否将它们视为区分大小写取决于用于指定它们的标准。

主机名和域名对于DNS标准显然不区分大小写(请参阅RFC4343)。

存储在本地后端(/ etc / passwd)或Unix样式(NIS)上的用户名不受POSIX标准区分大小写。

存储在LDAP或Active Directory后端中的用户名将遵循使用的属性架构定义,uid并且cn经常存储的用户名具有不同的架构属性,前者不区分大小写,而后者则区分大小写。这意味着根据ldap服务器配置,两者Abcabc可能不匹配abc

由于这种不一致,我建议仅对用户名和主机/域名使用小写字母,然后ssh ABC@SERVERNAME.DOMAIN.COM无论如何都要避免使用小写字母。


1
因此,按照我阅读POSIX标准的方式,由于未将其指定为区分大小写或不区分大小写,并且整个便携式文件名字符集都可用(包括大写和小写),因此它将取决于实现。那是对的吗?话虽这么说,是否有标准惯例?
Doug R.

1
@DougR。就POSIX而言,用户名取决于大小写。否则将不区分大小写。当引用可移植文件名字符集时,区分大小写是隐式的。
jlliagre

感谢您的澄清。那是我最初的假设,但是我无法找到关于可移植文件名字符集的某种说明。
Doug R.

5

是的,它区分大小写。我无法提供技术信息,我已经对其进行了测试,并且想知道为什么您没有(?)

如您所见,我的本地计算机是linux mint:

# cat /etc/*release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=17.2
DISTRIB_CODENAME=rafaela
DISTRIB_DESCRIPTION="Linux Mint 17.2 Rafaela"
NAME="Ubuntu"
VERSION="14.04.3 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.3 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
cat: /etc/upstream-release: Is a directory

并且我试图像这样连接到CentOS服务器:

·使用(错误的)大写用户名:

8D prova # ssh Root@agora-server
Root@agora-server's password: 
Permission denied, please try again.
Root@agora-server's password: 
Permission denied, please try again.
Root@agora-server's password: 

·使用正确的用户名:

8D prova # ssh root@agora-server
root@agora-server's password: 
Last login: Fri Oct  2 01:50:13 2015 from 192.168.0.31
[root@agora-server ~]# 

作为附带的问题,不允许像此处那样以root用户身份登录SSH(尤其是如果计算机面向Internet)不是安全实践的明智做法😱这些天,对于OpenSSH,通常必须使用在sshd_config中。最好以普通用户身份登录,然后仅在需要时才使用sudo或su成为root用户。
JohnGH

是的,我同意,是正确的,首先是因为它是超级用户,其次,攻击者知道了“ root”用户名,而该用户名只需要捕获密码即可。无论如何,这实际上只是一个在本地运行的虚拟机,不会暴露给实习生。好的做法是使用rsa ssh证书登录,或仅对来自允许的地址(防火墙规则)的请求使用ssh打开ssh端口
lese

3

对于本地帐户,用户名区分大小写。使用LDAP时,要视情况而定。我已经看到用户名区分大小写(在连接到LDAP的ZFS设备上)的情况,以及用户名无关紧要的情况,例如连接到Windows AD的Solaris LDAP客户端。

您应该/可以尝试通过发出来查看系统是否正确使用了LDAP getent passwd <username>。使用此命令应为您提供一条记录,其中包含指定用户的用户名,主目录和外壳程序。如果看不到这样的记录,则说明LDAP配置不正确。

在几个地方应配置LDAP,其中之一是:

/etc/nsswitch.conf

passwd: files ldap
group:  files ldap

您还需要检查PAM的配置是否正确,也许最重要的步骤是验证LDAP客户端是否已配置并正常工作。尝试使用一种工具ldapsearch来检查是否可以查询LDAP。

有几种可用的LDAP食谱,其中大多数取决于您使用的Unix版本和LDAP版本。如果您需要进一步的帮助,请使用这些详细信息更新您的问题。还包括您的配置设置(当然没有密码),可以帮助论坛成员分析您的特定问题。


1

Unix用户名绝对区分大小写,而且,在Unix系统上使用带有大写字符的用户名会产生不需要的结果,因此通常应避免使用。

一些例子是:

它可能会破坏用户的电子邮件。SMTP的标准允许电子邮件地址不区分大小写,并且默认情况下,接收邮件的MTA会将电子邮件地址折叠成小写形式以找到要发送给的用户。如果用户名具有大写字符,则没有特殊的配置替代来解决此问题,将无法解析该用户名。(这会影响MTA(例如sendmail,postfix等)以及传递处理代理(例如procmail))

许多早期的硬件终端都不区分大小写。通常只使用大写字母。登录某些版本的Unix时,以大写字母开头的登录名将触发系统假定您使用的是古老的仅大写字母的终端,并且将启用大小写折叠-它将所有输入的大写字母转换为小写(然后,您必须转义大写字符以表示它们是大写),以帮助您输入您希望使用小写字母的用户名。我不认为这是Linux上的事情,但我已经在HP-UX上看到了这一点。

由于长期以来一直习惯只在用户名中使用小写字符,因此可以合理地预期系统上的其他工具(某些我们可能没有想到的工具)也可能会假定用户名应为小写,并进行检查,转换等。从而破坏了该用户的利益。


0

用户名绝对区分大小写。您可以通过添加两个具有相似名称的用户来轻松地进行测试:

~ # useradd foobar
~ # useradd fooBar
~ # grep ^foo /etc/passwd
foobar:x:1001:1001::/home/foobar:/bin/sh
fooBar:x:1002:1002::/home/fooBar:/bin/sh

此问题/答案显示如何补偿有人尝试使用根据LDAP服务器使用“错误”大小写的用户名登录。但是请注意,这仅在用户名全部以小写字母列出时才起作用(或者,如果需要,可以将它们全部大写)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.