Arch Linux 使用日记(一)

安装完系统后的初次配置与用户设置


安装完系统,接下来是打扮 arch 系统的前期工作。

更新系统

pacman -Syu   # 刷新数据库并更新软件包

命令 pacman :archlinux 的包管理工具,执行软件包相关的命令

命令参数 -Syu

  • -Sy 更新本地软件包数据库(不实际更新软件)作为更新(升级)软件包的依据
  • -Su 升级软件包

配置默认编辑器

简明指南:“然后配置 root 账户的默认编辑器。默认情况下,archlinux 在一些终端编辑场景调用 vi 编辑器,但是我们使用 vim 编辑器。如果不做额外配置且不显式的指定编辑器,在一些终端场景下(如下面的 visudo、git 等)调用编辑器时会出错。”

(其实也可以不配置?作者并没有尝试过,就之后的使用经历来说,一般会使用 vim xxx 这样的命令手动使用 vim 编辑,不知晓这个配置在哪里会起作用)

使用 vim 创建并编辑 ~/.bash_profile 文件:

vim ~/.bash_profile

加入以下内容:

export EDITOR='vim'
export VISUAL='vim'   # DeepSeek 推荐添加

这样就保证了默认编辑器是 vim。

创建普通用户

官网:“新安装的系统只有一个超级用户,即 root。使用 root 进行日常操作是不安全的。应当创建普通用户进行日常操作,仅在管理系统时使用 root。不要在服务器上给 root 开放 SSH 登录权限。”

简明指南:

通过以下命令添加用户,比如新增加的用户叫 myusername:

useradd -m -G wheel -s /bin/bash myusername

📑 命令参数说明:

  • -m 创建用户的同时创建用户家目录
  • -G 选项后指定附加组
  • wheel —— wheel 附加组可 sudo 进行提权
  • -s 选项后指定 shell 程序
  • myusername —— 用户名(请自定义,但不要包含空格和特殊字符)

通过以下命令根据提示设置新用户 myusername 的密码:

passwd myusername

配置 sudo 权限

接下来为 wheel 组的用户提供 sudo 权限。

先前使用 pacstrap 安装基础包时安装了 base-devel,而 sudo 作为 base-devel 的默认依赖项之一已经被安装,所以不必再执行 pacman -S sudo 安装 sudo 包。可以使用 pacman -Q sudo 查看是否已安装 sudo,使用 pacman -Qi sudo 查看 sudo 包的详细信息,在列出的信息里 Required By 这一行会列出哪些包依赖它,Install Reason : Installed as a dependency for another package 这一行证明它是因为其他包的需要而被自动安装的。

检查sudo包

简明指南在“配置 sudo 权限”这一步上说得足够详细:

使用 vim 编辑器通过 visudo 命令编辑 sudoers 文件:

EDITOR=vim visudo   # 这里需要显式地指定编辑器,因为上面的环境变量还未生效

找到如下这样的一行,把前面的注释符号 # 去掉:

#%wheel ALL=(ALL:ALL) ALL

sudo提权

📑 这里稍微解释一下:

  • %wheel —— 用户名或用户组,此处则代表是 wheel 组,% 是用户组的前缀
  • ALL= —— 主机名,此处则代表在所有主机上都生效(如果把同样的 sudoers 文件下发到了多个主机上)
  • (ALL:ALL) —— (任意用户:任意用户组),此处则代表可以成为任意目标用户/用户组
  • 最后的 ALL —— 代表可以执行任意命令

几个更详细的例子:

在 mailadmin 组里的用户可以作为 root 用户,在 snow 和 rain 这两台主机执行一些邮件服务器控制命令(命令之间用 , 分隔):

%mailadmin  snow,rain=(root)  /usr/sbin/postfix, /usr/sbin/postsuper, /usr/bin/doveadm

用户 whoami 可以在所有主机上以 root 用户不输入密码执行 rndc reload 这条命令(正常来说 sudo 都是要求输入调用方的密码的):

whoami  ALL=(root)  NOPASSWD: /usr/sbin/rndc reload

当在 users 组里的用户以 sudo passwd 或者 sudo passwd root 方式运行命令的时候,可以直接把 root 用户的密码改掉,这真是太危险了!必须要把这两条命令禁止掉,但我们又希望用户可以通过 sudo passwd 修改其它用户的密码。那么我们可以在命令前面加上 ! 来表示不可执行的命令:

%users  ALL=(root)  !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

总结一下,语法如下:

用户名/%用户组名 主机名=(目标用户名) 命令1, 命令2, !命令3

保存并退出 vim 编辑器。

验证并创建快照

到这里保存了 arch 系统的第一个快照。

先执行 reboot 重启系统,然后用普通用户登录,尝试使用 sudo 命令,例如 sudo ls / 列出根目录的所有文件和文件夹(不会很多)(查看根目录命令本身不需要 sudo 权限,在这里使用 sudo 主要是为了确认 sudo 可以正常使用)。

第一次使用 sudo 会遇到如下图所示的提示信息,然后要求输入用户密码以执行 sudo 命令。

sudo提示

确认无误后即可为当前系统创建一个备份。

使用 poweroff 关闭 arch 系统,在 VirtualBox 里为当前系统创建一个备份:点击虚拟机信息上方的“备份”进入备份界面,右键“当前系统”点击“生成”以生成一个备份,为备份取个清晰的名字,比如“after-sudo”,在详细信息栏做好记录,比如“第一次备份,已完成安装 arch 系统,创建一个普通用户,设置 sudo 权限”。