「Ubuntuでホスト名を変更したい」
「一時的ではなく恒久的にhostnameを変更したい」
このような場合には、この記事の内容が参考になります。
この記事では、hostnamectlによるホスト名の変更を解説しています。
本記事の内容
- hostnamectlとは?
- hostnamectlによるホスト名の変更
- hostnamectlにsudoを付けないと認証が必要になる
それでは、上記に沿って解説していきます。
hostnamectlとは?
hostnamectlは、システムのホスト名や関連する設定を確認するためのコマンドです。
Linuxであれば、ディストリビューション問わずにデフォルトで利用できます。
主に、hostnamectlはホスト名の変更で利用することになります。
ホスト名の変更と言えば、「/etc/hostname」を変更する方法もあります。
しかし、「/etc/hostname」を直接変更する方法はオススメしません。
反映させるのに、他にも処理が必要です。
hostnamectlであれば、コマンド一撃で済みます。
hostnamectlの使い方については、ヘルプで確認できます。
$ hostnamectl -h hostnamectl [OPTIONS...] COMMAND ... Query or change system hostname. Commands: status Show current hostname settings set-hostname NAME Set system hostname set-icon-name NAME Set icon name for host set-chassis NAME Set chassis type for host set-deployment NAME Set deployment environment for host set-location NAME Set location for host Options: -h --help Show this help --version Show package version --no-ask-password Do not prompt for password -H --host=[USER@]HOST Operate on remote host -M --machine=CONTAINER Operate on local container --transient Only set transient hostname --static Only set static hostname --pretty Only set pretty hostname
この中で覚えるのは、「set-hostname NAME 」だけでOKです。
他の設定や照会機能は、基本的に利用する機会がありません。
以上、hostnamectlについて説明しました。
次は、hostnamectlによるホスト名の変更を説明します。
hostnamectlによるホスト名の変更
hostnamectlによるホスト名の変更を行います。
検証に用いたOSは、以下。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"
まずは、変更する前に現状のホスト名を確認します。
$ hostname ubuntu-focal
上記ホスト名は、「/etc/hostname」ファイルの内容と同じです。
$ cat /etc/hostname ubuntu-focal
では、ホスト名を変更します。
ホスト名を変更するコマンドは、以下。
hostnamectl set-hostname 変更後のホスト名
Ubuntuであれば、「sudo」を付けて実行します。
「sudo」を付けないと認証が必要になり、面倒なことになります。
(※認証については、後述しています)
「test001」というホスト名に変更するためのコマンドを実行した結果は、以下。
$ sudo hostnamectl set-hostname test001 $
コマンドを実行しても、何も表示されません。
先ほどと同じ方法でホスト名を確認しましょう。
$ hostname test001 $ cat /etc/hostname test001
両方の確認方法により、変更後のホスト名を確認できました。
これにより、恒久的にUbuntuのホスト名を変更することができました。
以上、hostnamectlによるホスト名の変更を説明しました。
hostnamectlにsudoを付けないと認証が必要になる
「sudo」を付けないと、次のようにパスワードを求められます。
$ hostnamectl set-hostname test001 ==== AUTHENTICATING FOR org.freedesktop.hostname1.set-static-hostname === 静的なホスト名を設定するには認証が必要です。 Authenticating as: Ubuntu (ubuntu) Password:
これだけでは、何のパスワードがわかりません。
rootのパスワードを入力しても、次のようなエラーが表示されます。
polkit-agent-helper-1: pam_authenticate failed: Authentication failure ==== AUTHENTICATION FAILED === Could not set property: Access denied
そもそも、デフォルトでUbuntuにおけるrootのパスワードはありません。
それを設定して、入力してもダメなのです。
では、何のパスワードを入力すべきなのでしょうか?
それは、認証エラーのメッセージに記載されています。
「pam_authenticate failed」です。
このメッセージより、PAM認証におけるパスワードが必要だと言えます。
どうでしょうか?
これが面倒だといった理由です。
それなら、「sudo」を付けてroot権限で実行した方が簡単です。
もしくは、rootになってコマンドを実行するかのどちらかで対応しましょう。
$ sudo su - root # hostnamectl set-hostname test001 #