Dê uma olhada nestes P & A relacionados com perguntas e respostas intituladas: De onde o uname obtém suas informações? . Informações como o nome do host persistem em uma estrutura de dados dentro do kernel do Linux, enquanto o sistema está em execução. Durante a inicialização de um sistema, essa informação pode ser recuperada através de uma variedade de mecanismos que são tipicamente específicos da distribuição.
Se você olhar a página man 2 uname
man, há uma estrutura de dados mencionada:
struct utsname {
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined
network" */
char release[]; /* Operating system release (e.g., "2.6.28") */
char version[]; /* Operating system version */
char machine[]; /* Hardware identifier */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */
#endif
};
O segundo elemento dessa estrutura, nodename[]
é um lugar onde o nome do host é armazenado dentro do kernel do Linux.
/ proc
Se você der uma olhada em /proc/sys/kernel/hostname
, o nome do host também será exposto aqui. Este é um local virtual, /proc
, mas fornece um método alternativo para acessar o nome do host. O nome de domínio do sistema também está aqui, /proc/sys/kernel/domainname
.
OBSERVAÇÃO: De interesse, esses valores são namespace UTS específico .
Exemplo
$ sudo hostname
oldhost
$ sudo unshare --uts /bin/bash
$ sudo echo newhost > /proc/sys/kernel/hostname
$ hostname
newhost
$ exit
$ hostname
oldhost
Manipulando o nome do host
No sistema com o Systemd, você pode usar a ferramenta cli hostnamectl
para obter / definir o nome do host. Isso mudará permanentemente entre as reinicializações.
$ sudo hostnamectl set-hostname --static somehostname
Você também pode descobrir seu valor em sysctl
:
$ sudo sysctl -a | grep kernel.hostname
kernel.hostname = myhostname
Para os lançamentos do Fedora, este FAQ do site ask.fedoraproject.org cobre bastante bem o tópico, intitulado: Definindo corretamente o nome do host - Fedora 20 no Amazon EC2 .