Как Linux идентифицирует пользователей?

Чтобы запустить собственный DNS, вам необходимо:

  • понять, как работает DNS. Книга О'Рейли DNS & Bind - хорошее начало.
  • установить bind, dnsmasq, nsd или аналогичный полномочный сервер имен
  • настроить его для обслуживания вашего домена
  • протестировать и убедиться, что он работает (например, выполнив nslookup с самого сервера )
  • либо обновите свой домен на веб-сайте вашего регистратора, чтобы записи NS (сервер имен) указывали на ваш сервер, либо попросите своего регистратора сделать это.

ПРИМЕЧАНИЕ: у вас действительно должно быть как минимум два разных сервера имен (на случай, если один из них не работает или недоступен), желательно в двух разных сетях. Проверьте, предлагает ли ваш регистратор вторичную службу DNS - если да, вам придется настроить DNS-сервер, чтобы разрешать запросы XFER от их DNS-серверов.

9
21.06.2018, 11:37
2 ответа

Если принудительно создать несколько пользователей с одинаковым именем пользователя, в /etc/{shadow,passwd}будет несколько записей с одинаковым именем:

$ cat /etc/passwd
...
a:x:1001:1002::/home/a:/bin/bash
a:x:1002:1003::/home/b:/bin/bash

# cat /etc/shadow
a:...:17702:0:99999:7:::
a:...:17702:0:99999:7:::

Если вы попытаетесь войти в систему как этот пользователь, вы войдете в систему как первое совпадение.

$ ssh a@<host>
Password:
$ id
uid=1001(a) gid=1002(a) groups=1002(a)
$ pwd
/home/a

Невозможно будет войти в систему как второй пользователь с таким же именем.

Обратите внимание, что Linux отслеживает пользователей по их uid, а не по имени пользователя.

Однако возможно, чтобы два разных имени пользователя были одним и тем же идентификатором пользователя. Рассмотрим другую версию/etc/passwd:

$ cat /etc/passwd
...
a:x:1001:1002::/home/a:/bin/bash
b:x:1001:1002::/home/b:/bin/bash

Обратите внимание, что для обоих имен пользователей aи bтретий столбец — 1001 --, это uid/идентификатор пользователя. Теперь, если пользователь aили пользователь bвходит в систему (даже с разными паролями ), они оба будут «пользователем 1001» и будут отображаться как пользователь aс точки зрения ОС. Здесь также в большинстве случаев возвращается первая совпадающая запись ():

.
$ ssh a@host
Password: <a's password>
$ id
uid=1001(a) gid=1002(a) groups=1002(a)

$ ssh b@host
Password: <b's password>
$ id
uid=1001(a) gid=1002(a) groups=1002(a)

Оба aи bявляются uid 1001и будут иметь доступ к ресурсам, доступным uid 1001.

22
27.01.2020, 20:04

В Unix пользователи идентифицируются по их идентификатору (uid ), который должен быть уникальным (в рамках локальной системы ). Так что даже если бы можно было создать 2 разных пользователей с одинаковым именем (adduser в моей системе отказывается это делать, см. этот вопрос для получения дополнительной информации Могут ли отдельные учетные записи unix иметь общее имя пользователя, но разные пароли? ), им нужно будет получить разные uid. Хотя вы можете манипулировать файлами, содержащими информацию о пользователе, в соответствии с вашими критериями, каждая программа основана на предположении, что uid уникальны в системе, поэтому такие пользователи будут идентичными.

РЕДАКТИРОВАТЬ :Другой ответ продемонстрировал случай, когда у вас есть 2 разных имени пользователя для одного и того же uid -, что касается системы, хотя это похоже на два разных имени для одного и того же пользователя, поэтому конструкции подобного следует избегать, если это возможно, если только вы специально не хотите создать псевдоним для пользователя в системе (см. вопрос псевдоним пользователя unix на serverfault для получения дополнительной информации о технических аспектах ).

Система использует эти идентификаторы uid для обеспечения прав доступа к файлам. uid и gid (идентификатор группы )пользователя, которому принадлежит файл, записываются в метаданные файла. Если вы перенесете диск на другой компьютер с другим пользователем, который случайным образом использует один и тот же uid, файл внезапно станет принадлежать этому пользователю в этой системе. Зная, что uids обычно не более 16 -битовых целых чисел в системе unix, это показывает, что uids не должны быть глобально уникальными, а только уникальными в рамках локальной системы.

11
27.01.2020, 20:04

Теги

Похожие вопросы