有沒有辦法為應用程式提供與 Linux 上的電腦主機名稱不同的特定主機名稱?基本上,我有一個軟體期望本機電腦具有與我的電腦主機名稱不同的特定主機名稱。我不想全域更改電腦主機名,而是希望有一種機制,可以在具有指定主機名稱的環境中運行程序,或直接使用指定主機名稱運行程序。
答案1
有了root權限就可以了。使用unshare --uts
若要建立新的 UTS 1命名空間,請在其中設定所需的主機名,然後su
返回您的帳戶並執行應用程式。例如:
ongun@foo$ sudo -s
~ create a new namespace ~
root@foo# unshare --uts /bin/sh
~ this terminal now has its own namespace – change the hostname ~
root@foo# hostname quux
~ switch back ~
root@quux# sudo -s -u ongun
ongun@quux$ /usr/bin/game
預設情況下,命名空間僅限於其建立者進程,因此新主機名稱僅對您執行的程式可見裡面“取消共享”視窗。
筆記:不要忘記實際將新主機名稱添加為/etc/hosts
127.0.0.1,因為許多程式期望/依賴它來解析。
1不要問「UTS」是什麼意思。我只知道它是古代 Unix 的遺物。
答案2
如果您的應用程式不會直接讀取hostname
或/etc/hostname
檔案的輸出,您始終可以為您的電腦建立一個別名,如下所示。
#
# /etc/hosts: static lookup table for host names
#
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost MYHOSTNAME OTHER_ALIAS
::1 localhost.localdomain localhost MYHOSTNAMEv6 OTHER_ALIASv6
或者您可以嘗試使用不同的主機名稱建立 chroot,例如這裡