为多用户环境配置个性化主机名显示
在单台 Linux 设备上供多人使用时,若需让每位用户登录后看到符合自己身份的主机名(如老师要求主机名与用户名一致),可通过修改用户 Shell 提示符实现,而无需更改系统全局主机名。以下是完整、可复用的操作流程,适用于 Debian/Ubuntu 等系统。
创建新用户
使用 adduser 命令创建新用户,系统会自动创建家目录并提示设置密码。
sudo adduser zhouyaohang按提示输入密码及用户信息(可直接回车跳过非必要字段),最后确认信息正确后完成创建。
定制用户专属的终端提示符
编辑该用户的 .bashrc 文件,在末尾添加自定义 PS1 变量,使终端提示符显示为用户名@用户名格式。
sudo nano /home/zhouyaohang/.bashrc在文件末尾添加以下行:
# 定制专属主机名显示
PS1='\u@zhouyaohang:\w\$ '保存并退出(Ctrl+O → 回车 → Ctrl+X)。
其中\u代表用户名,\w代表当前工作目录,zhouyaohang为希望显示的“虚拟主机名”。
配置本地域名解析(避免 sudo 报错)
为防止出现 unable to resolve host 错误,需将虚拟主机名加入 /etc/hosts 文件。
sudo nano /etc/hosts找到包含 127.0.1.1 的行,在其后追加虚拟主机名:
127.0.1.1 wangbeihong zhouyaohang保存退出。
此步骤确保系统能正确解析该虚拟主机名到本机,避免网络相关服务异常。
授予 sudo 权限(可选)
若需该用户具备管理员权限,将其加入 sudo 用户组:
sudo usermod -aG sudo zhouyaohang验证配置
切换到新用户并检查效果:
su - zhouyaohang观察终端提示符是否为:
zhouyaohang@zhouyaohang:~$再测试 sudo 是否正常:
sudo ls若无报错且能正常执行,则配置成功。
注意事项
- 此方法仅改变用户终端的视觉提示符,系统真实主机名(
hostname命令返回)保持不变。 - 每位用户需单独配置
.bashrc和/etc/hosts条目。 - 适用于教学、实验或多用户共享开发环境,不影响系统稳定性。
后续添加新用户时
重复上述步骤,仅需替换用户名和虚拟主机名即可快速部署。
一键执行脚本
#!/bin/bash
# 颜色定义
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # 无颜色
echo "----------------------------------------"
echo " 多用户环境一键配置脚本 (教师要求版)"
echo "----------------------------------------"
# 1. 获取用户名
read -p "请输入要创建的用户名 (例如: zhouyaohang): " USERNAME
# 检查用户是否已存在
if id "$USERNAME" &>/dev/null; then
echo -e "${RED}错误: 用户 '$USERNAME' 已经存在!${NC}"
exit 1
fi
# 2. 获取密码
read -sp "请输入该用户的登录密码: " PASSWORD
echo "" # 换行
if [ -z "$PASSWORD" ]; then
echo -e "${RED}错误: 密码不能为空!${NC}"
exit 1
fi
echo "正在创建用户..."
# 创建用户并设置密码 (使用 chpasswd 避免交互式提示)
sudo useradd -m -s /bin/bash "$USERNAME"
echo "$USERNAME:$PASSWORD" | sudo chpasswd
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 用户 '$USERNAME' 创建成功。${NC}"
else
echo -e "${RED}✗ 用户创建失败。${NC}"
exit 1
fi
# 3. 修改 .bashrc (定制主机名显示)
echo "正在配置个性化终端提示符..."
BASHRC_PATH="/home/$USERNAME/.bashrc"
# 追加 PS1 配置
# 注意:这里使用 >> 追加,防止覆盖原有配置
echo "" | sudo tee -a "$BASHRC_PATH" > /dev/null
echo "# 自动配置:定制专属主机名显示" | sudo tee -a "$BASHRC_PATH" > /dev/null
echo "PS1='\u@$USERNAME:\w\$ '" | sudo tee -a "$BASHRC_PATH" > /dev/null
echo -e "${GREEN}✓ 终端提示符已定制。${NC}"
# 4. 修改 /etc/hosts (防止 sudo 报错)
echo "正在更新 /etc/hosts 解析..."
# 检查是否已存在该主机名,避免重复添加
if grep -q "$USERNAME" /etc/hosts; then
echo " (主机名已在 hosts 中,跳过)"
else
# 假设 127.0.1.1 是绑定主机名的行,追加用户名
sudo sed -i "/127.0.1.1/ s/$/ $USERNAME/" /etc/hosts
echo -e "${GREEN}✓ /etc/hosts 已更新。${NC}"
fi
# 5. 授予 sudo 权限
echo "正在授予 sudo 权限..."
sudo usermod -aG sudo "$USERNAME"
echo -e "${GREEN}✓ 已加入 sudo 组。${NC}"
echo "----------------------------------------"
echo -e "${GREEN}完成!用户 '$USERNAME' 已就绪。${NC}"
echo "可以使用 'su - $USERNAME' 进行测试。"
echo "----------------------------------------"

评论
暂无评论