设置新用户
本页展示了如何创建非特权用户账户。即那些用于日常工作,包括桌面使用和远程登录的账户,以及如何在需要时授予此类账户管理员访问权限。
概述
创建用户账户为用户提供了他们自己的 $HOME 目录,并允许您(root 用户)限制这些用户账户对操作系统配置文件的访问权限。
使用它们可以提高安全性,因为它们限制了可能的操作,从而限制了可能的损害(即使是意外错误造成的)。
创建新用户
root
账户应仅用于需要提升访问权限的本地管理目的。可以通过两种方式创建常规或非特权用户账户
setup-user
setup-user 脚本允许快速简单地设置用户账户。要使用上述脚本创建常规用户账户
# setup-user
将提示用户选择选项。此脚本在后端使用 adduser。
adduser
# adduser [-g "<Full Name>"] <username>
默认情况下,adduser
将会
- 提示您为新用户设置密码
- 在 /home/<username> 中创建 home 目录
- 将 shell 设置为
root
账户使用的 shell(默认为 ash) - 从 1000 开始分配用户 ID 和组 ID
- 将 GECOS(全名)字段设置为 “Linux User,,,”
-g "<Full Name>"
上述命令设置 GECOS 字段。这对于指定非常有用。设置此字符串 - 至少等于用户名 - 使用户可区分,例如,当他们在显示管理器的登录屏幕上列出时。用法(来自 “man busybox”)
adduser [OPTIONS] USER [GROUP] Create new user, or add USER to GROUP -h --home DIR Home directory -g --gecos GECOS GECOS field -s --shell SHELL Login shell named SHELL by example /bin/bash -G --ingroup GRP Group (by name) -S --system Create a system user -D --disabled-password Don't assign a password, so cannot login -H --no-create-home Don't create home directory -u --uid UID User id -k SKEL Skeleton directory (/etc/skel)
新用户列在最后一行
/etc/passwd 的内容
现在您应该能够发出 exit
命令并登录到新创建的账户。
用户组管理
要查看您属于哪个或哪些组,请使用以下命令
$ groups
要将您的用户添加到组(例如 seat),您可以使用以下命令
# adduser '<username>' seat
上述命令是 adduser 的变体。
要将您的用户添加到组,您也可以使用以下命令
用法(来自 “man busybox”)
addgroup [-g GID] [-S] [USER] GROUP Create a group or add a user to a group -g --gid GID Group id -S --system Create a system group
管理员用户
如果确实必须允许用户访问 root 账户,则必须将 <username> 添加到 wheel 组。另请确保 doas 可用。
wheel 组
setup-user 脚本允许快速简单地设置管理员用户账户。要使用上述脚本创建新用户作为管理员用户,请使用
# setup-user -a <username>
上述命令将创建一个管理员用户,方法是将用户添加到 wheel 组并安装 doas
,如果尚未安装。
要将现有用户添加为管理员用户
# adduser <username> wheel
在使用 adduser
将用户添加到 wheel 组后,如果尚未完成,请记住安装和配置 doas。
doas
doas 命令提供了一种以另一个用户身份执行命令的方法。它的目标是成为 sudo 的简化和轻量级替代品。如前所述,setup-user 脚本会自动安装 doas 软件包。
# apk add doas
您将希望允许 wheel 组的成员使用 doas
获得 root 权限。为此,您的 doas
配置文件应如下所示
/etc/doas.d/doas.conf 的内容
sudo
doas
Sudo (su “do”) 允许系统管理员委派权限,以授予某些用户(或用户组)以 root 用户或其他用户身份运行某些(或所有)命令的能力,同时提供命令及其参数的审计跟踪。
sudo
软件包是使用类似 BSD 的 doas
的替代方案,但软件包要大得多。
它可以如下使用:添加自定义用户配置文件,以避免以后在软件包升级期间手动更改配置文件。
# apk add sudo # NEWUSER='yourUserName' # adduser -g "${NEWUSER}" $NEWUSER # echo "$NEWUSER ALL=(ALL) ALL" > /etc/sudoers.d/$NEWUSER && chmod 0440 /etc/sudoers.d/$NEWUSER
保护 root 账户
建议不要以 root 身份运行完整的应用程序(如编辑器)来修改管理文件。
这些工具允许使用文件的临时副本启动编辑器,用户修改并保存后,临时副本将覆盖原始文件。例如,doasedit /etc/apk/lbu.conf
- 许多桌面环境和文件浏览器支持在其地址栏中使用
admin:///
,以通过本地 gvfs-admin 挂载访问文件。
一旦 doas 或 sudo 配置正确并经过全面测试,就可以通过锁定 root 账户来禁用它。

