部分Linux操作系统的ECS实例在设置登录名时,支持选择系统用户root或者普通用户ecs-user。本文将介绍两种不同的登录名以及登录名相关操作。

背景信息

如果您使用系统用户root登录Linux操作系统的ECS实例,则可以获取系统最高权限。该方式虽然便于您进行系统运维操作,但如果ECS实例被入侵,则会存在影响严重的数据安全风险。阿里云基于云服务器安全考虑,在部分Linux操作系统默认的系统用户root之外,提供了普通用户ecs-user作为Linux实例的登录名,并推荐您使用ecs-user用户登录实例。
说明 普通用户ecs-user登录ECS实例后,仍然具备系统管理员权限,但与系统用户root不同的是,ecs-user无法进行系统敏感操作。例如:使用systemctl命令重启服务、使用mount命令挂载云盘等。如果您必须进行系统敏感操作,则需要在待执行的命令前加上sudo命令进行提权。

镜像支持说明

支持ecs-user用户的镜像列表

当您选择以下镜像版本创建ECS实例时,支持设置普通用户ecs-user作为登录名。
  • Ubuntu 18.04/20.04/22.04 64位
  • Rocky Linux 8.6/8.7/9.0/9.1 64位
  • OpenSUSE 15.4 64位
  • Fedora 35 64位
  • Debian 10.12/10.13/11.3/11.4/11.5 64位、11.6 64位 UEFI版
  • CentOS 7.9 64位
  • CentOS Stream 8/9 64位
  • Anolis OS 7.9/8.2/8.4/8.6 64位
  • AlmaLinux 8.6/8.7/9.0/9.1 64位
  • Alibaba Cloud Linux 2.1903 LTS 64位
  • Alibaba Cloud Linux 3.2104 LTS 64位、快速启动版、等保2.0三级版、UEFI版、ARM版等保2.0三级版、ARM版
对于其他还不支持选择普通用户ecs-user作为登录名的操作系统,您可以创建ECS实例后,在实例内手动添加普通用户用于登录ECS实例。以下列出了在实例内添加普通用户的相关操作指引供您参考,您也可以根据自身运维习惯自行创建普通用户用于登录ECS实例。
  • 创建普通用户的命令为useradd [username],其中[username]为变量,需要设置为您自定义的用户名称。
  • 修改普通用户密码的命令为passwd [username],其中[username]为变量,需要设置为您自定义的用户名称。
  • 如果您需要对创建的普通用户进行权限控制,可以通过/etc/sudoers文件或者/etc/sudoers.d/目录进行权限修改。

查询镜像是否支持ecs-user用户

您可以通过DescribeImages接口查询,返回值中LoginAsNonRootSupported的值为true,则表示该镜像支持ecs-user用户,否则不支持。

设置ECS实例登录名

如果您选择普通用户ecs-user作为ECS实例的登录名,则需要注意:
  • 使用SSH/TTY远程登录ECS实例时,必须使用ecs-user登录名进行登录,root登录名不再提供登录实例的能力。
  • 使用ecs-user登录名登录实例后,如果需要系统敏感操作,相关命令前需要添加sudo提权。
  • 通过ECS控制台离线重置ECS实例密码时,只能重置ecs-user登录名的密码,无法重置其他用户名的密码。
说明 基于以上注意事项,您在选择ecs-user作为ECS实例登录名之前,请务必确认清楚您业务相关的系统、应用不依赖root用户。
当您新建ECS实例、更换操作系统或者重新初始化系统盘时,均可以设置普通用户ecs-user作为登录名。相关操作说明如下表:
设置用户名的方式操作说明
创建实例创建ECS实例的具体操作,请参见使用向导创建实例。各项配置请您结合实际需求进行设置,其中您需要注意:
  1. 基础配置页面的镜像区域,选择支持设置普通用户ecs-user的镜像版本。
  2. 系统配置(选填)页面的登录凭证区域,结合实际需求选择登录凭证,并选择ecs-user登录名。
更换操作系统更换操作系统的具体操作,请参见更换操作系统(系统盘)。其中您需要注意:
  1. 镜像区域,选择支持设置普通用户ecs-user的镜像版本。
  2. 安全设置区域,结合实际需求选择登录凭证,并选择ecs-user登录名。
重新初始化系统盘重新初始化系统盘的具体操作,请参见重新初始化系统盘。其中您需要注意:
  1. 安全设置:结合实际需求自行设置密码或密钥。
  2. 用户名:选择ecs-user登录名。

您为ECS实例设置ecs-user登录名后,在远程连接ECS实例时,需要指定ecs-user用户名并输入您设置的登录密码。关于远程连接ECS实例的相关操作说明,请参见 连接方式概述

例如:当您通过ECS控制台使用Workbench远程登录ECS实例时,用户名需要设置为ecs-user。workbench

修改ECS实例的登录名

ECS实例不支持通过控制台或OpenAPI的方式修改实例的登录名。如果您在使用ecs-user用户作为ECS实例的登录名后,又需要将登录名更换为root用户进行登录,则需要登录ECS实例内部进行登录名的修改。具体操作说明如下:

  1. 远程登录待修改登录名的ECS实例。
    远程登录实例的具体操作,请参见 连接方式概述
    重要 使用ecs-user用户作为ECS实例登录名后,您不能直接使用root用户登录实例,而需要使用ecs-user登录名以及对应的密码登录实例。
  2. 修改实例的登录名,并设置密码或密钥对。
    根据不同的登录方式,修改实例登录名的方式也不同。具体说明如下:
    • root用户使用密码登录ECS实例
      1. 运行以下命令,为root用户设置密码。
        sudo passwd root
        运行命令后,您需要根据命令行的回显信息,设置root用户的密码。
      2. 运行以下命令,打开/etc/ssh/sshd_config文件。
        vi /etc/ssh/sshd_config
      3. /etc/ssh/sshd_config文件中找到以PasswordAuthentication开头的配置行,将该行内容修改为PasswordAuthentication yes
        文件内容修改后如下图所示:root密码登录
        说明 如果PasswordAuthentication的配置默认为yes,则您无需再修改文件内容。
      4. 修改完成后,按Esc键退出编辑模式,然后输入:wq并按Enter键,保存退出文件。
      5. 运行以下命令,重启SSH服务,使配置生效。
        sudo systemctl restart sshd
        后续您可以使用root用户与密码信息,通过SSH/TTY方式远程登录ECS实例。
    • root用户使用密钥对登录ECS实例

      将密钥对的公钥配置信息保存到/root/.ssh/authorized_keys配置文件中,即可使用root用户与密钥对信息,通过SSH/TTY方式远程登录ECS实例。

重置ECS实例的登录密码

通过ECS控制台离线重置ECS实例的登录密码时,您只能重置ECS实例当前默认设置的登录名对应的密码。例如,您的Linux实例登录名为ecs-user,则您只能重置ecs-user的用户密码。关于重置实例密码的具体操作,请参见重置实例登录密码

如果您的ECS实例默认使用ecs-user用户登录实例,但已在操作系统中修改为root用户使用密码登录ECS实例。后续当您需要修改root用户的密码时,可以通过以下任一方式修改:
  • 如果您的ECS实例支持在线修改密码,可以在线修改root用户的密码。更多信息,请参见在线重置实例密码原理说明
  • 在操作系统内部,使用sudo passwd [username]命令修改用户密码。其中[username]为变量,例如您需要修改root用户的密码,则需要运行sudo passwd root命令。