Имя пользователя в Unix чувствительно к регистру?


20

Отличается ssh abc@servernameот ssh Abc@servername? Имеет ли значение имя пользователя в Unix?

Мой пользователь аутентифицируется через LDAP.


3
Почти все в Linux чувствительно к регистру. Значение: cdэто не то же самое, что CD... Единственный способ действительно заставить их означать одно и то же - это установить псевдонимы в вашем .bashrcфайле ..
ryekayo

1
Я полагаю, это зависит от того, какой атрибут LDAP вы используете для имени пользователя. Если это идентификатор из RFC 4519 , то он нечувствителен к регистру, но реализации аутентификации могут по-прежнему накладывать на него значение регистра. Это также зависит от того, как именно выполняется аутентификация с помощью LDAP.
Стефан Шазелас

1
Простая попытка войти с вашим именем пользователя с заглавными буквами ответила бы вам за несколько секунд.
Легкость гонки с Моникой

Ответы:


14

Как и имена хостов и доменные имена, имя пользователя не является строго Unix-объектом, но может охватывать и часто охватывает более широкий диапазон типов ОС.

Будут ли они считаться чувствительными к регистру, зависит от стандарта, используемого для их определения.

Имена хостов и доменные имена явно нечувствительны к регистру по стандарту DNS (см. RFC4343 ).

Имена пользователей, хранящиеся в локальном бэкэнде (/ etc / passwd) или в стиле Unix (NIS), не учитывают регистр в стандарте POSIX .

Имена пользователей, хранящиеся в LDAP или бэкенде Active Directory, будут соответствовать определению используемой схемы атрибутов, uid и cnчасто хранящие имя пользователя имеют разные атрибуты схемы, нечувствительные к регистру для первого, но чувствительные к регистру для второго. Это означает , как Abcи abcможет соответствовать или не abcзаписи «s в зависимости от конфигурации сервера LDAP.

Из-за этого несоответствия я бы рекомендовал использовать строчные буквы как для имен пользователей, так и для имени хоста / домена, а затем избегать ssh ABC@SERVERNAME.DOMAIN.COM грубых действий.


1
Итак, способ, которым я читаю стандарт POSIX , поскольку он не указан ни с учетом регистра, ни с учетом и что доступен весь переносимый набор символов в имени файла (который включает в себя как верхний, так и нижний регистр), будет зависеть от реализации. Это верно? При этом существует ли стандартное соглашение?
Даг Р.

1
@DougR. Что касается POSIX, имена пользователей зависят от регистра. Нечувствительность к регистру была бы указана иначе Чувствительность к регистру подразумевается при обращении к переносимому набору символов имени файла.
июля

Благодарю за разъяснение. Это было мое первоначальное предположение, но я не смог найти ничего относительно переносимого набора символов в имени файла, который бы указывал на это так или иначе.
Даг Р.

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 ~]# 

Как побочный вопрос, не рекомендуется использовать протокол SSH для входа в систему как root, как это было сделано здесь (особенно, если компьютер подключен к Интернету). В наши дни для OpenSSH это обычно должно быть явно включено с параметром PermitRootLogin в в sshd_config. Желательно войти в систему как обычный пользователь, а затем использовать sudo или su для получения прав root только при необходимости.
JohnGH

Да, это правильно, я согласен, во-первых, потому что это суперпользователь, а во-вторых, «root» имя пользователя известно злоумышленнику, которому нужно только перехватить пароль. В любом случае, это на самом деле просто виртуальная машина, работающая локально, не подверженная интернированию. Рекомендуется использовать для входа в систему сертификаты rsa ssh и / или открывать порт ssh только для запросов, поступающих с разрешенных адресов (правила брандмауэра)
lese

3

В случае локальных учетных записей имя пользователя чувствительно к регистру. Когда вы используете LDAP, это зависит. Я видел случаи, когда имя пользователя чувствительно к регистру (на устройстве ZFS, подключенном к LDAP), и случаи, когда это не имеет значения, например, клиент Solaris LDAP, подключенный к Windows AD.

То, что вы должны / могли бы попробовать, это проверить, правильно ли ваша система использует 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. Но обратите внимание, что это будет работать только в том случае, если все имена пользователей указаны в нижнем регистре (или вы можете сделать их все в верхнем регистре, если хотите).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.