要锁定 root 账户,您需要登录到您的 root 账户,然后使用 passwd
命令锁定它
# passwd -l root
Home 目录权限
`adduser` 创建具有 `rwxr-sr-x` 权限的 home 目录。这使得系统上的所有其他用户都可以读取该目录。如果您不希望其他用户读取您的 home 目录,则可以更改权限
chmod o-rx <path-to-directory>
如果未设置 --ingroup,(默认)新用户将分配一个新的 GID,该 GID 与 UID 匹配。如果与提供的 UID 对应的 GID 已存在,adduser 将会失败。
这确保了新用户默认拥有一个 “用户私有组”(UPG)作为主组。这些允许系统使用权限 umask (002),这会自动创建新的文件为组可写,但仅限于用户的私有组。在特殊的设置组 ID(协作)目录中,新文件可以自动创建为目录的组可写。
持久 Home 目录
如果使用“无盘”或“数据”磁盘模式安装,则使 /home
目录持久化非常重要
- 要么需要从可写分区挂载
/home
文件系统,要么 - 必须将 /home 目录添加到 lbu 备份中,并在创建用户后提交新的本地备份
# lbu include /home # lbu commit
(不推荐,因为恢复到较旧的 .apkovl 也会恢复 /home 中的文件)。
常用权限组
以下组是系统上某些操作所必需的。组名称取自 https://git.alpinelinux.org/alpine-baselayout/tree/group
adm 用于系统监控任务。disk 原始磁盘访问权限。基本等同于 root 访问权限。lp 此组的成员可以启用和使用打印机。wheel 管理员组,成员可以使用 doas 以 root 身份运行命令(如果在 doas 配置中启用)。floppy 访问软盘驱动器和其他可移动(非光盘)驱动器(如 USB 闪存驱动器)。audio 直接访问声音硬件(声卡或麦克风)。cdrom 用于访问磁盘写入器以及以普通用户身份挂载 DVD、BR 或 CD-ROM 光盘。dialout 完全直接访问串行端口。input 访问输入设备。tape 需要为一组用户提供对磁带驱动器的访问权限。video 访问视频捕获设备(如网络摄像头)。netdev 用于以普通用户身份进行网络连接管理。kvm 需要使用虚拟机的 KVM 加速。games 访问某些游戏软件。cdrw 需要在磁盘写入设备上写入 RW-DVD、RW-BR 或 RW-CD 光盘。usb 需要访问特殊的 USB 设备,已弃用的组。users 如果您计划为所有用户使用公共文件,则为必需,作为桌面使用是强制性的。
桌面使用
如果使用 setup-desktop 安装桌面环境,则 elogind 会自动启动并运行。如果您手动安装了桌面,并且在使用桌面时遇到困难,或者如果使用 seatd,那么想要图形环境的用户需要添加到 video 和 seat 组。
请参考 #15409 以了解有关 video 组的安全问题。
要将新创建的用户添加到可能在桌面使用中派上用场的组,您可以以 root 身份运行以下命令
# for u in $(ls /home); do for g in disk lp input audio cdrom dialout video netdev games users; do addgroup $u $g; done;done
请注意以上命令中的组,并且仅当您要将系统中的所有用户添加到以上组时才继续操作。