Fedora 26 и полные доменные имена?

Результат id по умолчанию предоставляет три значения ugG (идентификатор и имя вместе).

Из справочной страницы Linux,

-u, --user: выводить только эффективный идентификатор пользователя

-g, --group: выводить только эффективный идентификатор группы

-G, --groups: Вывести все идентификаторы групп

Здесь groups = 0 (root) означает, что пользователь root принадлежит к группе с именем root . Поскольку здесь нет вторичных групп для root , это выглядит как избыточная информация.

Для пользователя, который принадлежит к нескольким группам, вывод будет иметь вид

uid=492(username) gid=492(primary groupname) groups=492(primary group), 493(secondary group)
1
14.07.2017, 09:02
2 ответа

Очень редко такие инструменты используют (печатную )точку в конце (, даже если это принято ).
Чтобы получить полное имя, которое должно быть напечатано с этим:

$ hostname -f
asus-f26-x64.example.com

Вам нужно сделать/etc/resolv.conf(или эквивалент в Fedora ), чтобы иметь строку домена:

domain example.com.

Но поймите, что невозможно иметь полное доменное имя только одной метки:

asus-f26-x64

Это может быть имя компьютера, одна метка. Но вам нужна другая метка (или метки, текст, ограниченный точками ), чтобы работать как домен (, например ). И поскольку в Интернете есть свой собственный список TLD в Интернете , его также следует добавить. Таким образом, полное доменное имя должно иметь вид:

asus-f26-x64.company.domain.net.
0
27.01.2020, 23:24

Если вы посмотрите hostnamectlисходный код здесь , вы увидите, что hostnamectlбудет использовать функцию set_hostnameдля выполнения действия.

Комментарий к этому разделу гласит: (акцент мой):

Now that we set the pretty hostname, let's clean up the parameter and use that as static hostname. If the hostname was already valid as static hostname, this will only chop off the trailing dot if there is one. If it was not valid, then it will be made fully valid by truncating, dropping multiple dots, and dropping weird chars. Note that we clean the name up only if we also are supposed to set the pretty name. If the pretty name is not being set we assume the user knows what he does and pass the name as-is.

Действительно, если вы отметитеmethod_set_static_hostnameздесь , где он пытается установить статическое имя хоста, соответствующая часть выглядит следующим образом:

if (!hostname_is_valid(name, false))
    return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid static hostname '%s'", name);

Функциональная сигнатура функции hostname_is_validтакова:

bool hostname_is_valid(const char *s, bool allow_trailing_dot) _pure_;

Затем вы увидите, что hostname_is_validвызывается с аргументом allow_trailing_dotкак false -, поэтому systemd и hostnamectl не допускают завершающую точку в статическом имени хоста.


РЕДАКТИРОВАТЬ :Что ж, обсуждение systemd по этому вопросу можно найти здесь . Насколько я знаю, это работает «как задумано» -, точка в конце не является обязательной. Есть аргументы за и против, но я не буду вдаваться в это здесь.

Таким образом, -вы не можете сделать это с помощью инструмента systemd hostnamectl,...

Тем не менее, вы всегда можете просто добавить точку в конце файла /etc/hostname, и тогда это даже появится в выводе hostnamectl.

Конечно, если вы используете hostnamectlили любой другой инструмент для установки имени хоста в любой момент в будущем, он перезапишет его.

3
27.01.2020, 23:24

Теги

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